From 434f9c0df3b1cea62a71b08d9f2970b360968c3e Mon Sep 17 00:00:00 2001 From: Theodor Chikin Date: Thu, 18 Sep 2025 19:11:13 +0300 Subject: [PATCH] init. Not working due to the malunction of PySimpleGUI lib --- PySimpleGUI/CONTRIBUTING.md | 7 + PySimpleGUI/LICENSE.txt | 591 + PySimpleGUI/PySimpleGUI.py | 26484 ++++++++++++++++ PySimpleGUI/README.md | 102 + PySimpleGUI/__init__.py | 3 + PySimpleGUI/__main__.py | 4 + .../__pycache__/PySimpleGUI.cpython-310.pyc | Bin 0 -> 1881991 bytes .../__pycache__/PySimpleGUI.cpython-312.pyc | Bin 0 -> 2255664 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 250 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 260 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 266 bytes __pycache__/device_conversion.cpython-310.pyc | Bin 0 -> 2516 bytes _device_main.py | 469 + device_commands.py | 346 + device_conversion.py | 68 + device_interaction.py | 110 + gui.py | 201 + 17 files changed, 28385 insertions(+) create mode 100644 PySimpleGUI/CONTRIBUTING.md create mode 100644 PySimpleGUI/LICENSE.txt create mode 100644 PySimpleGUI/PySimpleGUI.py create mode 100644 PySimpleGUI/README.md create mode 100644 PySimpleGUI/__init__.py create mode 100644 PySimpleGUI/__main__.py create mode 100644 PySimpleGUI/__pycache__/PySimpleGUI.cpython-310.pyc create mode 100644 PySimpleGUI/__pycache__/PySimpleGUI.cpython-312.pyc create mode 100644 PySimpleGUI/__pycache__/__init__.cpython-310.pyc create mode 100644 PySimpleGUI/__pycache__/__init__.cpython-312.pyc create mode 100644 PySimpleGUI/__pycache__/__main__.cpython-310.pyc create mode 100644 __pycache__/device_conversion.cpython-310.pyc create mode 100644 _device_main.py create mode 100644 device_commands.py create mode 100644 device_conversion.py create mode 100644 device_interaction.py create mode 100644 gui.py diff --git a/PySimpleGUI/CONTRIBUTING.md b/PySimpleGUI/CONTRIBUTING.md new file mode 100644 index 0000000..581fe61 --- /dev/null +++ b/PySimpleGUI/CONTRIBUTING.md @@ -0,0 +1,7 @@ +## Contributing to PySimpleGUI + +We are happy to receive issues describing bug reports and feature requests! If your bug report relates to a security vulnerability, please do not file a public issue, and please instead reach out to us at issues@PySimpleGUI.com. + +We do not accept (and do not wish to receive) contributions of user-created or third-party code, including patches, pull requests, or code snippets incorporated into submitted issues. Please do not send us any such code! Bug reports and feature requests should not include any source code. + +If you nonetheless submit any user-created or third-party code to us, (1) you assign to us all rights and title in or relating to the code; and (2) to the extent any such assignment is not fully effective, you hereby grant to us a royalty-free, perpetual, irrevocable, worldwide, unlimited, sublicensable, transferrable license under all intellectual property rights embodied therein or relating thereto, to exploit the code in any manner we choose, including to incorporate the code into PySimpleGUI and to redistribute it under any terms at our discretion. diff --git a/PySimpleGUI/LICENSE.txt b/PySimpleGUI/LICENSE.txt new file mode 100644 index 0000000..6a6cce6 --- /dev/null +++ b/PySimpleGUI/LICENSE.txt @@ -0,0 +1,591 @@ +PySimpleGUI License Agreement + +Version 1.1, Last updated: March 26, 2024 + +This PySimpleGUI License Agreement (the "Agreement") governs the use, +reproduction, distribution, modification and all other exploitation of +PySimpleGUI. The Agreement is made by and between PySimpleSoft, Inc. +("Licensor") and the person or legal entity using PySimpleGUI hereunder +("Licensee" and, together with Licensor, the "Parties"). + +If you are using PySimpleGUI on behalf of a legal entity such as an employer, +then "Licensee" means that legal entity, and you represent and warrant that you +have the authority and capacity to enter into this Agreement on behalf of +Licensee. + +"PySimpleGUI" consists of the following materials: +* the PySimpleGUI software library, version 5.0 or later (the "Library"); +* the PySimpleGUI Library documentation (the "Documentation"); +* sample programs demonstrating use of the Library (the "Demo Programs"); and +* utility programs relating to PySimpleGUI (the "Utilities"). + +PySimpleGUI may require you to obtain and use third-party software which is +distributed under separate license terms. Any such software is not considered +"PySimpleGUI" hereunder and is subject solely to such separate license terms. + +PySimpleGUI is made available to Licensee pursuant to this Agreement for the +purpose of (1) pursuant to Section 1.2, enabling Authorized Developers to use +the Library in connection with developing Licensee Applications, and to use the +Documentation, the Demo Programs and the Utilities in connection therewith; and +(2) pursuant to Section 1.3, enabling End Users of the Licensee Applications to +execute the Library as a dependency of the Licensee Applications; each as +defined and more fully set forth herein and subject to the limitations set +forth herein. + +Licensor agrees to license PySimpleGUI to Licensee only in accordance with the +terms of this Agreement. By using PySimpleGUI, Licensee agrees to be bound by +the terms of this Agreement. If you do not agree to the terms of this +Agreement, you may not copy, use, distribute, modify or otherwise attempt to +exploit PySimpleGUI. + +Licensee acknowledges that Licensor may from time to time update or modify this +Agreement, by publishing a new version of this Agreement on Licensor's website. +Licensee may continue to use the version of PySimpleGUI that it previously +obtained under the prior version of this Agreement, but any version of +PySimpleGUI received or used thereafter shall be subject to the updated version +of this Agreement. + +Accordingly, in consideration of the mutual covenants set forth herein, the +receipt and sufficiency of which is hereby acknowledged, the Parties agree as +follows. + +1. Authorized Developers; License Grants; Limitations. + +1.1. Definitions. As used herein: + +* "Authorized Developer" means any individual person who has registered on + Licensor's site at https://PySimpleGUI.com (the "Site") to develop one or + more of Licensee's own applications which make use of the Library as a + dependency in accordance with Section 1.5 (collectively, "Licensee + Applications") and is either (1) a Hobbyist Developer; or (2) a Commercial + Developer who has purchased an active PySimpleGUI paid license hereunder + which is fully paid up pursuant to Section 3. + +* "Hobbyist Developer" means any individual who uses PySimpleGUI for + development purposes solely for either or both of the following: (1) personal + (e.g., not on behalf of an employer or other third party), Non-Commercial + purposes; or (2) Non-Commercial educational or learning purposes (1 and 2 + together, the "Permitted No-cost Purposes"). + +* "Commercial Developer" means any individual who uses PySimpleGUI for + development purposes who is not a Hobbyist Developer. + +As used in this Section 1, "Non-Commercial" means use which is both (1) not on +behalf or for the benefit of any company or other organization; and (2) not +involving the receipt of any commercial advantage or monetary compensation. If +you have questions about whether your contemplated use is "Non-Commercial," +please contact us at license@pysimplegui.com. + +For the avoidance of doubt: + +* Only Authorized Developers (e.g., Hobbyist Developers and Commercial + Developers who satisfy the requirements for Authorized Developers) may use + PySimpleGUI for development purposes. + +* A Hobbyist Developer may not use PySimpleGUI for any development purpose + other than the Permitted No-cost Purposes. + +* Only Commercial Developers may use PySimpleGUI to develop Licensee + Applications for any commercial purpose; for the benefit of, on behalf of or + on computer hardware belonging to an employing company or other organization; + or for commercial educational purposes, such as the development of a paid + training course. + +If you have questions about whether your contemplated Licensee Application +would be a Permitted No-cost Purpose subject to a Hobbyist Developer license, +please contact us at license@pysimplegui.com. + +1.2. Development License Grants. Subject to the terms and conditions of this +Agreement: + +1.2.1. Library. Licensor grants Licensee a limited, personal, revocable, +non-exclusive, non-sublicensable, non-transferable license during the Term (1) +for its Authorized Developers to internally install, use, reproduce and modify +the Library to develop Licensee Applications; and (2) to redistribute the +Library to recipients of its Licensee Applications ("End Users"); provided, +that such redistribution may not include publishing the source code of the +Library (in modified or unmodified form) in a publicly accessible website or +repository or in other publicly accessible form. + +1.2.2. Documentation. Licensor grants Licensee a limited, personal, revocable, +non-exclusive, non-sublicensable, non-transferable license during the Term for +its Authorized Developers to internally access, use, and reproduce a reasonable +number of copies of the Documentation for the sole purpose of facilitating the +use of the Library by Licensee Applications in accordance with this Agreement. +For the avoidance of doubt, Licensee may not modify or redistribute the +Documentation. + +1.2.3. Demo Programs. Licensor grants Licensee a limited, personal, revocable, +non-exclusive, non-sublicensable, non-transferable license during the Term to +install, use, execute, reproduce and modify the Demo Programs, and to +incorporate modified portions of the Demo Programs into the Licensee +Applications; provided, that (1) the Demo Programs may not be used for any +purposes other than in connection with the use of the Library; and (2) the Demo +Programs may not be (individually or as a whole) redistributed in unmodified +form or as a program with substantially similar functionality to the Demo +Programs. + +1.2.4. Utilities. Licensor grants Licensee a limited, personal, revocable, +non-exclusive, non-sublicensable, non-transferable license during the Term to +install, use, execute, reproduce and modify the Utilities, but not to +distribute or publish the Utilities or any modified version. + +1.2.5. Developer Key Required. The licenses granted in this Section 1.2 may +only be exercised by Authorized Developers. For Hobbyist Developers, these +licenses may only be exercised within the period of time during which each such +Hobbyist Developer has a then-active Developer Key pursuant to Section 3. +Licensor may in its discretion permit recipients of PySimpleGUI to make limited +use of it for a limited trial period without a Developer Key. + +1.2.6. Limitations for Hobbyist Developers. For Hobbyist Developers, the +licenses granted in this Section 1.2 may only be exercised for the Permitted +No-cost Purposes. + +1.2.7. Limitations on Modification of the Library. Licensee's right to modify +the Library pursuant to this Section 1.2 is further limited as follows: (a) +Licensee may not modify or extend the Library or take any other action which +has the effect of enabling bypass of the Library's protection mechanisms +requiring the use of valid Developer Keys or Distribution Keys. (b) Licensee +explicitly acknowledges and agrees that Licensor's digital signature of the +Library is only applicable to the unmodified Library as made available by +Licensor, and that any modifications to the Library will result in Licensor's +digital signature no longer applying to the modified version. + +1.2.8. Limitations on Distribution of the Library. Licensee's right to +distribute the Library (in modified or unmodified form) pursuant to this +Section 1.2 is subject to Licensee (a) including the applicable proprietary +notices set forth in Section 2.2; and (b) including the PySimpleGUI Flow-Down +License Terms set forth in Exhibit A in the license terms that Licensee uses to +distribute the Licensee Application. + +1.2.9. Distribution Keys. Commercial Developers may obtain from Licensor a +PySimpleGUI distribution key ("Distribution Key") through the Authorized +Developer's Site account and utilizing the Distribution Key through the +protection mechanism made available in the Library to permit distribution to +End Users. The Commercial Developer may use its Distribution Key to enable End +Users to install and execute the Licensee Applications, including the Library +incorporated therein, without requiring each recipient to obtain a Developer +Key or be limited to a trial period as described in Section 1.2.5. Licensee +shall be responsible for all activities occurring under Distribution Keys +obtained by its Authorized Developers and for the compliance with this +Agreement of all Licensee Applications using such Distribution Keys. + +1.3. Run-time End User License Grant. Subject to the terms and conditions of +this Agreement, Licensor grants Licensee a limited, personal, revocable, +non-exclusive, non-sublicensable, non-transferable license during the Term to +install and execute the Library solely for it and its employee End Users to +internally use the corresponding Licensee Applications with which the Library +is distributed. For the avoidance of doubt, the license set forth in this +Section 1.3 does not permit modification, external redistribution, integration +of the Library with other software, or any other use of the Library (for +development purposes or otherwise) except solely as distributed with the +unmodified Licensee Applications; any such activities are permitted only by +Authorized Developers and only to the extent permitted by Section 1.2. If the +Licensee Application does not include a valid Distribution Key from a +Commercial Developer, then the period of use of the Library within the Licensee +Application will be limited to a trial period for any End User who does not +register as an Authorized Developer hereunder. + +1.4. License Restrictions. The licenses granted to Licensee hereunder are +expressly made subject to the following limitations: except as expressly +permitted herein, Licensee may not (and shall not permit any third party to): +(a) copy all or any portion of PySimpleGUI; (b) modify or translate +PySimpleGUI; (c) reverse engineer, decompile or disassemble the Software, in +whole or in part, except solely to the extent permitted under applicable law; +(d) create derivative works based on PySimpleGUI; (e) publicly display or +publish PySimpleGUI; (f) rent, lease, sublicense, sell, distribute, assign, +transfer, or otherwise permit access to PySimpleGUI to any third party; (g) +bypass or work around any requirements for license keys, limitations on access, +or obfuscation or security mechanisms incorporated into PySimpleGUI; (h) use +PySimpleGUI for illegal or otherwise harmful purposes, including without +limitation harassment, defamation, creation or delivery of unsolicited emails +or spam, infringement of third party intellectual property rights or other +third party rights, or distribution of viruses, worms, malware or other harmful +or destructive software; (i) incorporate PySimpleGUI or any portion thereof +into any software that purports to subject it to open source software or +similar license terms, including any prior version of PySimpleGUI (modified or +unmodified) which was previously distributed under such licenses; or (j) +exercise any other right to PySimpleGUI not expressly granted in this +Agreement. + +1.5. Licensee Application Prohibitions. Notwithstanding anything else in +this Agreement, Licensee shall ensure that Licensee Applications (a) do not +have the purpose, intent or functionality of enabling End Users to make further +use of PySimpleGUI for their own development purposes or to carry out any +activities otherwise restricted or prohibited hereunder; (b) do not have a +substantially similar purpose to PySimpleGUI; (c) do not enable End Users to +interact, integrate or otherwise develop user interfaces via direct or indirect +access to PySimpleGUI's functionality; and (d) are not intended or designed for +use in high-risk use cases that could reasonably result in death, severe bodily +injury, or other physical property or environmental damage. + +1.6. No Use with Earlier Versions of PySimpleGUI. For the avoidance of +doubt, no portions of PySimpleGUI distributed under this Agreement may be used +in connection with, or in any way incorporated with or into, any versions of +the PySimpleGUI library prior to version 5.0 that have been distributed under +the GNU Lesser General Public License. + +1.7. Additional Grant to Python Software Foundation. With regards to +portions of PySimpleGUI that Licensor uploads to PyPI, Python Software +Foundation ("PSF") may copy and redistribute such portions unmodified on PyPI +in the form provided by Licensor, with no further action required by PSF. + +1.8. Prohibition on Training Artificial Intelligence. As used herein, +"Artificial Intelligence" means a system or model that is intended to generate +or identify patterns in code or data, produce insights or correlations, or make +predictions, recommendations, or decisions; in each case, where the system or +model operates using machine learning, neural networks, large language models, +or other approaches designed to approximate cognitive abilities. Licensee shall +not (and shall not directly or indirectly permit or assist anyone else to) use +PySimpleGUI, or any part thereof, to train an Artificial Intelligence that is +offered to third parties on a commercial basis or as part of a larger +commercial offering. The preceding sentence does not prohibit use of +PySimpleGUI in conjunction with an Artificial Intelligence in other ways, such +as developing a front-end user interface. + +2. Intellectual Property Ownership; Notices. + +2.1. Licensor Ownership. PySimpleGUI is not sold to Licensee, and all rights +not expressly granted herein are reserved to Licensor. As between the parties, +Licensor and its licensors own all right, title and interest in and to +PySimpleGUI and any part thereof, including, without limitation, all +copyrights, patents, trademarks, trade secrets or other intellectual property +or proprietary rights. + +2.2. Proprietary Notices. Licensee shall not modify or remove any copyright +or patent notices or other proprietary notices or markings from any portion of +PySimpleGUI (whether modified or unmodified) without Licensor's explicit +written permission. Licensor shall ensure that any Licensee Applications that +use the Library include a notice in the following form within the Licensee +Application as well as any corresponding Licensee documentation or materials: + +For unmodified versions of PySimpleGUI: + + This product includes PySimpleGUI (https://PySimpleGUI.com). PySimpleGUI + is Copyright (c) PySimpleSoft, Inc. and/or its licensors. Use of + PySimpleGUI is subject to the license terms available at + https://PySimpleGUI.com/eula + + PYSIMPLEGUI IS PROVIDED "AS IS," WITHOUT ANY WARRANTIES, WHETHER EXPRESS OR + IMPLIED. PYSIMPLESOFT DISCLAIMS ALL IMPLIED WARRANTIES, INCLUDING WITHOUT + LIMITATION THE IMPLIED WARRANTIES OF NONINFRINGEMENT, TITLE, + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +For modified versions of PySimpleGUI: + + This product includes a modified version of PySimpleGUI + (https://PySimpleGUI.com). PySimpleGUI is Copyright (c) PySimpleSoft, Inc. + and/or its licensors. Use of PySimpleGUI is subject to the license terms + available at https://PySimpleGUI.com/eula + + PYSIMPLEGUI IS PROVIDED "AS IS," WITHOUT ANY WARRANTIES, WHETHER EXPRESS OR + IMPLIED. PYSIMPLESOFT DISCLAIMS ALL IMPLIED WARRANTIES, INCLUDING WITHOUT + LIMITATION THE IMPLIED WARRANTIES OF NONINFRINGEMENT, TITLE, + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +If the Licensee Application or the corresponding Licensee documentation or +materials include Licensee's copyright notices or other third parties' notices, +then Licensee shall include the above notice together with such notices. + +2.3. Licensor Marks. As between the parties hereto, all of Licensor's +trademarks and service marks applicable to Licensor or PySimpleGUI +(collectively, the "Licensor Marks") are the sole property of Licensor and/or +its licensors. Subject to the terms and conditions of this Agreement, Licensor +grants Licensee a limited, personal, revocable, non-exclusive, +non-sublicensable, non-transferable license to use the Licensor Mark +"PySimpleGUI" in connection with Licensee's permitted distribution of the +Library hereunder. The license set forth in this Section 2.3 is explicitly +conditioned on (a) Licensee's agreement not to challenge Licensor's ownership +of the Licensor Marks at any time during the Term or thereafter; (b) Licensee +ensuring that any modified version of the Library is clearly and prominently +noted as such; (c) Licensee complying with all trademark usage guidelines and +requirements that Licensor may publish from time to time; and (d) Licensee +immediately correcting incorrect usage of the Licensor Marks upon request from +Licensor. Licensee shall immediately cease usage of the Licensor Marks upon +written notice thereof from Licensor. All goodwill arising from use of the +Licensor Marks shall inure to the benefit of Licensor. + +3. Developer Keys; Fees and Payments. + +3.1. Developer Keys. In order to develop Licensee Applications pursuant to +Section 1.2 (and subject to any limited trial period usage as may be permitted +by Licensor from time to time), each Authorized Developer shall obtain a +PySimpleGUI developer license key ("Developer Key") by registering on the +Site as set forth therein. Each Developer Key is personal to the specific +Authorized Developer, and Licensee shall not permit Authorized Developers to +disclose, share or reuse Developer Keys. For the avoidance of doubt, any +disclosure, sharing or reuse of a Developer Key by Licensee's Authorized +Developers, whether or not authorized by Licensee, shall be a material breach +permitting termination of this Agreement pursuant to Section 8.3. Developer +Keys are Licensor's Confidential Information pursuant to Section 5. Developer +Keys are limited to a specified time period (which shall be annual from the +start date of the Developer Key, unless otherwise explicitly stated by +Licensor). Upon the expiration of a Developer Key for a Hobbyist Developer, +they may no longer use the Developer Key and must obtain a new Developer Key +from the Site in order to continue using PySimpleGUI for development purposes +pursuant to Section 1.2. Upon the expiration of a Developer Key for a +Commercial Developer, they may continue to use their Developer Key for versions +of PySimpleGUI released during that period, but may not obtain subsequent +updated versions under Section 4.2 unless they purchase a new Developer Key. + +3.2. Fees for Commercial Developer Keys; Taxes. Before obtaining each +Developer Key for a Commercial Developer, Licensee shall pay to Licensor the +corresponding fees as stated on the Site and using the payment mechanism made +available on the Site. All payments shall be made in United States dollars. All +amounts payable by Licensee hereunder are exclusive of taxes and similar +assessments, and Licensee is responsible for all sales, use, and excise taxes, +and any other similar taxes of any kind imposed by any federal, state, or local +governmental or regulatory authority on any amounts payable by Licensee +hereunder, excluding any taxes imposed on Licensor's income. + +3.3. Accuracy of Registration Details. Licensee represents and warrants that +(a) all information provided by it and its Authorized Developers when +registering for Developer Keys shall be truthful, accurate, complete and not +misleading, and (b) it and its Authorized Developers shall not misrepresent +their use of PySimpleGUI as qualifying for a Hobbyist Developer Key if their +use does not satisfy the Permitted No-cost Purposes. + +4. Support and Updates. + +4.1. Support. Licensor has no obligation hereunder to provide support to +Licensee or its Authorized Developers. Authorized Developers may submit +Feedback (as defined in Section 5.4) consisting of issues and bug reports to +the PySimpleGUI software repository as described on the Site or in the +Documentation. Licensor may in its sole discretion address such issues or bug +reports in current or future versions of PySimpleGUI, but has no obligation to +do so. + +4.2. Updates. Licensor has no obligation hereunder to make available updated +versions of PySimpleGUI. In the event that Licensor elects to make available an +updated version of PySimpleGUI, then Authorized Developers with a then-active +Developer Key may download and use the updated version, and the updated version +shall be included in the definition of "PySimpleGUI" thereafter for purposes of +this Agreement. + +5. Confidentiality; Feedback. + +5.1. Confidential Information. Licensee acknowledges that portions of +PySimpleGUI and certain other materials are confidential as provided herein. +"Confidential Information" means any and all information, whether provided in +writing, orally, visually, electronically or by other means, related to +Licensor's or its licensors' services and/or business that, whether it +constitutes a Trade Secret or not, is treated as confidential or secret by +Licensor (that is, it is the subject of efforts by Licensor that are reasonable +under the circumstances to maintain its secrecy), including, but not limited +to, (i) Trade Secrets as defined below; (ii) any and all other information +which is disclosed by Licensor to Licensee orally, electronically, visually, or +in a document or other tangible form which is either identified as or should be +reasonably understood to be confidential and/or proprietary; and, (iii) any +notes, extracts, analysis, or materials prepared by Licensee which are copies +of or derivative works of Licensor's or its licensors' proprietary or +confidential information from which the substance of Confidential Information +can be inferred or otherwise understood. Confidential Information shall not +include information which Licensee can clearly establish by written evidence: +(a) already is lawfully known to or independently developed by Licensee without +access to the Confidential Information or Trade Secrets, (b) is disclosed by +Licensor in non-confidential published materials, (c) is generally known to the +public, or (d) is rightfully obtained from any third party without any +obligation of confidentiality. + +5.2. Trade Secrets. As used herein, "Trade Secrets" means all non-public +information whether tangible or intangible related to Licensor's and its +licensors' services or business that (i) derives economic value, actual or +potential, from not being generally known to or readily ascertainable by other +persons who can obtain economic value from its disclosure or use; and (ii) is +the subject of efforts that are reasonable under the circumstances to maintain +its secrecy, which may include, without limitation, (a) marking any information +reduced to tangible form clearly and conspicuously with a legend identifying +its confidential or trade secret nature; (b) identifying any oral communication +as confidential or secret immediately before, during, or after such oral +communication; or (c) otherwise treating such information as confidential. + +5.3. Licensee Obligations. Licensee agrees not to disclose Confidential +Information or Trade Secrets to any third party and will protect and treat all +Confidential Information and Trade Secrets with the highest degree of care. +Except as otherwise expressly provided in this Agreement, Licensee will not use +or make any copies of Confidential Information or Trade Secrets, in whole or in +part, without the prior written authorization of Licensor. Licensee may +disclose Confidential Information or Trade Secrets if required by statute, +regulation, or order of a court of competent jurisdiction, provided that +Licensee provides Licensor with prior notice, discloses only the minimum +Confidential Information or Trade Secrets required to be disclosed, and +cooperates with Licensor in taking appropriate protective measures. These +obligations shall continue for three (3) years following termination or +expiration of this Agreement with respect to Confidential Information that does +not rise to the level of a Trade Secret and shall continue for Trade Secrets so +long as they remain Trade Secrets. + +5.4. Feedback. As used herein, "Feedback" means any comments, questions, +suggestions, issues, bug reports, or related feedback provided by Licensee to +Licensor relating to PySimpleGUI, including, without limitation, suggesting or +recommending changes to any part of PySimpleGUI, or new features or +functionality relating thereto. All Feedback is, and will be treated as, +non-confidential and non-proprietary, regardless of any markings Licensee may +apply to it. Licensee hereby assigns to Licensor all right, title, and interest +in, and Licensor is free to use without any attribution or compensation to +Licensee, any ideas, know-how, concepts, techniques, or other intellectual +property and proprietary rights contained in the Feedback, whether or not +patentable, for any purpose whatsoever, including but not limited to, +developing, manufacturing, having manufactured, licensing, marketing, and +selling, directly or indirectly, products and services using such Feedback. To +the extent the foregoing assignment of rights, title and interest in and to +Feedback is prohibited by applicable law, Licensee hereby grants Licensor a +non-exclusive, perpetual, irrevocable, royalty-free, fully paid-up, worldwide +license (including the right to sublicense through multiple tiers) to (a) fully +use, practice and exploit those non-assignable rights, title and interest, +including, but not limited to, the right to use, reproduce, adapt, publicly +perform, publicly display, modify, prepare derivative works, publish, transmit +and distribute Feedback, or any portion thereof, in any form, medium or +distribution method now known or hereafter existing, known or developed, for +any purpose, and to develop, manufacture, have manufactured, license, market, +and sell, directly or indirectly, products and services using Feedback; and (b) +authorize any such use by others of Feedback, or any portion thereof, in the +same manner. + +6. NO LICENSOR WARRANTIES; LIABILITY. + +6.1. DISCLAIMER OF WARRANTIES. PYSIMPLEGUI IS PROVIDED TO LICENSEE "AS IS". +LICENSOR DOES NOT MAKE ANY, AND HEREBY SPECIFICALLY DISCLAIMS ANY, +REPRESENTATIONS, ENDORSEMENTS, GUARANTEES, OR WARRANTIES, EXPRESS OR IMPLIED, +RELATED TO PYSIMPLEGUI INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED WARRANTY OF +MERCHANTABILITY, TITLE, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT OF +INTELLECTUAL PROPERTY RIGHTS. Licensee acknowledges that Licensor does not +guarantee compatibility between PySimpleGUI and any future versions thereof, +and that Licensor makes no commitments as to future development, availability, +release or licensing of any current or future versions of PySimpleGUI. Licensee +will have sole responsibility for the adequate protection and backup of +Licensee's software, data and equipment used with PySimpleGUI. The entire risk +as to the quality and performance of PySimpleGUI and any obligation with +respect to service and support is borne by Licensee. Licensee understands that +Software hosted by Licensor for evaluation purposes may not be secure or +stable. Licensee waives any claim against Licensor which may arise as a result +of Licensee's breach of the foregoing. This Agreement does not grant Licensee +any right to any maintenance, services, including without limitation, any +support, enhancement, modification, bug fix or update to the Software, and +Licensor is under no obligation to provide or inform Licensee of any such +maintenance or services. + +6.2. DISCLAIMER OF LIABILITY. LICENSEE EXPLICITLY AGREES THAT, TO THE +MAXIMUM EXTENT PERMITTED BY LAW, LICENSOR SHALL NOT BE LIABLE UNDER ANY LEGAL +THEORY FOR ANY DAMAGES SUFFERED IN CONNECTION WITH THE USE OF THE SOFTWARE, +INCLUDING BUT NOT LIMITED TO ANY LOST PROFITS, LOST SAVINGS OR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, PUNITIVE OR CONSEQUENTIAL DAMAGES, +WHETHER RESULTING FROM IMPAIRED OR LOST DATA, SOFTWARE OR COMPUTER FAILURE, THE +LICENSEE APPLICATIONS, OR ANY OTHER CAUSE, BY LICENSEE OR ANY OTHER THIRD +PARTY, EVEN IF IT HAS BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. +LICENSEE HEREBY EXPRESSLY RELEASES LICENSOR FROM ANY AND ALL LIABILITY OR +RESPONSIBILITY TO ANY DAMAGE CAUSED, DIRECTLY OR INDIRECTLY, TO LICENSEE OR ANY +THIRD PARTY AS A RESULT OF THE USE OF THE SOFTWARE OR THE INSTALLATION THEREOF +INTO LICENSEE'S COMPUTER ENVIRONMENT. IN THE EVENT THAT THE DISCLAIMERS OF +LIABILITY SET FORTH HEREIN ARE HELD TO BE UNENFORCEABLE, THE PARTIES AGREE THAT +UNDER NO CIRCUMSTANCES SHALL LICENSOR'S AGGREGATE LIABILITY HEREUNDER OR IN +CONNECTION WITH THIS AGREEMENT EXCEED THE AMOUNTS PAID BY LICENSEE TO LICENSOR +IN THE 12 MONTHS PRECEDING THE DATE THAT A CLAIM FIRST ACCRUES. LICENSEE SHALL +BRING ANY CLAIM AGAINST LICENSOR WITHIN 12 MONTHS OF THE DATE THAT THE CLAIM +FIRST ACCRUES, AND HEREBY WAIVES ANY CLAIMS THAT IT DOES NOT BRING WITHIN SUCH +TIME PERIOD. + +6.3. Essential Terms. THIS SECTION 6 IS AN ESSENTIAL BASIS OF LICENSOR'S +DECISION TO OFFER PYSIMPLEGUI, AND SHALL APPLY REGARDLESS OF THE LEGAL THEORY +UPON WHICH DAMAGES MAY BE CLAIMED; REGARDLESS OF WHETHER A PARTY KNEW OR SHOULD +HAVE KNOWN OF THE POSSIBILITY OF SUCH DAMAGES; AND REGARDLESS OF WHETHER THE +FOREGOING LIMITATIONS OF LIABILITY CAUSE ANY REMEDY TO FAIL IN ITS ESSENTIAL +PURPOSE. + +7. Indemnification. Licensee agrees to defend, indemnify and hold Licensor +and its directors, officers, employees and representatives harmless for any +claims, expenses, losses, costs, fees (including attorneys' fees) or damages of +any sort resulting from (a) Licensee's breach of this Agreement; (b) Licensee's +use of PySimpleGUI or exercise of the license rights granted hereunder; or (c) +the Licensee Applications, or Licensee's or any third party's use thereof. + +8. Term and Termination. + +8.1. Term. This Agreement shall commence on the date on which Licensee +downloads PySimpleGUI or otherwise obtains a copy of PySimpleGUI, and shall +continue thereafter until terminated as set forth herein. + +8.2. Termination by Licensee. Licensee may terminate this Agreement with +written notice to Licensor, effective upon Licensee destroying all copies of +PySimpleGUI in its possession and refraining from receiving or downloading +further copies. + +8.3. Termination for Licensee's Breach. This limited License will +immediately terminate without notice if Licensee fails to comply with any +obligation of this Agreement. Additionally, if Licensor reasonably suspects +that Licensee has breached the Agreement, then Licensor may deliver written +notice of the suspected breach to Licensee, and the Agreement shall +automatically terminate 10 days following the date of such notice unless +Licensee cures the breach to Licensor's satisfaction within such period. + +8.4. Effect of Termination; Survival. Upon termination of this Agreement for +any reason, the licenses granted to Licensee with respect to PySimpleGUI shall +immediately terminate and Licensee hereby undertakes to: (i) immediately cease +to use, distribute or otherwise exploit any part of PySimpleGUI or any modified +version thereof; and (ii) promptly destroy and delete any copy of PySimpleGUI +installed or copied by Licensee. Sections 2.1, 2.3, 3, 5-7, 8.4, 9 and 10 will +survive termination of this Agreement indefinitely in accordance with their +terms. + +9. Assignment; Governing Law. The License is personal to Licensee and +Licensee agrees not to transfer, sublicense, lease, rent, or assign their +rights under this Agreement, and any such attempt shall be null and void. +Licensor may assign, transfer, or sublicense this Agreement or any rights or +obligations thereunder at any time in its sole discretion. This Agreement shall +be governed by and construed in accordance with the laws of the State of North +Carolina and the United States of America without regard to the conflicts of +laws provisions thereof. The parties expressly exclude the United Nations +Convention on Contracts for the International Sale of Goods from this +Agreement. All actions arising out of or in connection with this Agreement +shall be brought in the state or federal courts residing in Durham, North +Carolina, United States of America, and both parties hereby irrevocably consent +to the exclusive jurisdiction of such courts and waive any objections as to +venue or inconvenience of forum. + +10. Miscellaneous. No changes or modifications to this Agreement by +Licensee or waivers of any provision of this Agreement by Licensor shall be +effective unless evidenced in a writing referencing this Agreement and signed +for and on behalf of Licensor. The failure of Licensor to enforce its rights +under this Agreement at any time for any period shall not be construed as a +waiver of such rights. There are no third party beneficiaries hereunder. This +Agreement constitutes the entire agreement between the parties regarding the +subject matter hereof and supersede all negotiations, conversations, or +discussions between or among the parties relating to the subject matter of this +Agreement. Neither Party relied on any promises or representations, written or +oral, of the other party in forming this Agreement, except for those expressly +contained herein. In the event that any provision of this Agreement shall be +determined to be unenforceable, that provision will be limited or eliminated to +the minimum extent necessary so that this Agreement shall otherwise remain in +full force and effect and enforceable. Licensee may not distribute, download or +otherwise export or re-export PySimpleGUI or any underlying technology except +in full compliance with this Agreement, United States laws and regulations and +any other applicable laws and regulations. Licensee represents and warrants +that it and its Authorized Developers are not located in, under control of, or +a national or resident of any country where exercise of the licenses granted +hereunder would not comply with all such laws or regulations. It is agreed that +because of the proprietary nature of PySimpleGUI, Licensor's remedies at law +for a breach by the Licensee of its obligations under this Agreement may be +inadequate and that Licensor will, in the event of such breach, be entitled to, +in addition to any other remedy available to it, equitable relief, including +injunctive relief, without the posting of any bond and in addition to all other +remedies provided under this Agreement or available at law. + +Exhibit A + +PySimpleGUI Flow-Down License Terms + +This product (the "Product") includes PySimpleGUI (https://PySimpleGUI.com) or +a version of PySimpleGUI modified by the person or legal entity that provided +you with this product ("Provider"). + +PySimpleGUI is Copyright (c) PySimpleSoft, Inc. and/or its licensors. + +Use of PySimpleGUI is subject to the license terms available at +https://PySimpleGUI.com/eula, including all limitations of liability and other +terms set forth therein. By using the Product, you acknowledge and agree that +PySimpleSoft has no obligation or liability to you regarding the operation, +support or maintenance of PySimpleGUI or of the Product. PYSIMPLEGUI IS +PROVIDED "AS IS," WITHOUT ANY WARRANTIES, WHETHER EXPRESS OR IMPLIED. +PYSIMPLESOFT DISCLAIMS ALL IMPLIED WARRANTIES, INCLUDING WITHOUT LIMITATION THE +IMPLIED WARRANTIES OF NONINFRINGEMENT, TITLE, MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE. diff --git a/PySimpleGUI/PySimpleGUI.py b/PySimpleGUI/PySimpleGUI.py new file mode 100644 index 0000000..2bddf81 --- /dev/null +++ b/PySimpleGUI/PySimpleGUI.py @@ -0,0 +1,26484 @@ +#!/usr/bin/python3 + +# ___ ___ ___ ___ ___ ___ ___ +# /\ \ /\__\ /\ \ /\ \ /\__\ /\__\ /\ \ +# /::\ \ ___ /:/ _/_ ___ |::\ \ /::\ \ /:/ _/_ /:/ _/_ \:\ \ ___ +# /:/\:\__\ /| | /:/ /\ \ /\__\ |:|:\ \ /:/\:\__\ /:/ /\__\ /:/ /\ \ \:\ \ /\__\ +# /:/ /:/ / |:| | /:/ /::\ \ /:/__/ __|:|\:\ \ /:/ /:/ / ___ ___ /:/ /:/ _/_ /:/ /::\ \ ___ \:\ \ /:/__/ +# /:/_/:/ / |:| | /:/_/:/\:\__\ /::\ \ /::::|_\:\__\ /:/_/:/ / /\ \ /\__\ /:/_/:/ /\__\ /:/__\/\:\__\ /\ \ \:\__\ /::\ \ +# \:\/:/ / __|:|__| \:\/:/ /:/ / \/\:\ \__ \:\~~\ \/__/ \:\/:/ / \:\ \ /:/ / \:\/:/ /:/ / \:\ \ /:/ / \:\ \ /:/ / \/\:\ \__ +# \::/__/ /::::\ \ \::/ /:/ / ~~\:\/\__\ \:\ \ \::/__/ \:\ /:/ / \::/_/:/ / \:\ /:/ / \:\ /:/ / ~~\:\/\__\ +# \:\ \ ~~~~\:\ \ \/_/:/ / \::/ / \:\ \ \:\ \ \:\/:/ / \:\/:/ / \:\/:/ / \:\/:/ / \::/ / +# \:\__\ \:\__\ /:/ / /:/ / \:\__\ \:\__\ \::/ / \::/ / \::/ / \::/ / /:/ / +# \/__/ \/__/ \/__/ \/__/ \/__/ \/__/ \/__/ \/__/ \/__/ \/__/ \/__/ +# +# +# ___ ___ +# /\__\ ___ /\__\ +# /:/ _/_ ___ /\ \ /:/ _/_ +# /:/ /\__\ /\__\ \:\ \ /:/ /\__\ +# /:/ /:/ / /:/__/ \:\ \ /:/ /:/ _/_ +# /:/_/:/ / /::\ \ ___ \:\__\ /:/_/:/ /\__\ +# \:\/:/ / \/\:\ \__ /\ \ |:| | \:\/:/ /:/ / +# \::/__/ ~~\:\/\__\ \:\ \|:| | \::/_/:/ / +# \:\ \ \::/ / \:\__|:|__| \:\/:/ / +# \:\__\ /:/ / \::::/__/ \::/ / +# \/__/ \/__/ ~~~~ \/__/ +# +# +# Copyright 2023, 2024 PySimpleSoft Inc. + +version = "5.0.7 Released 20-Oct-2024" + +# M"""""""`YM MM""""""""`M M""MMMMM""M MM""""""""`M MM"""""""`MM +# M mmmm. M MM mmmmmmmM M MMMMM M MM mmmmmmmM MM mmmm, M +# M MMMMM M M` MMMM M MMMMP M M` MMMM M' .M +# M MMMMM M MM MMMMMMMM M MMMM' .M MM MMMMMMMM MM MMMb. "M +# M MMMMM M MM MMMMMMMM M MMP' .MM MM MMMMMMMM MM MMMMM M +# M MMMMM M MM .M M .dMMM MM .M MM MMMMM M +# MMMMMMMMMMM MMMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMMM MMMMMMMMMMMM +# +# MM"""""""`YM MMP"""""YMM MP""""""`MM M""""""""M M""""""""M M""MMMMM""MM M""M MP""""""`MM +# MM mmmmm M M' .mmm. `M M mmmmm..M Mmmm mmmM Mmmm mmmM M MMMMM MM M M M mmmmm..M +# M' .M M MMMMM M M. `YM MMMM MMMM MMMM MMMM M `M M M M. `YM +# MM MMMMMMMM M MMMMM M MMMMMMM. M MMMM MMMM MMMM MMMM M MMMMM MM M M MMMMMMM. M +# MM MMMMMMMM M. `MMM' .M M. .MMM' M MMMM MMMM MMMM MMMM M MMMMM MM M M M. .MMM' M +# MM MMMMMMMM MMb dMM Mb. .dM MMMM MMMM MMMM MMMM M MMMMM MM M M Mb. .dM +# MMMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMM MMMMMMMMMM MMMMMMMMMMMM MMMM MMMMMMMMMMM +# +# MM'""""'YMM MMP"""""YMM M""""""'YMM MM""""""""`M MMP"""""YMM M"""""""`YM M""MMMMMMMM M""M M"""""""`YM MM""""""""`M +# M' .mmm. `M M' .mmm. `M M mmmm. `M MM mmmmmmmM M' .mmm. `M M mmmm. M M MMMMMMMM M M M mmmm. M MM mmmmmmmM +# M MMMMMooM M MMMMM M M MMMMM M M` MMMM M MMMMM M M MMMMM M M MMMMMMMM M M M MMMMM M M` MMMM +# M MMMMMMMM M MMMMM M M MMMMM M MM MMMMMMMM M MMMMM M M MMMMM M M MMMMMMMM M M M MMMMM M MM MMMMMMMM +# M. `MMM' .M M. `MMM' .M M MMMM' .M MM MMMMMMMM M. `MMM' .M M MMMMM M M MMMMMMMM M M M MMMMM M MM MMMMMMMM +# MM. .dM MMb dMM M .MM MM .M MMb dMM M MMMMM M M M M M M MMMMM M MM .M +# MMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMM MMMM MMMMMMMMMMM +# +# MM""""""""`M M""MMMM""M MM'""""'YMM M""MMMMMMMM M""MMMMM""M MP""""""`MM M""M M""MMMMM""M MM""""""""`M +# MM mmmmmmmM M `MM' M M' .mmm. `M M MMMMMMMM M MMMMM M M mmmmm..M M M M MMMMM M MM mmmmmmmM +# M` MMMM MM. .MM M MMMMMooM M MMMMMMMM M MMMMM M M. `YM M M M MMMMP M M` MMMM +# MM MMMMMMMM M .mm. M M MMMMMMMM M MMMMMMMM M MMMMM M MMMMMMM. M M M M MMMM' .M MM MMMMMMMM +# MM MMMMMMMM M MMMM M M. `MMM' .M M MMMMMMMM M `MMM' M M. .MMM' M M M M MMP' .MM MM MMMMMMMM +# MM .M M MMMM M MM. .dM M M Mb dM Mb. .dM M M M .dMMM MM .M +# MMMMMMMMMMMM MMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMM MMMM MMMMMMMMMMM MMMMMMMMMMMM +# +# M""""""""M MMP"""""YMM MM"""""""`YM MM"""""""`YM M""M +# Mmmm mmmM M' .mmm. `M MM mmmmm M MM mmmmm M M M +# MMMM MMMM M MMMMM M M' .M dP dP M' .M M M +# MMMM MMMM M MMMMM M MM MMMMMMMM 88 88 MM MMMMMMMM M M +# MMMM MMMM M. `MMM' .M MM MMMMMMMM 88. .88 MM MMMMMMMM M M +# MMMM MMMM MMb dMM MM MMMMMMMM `8888P88 MM MMMMMMMM M M +# MMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMMM .88 MMMMMMMMMMMM MMMM +# d8888P + +""" +Changelog since last major release + +5.0.7 Released 20-Oct-2024 + +""" + + +__version__ = version.split()[0] # For PEP 396 and PEP 345 + +# The shortened version of version +try: + ver = version.split(' ')[0] +except: + ver = '' + + +port = 'PySimpleGUI' + +import os +import sys + + +# all of the tkinter involved imports +import tkinter as tk +from tkinter import filedialog +from tkinter.colorchooser import askcolor +from tkinter import ttk +# import tkinter.scrolledtext as tkst +import tkinter.font +import uuid + +# end of tkinter specific imports +# get the tkinter detailed version +tclversion_detailed = tkinter.Tcl().eval('info patchlevel') +framework_version = tclversion_detailed + +import tempfile + +import marshal, base64, zlib + +import time +import pickle +import calendar +import datetime +import textwrap + +import socket +import hashlib +import inspect +import traceback +import difflib +import copy +import pprint +import platform +import pydoc # for the built-in PSG SDK Help Window + +try: # Because Raspberry Pi is still on 3.4....it's not critical if this module isn't imported on the Pi + from typing import List, Any, Union, Tuple, Dict, SupportsAbs, Optional # because this code has to run on 2.7 can't use real type hints. Must do typing only in comments +except: + print('*** Skipping import of Typing module. "pip3 install typing" to remove this warning ***') +import random +import warnings +from math import floor +from math import fabs +from functools import wraps + +try: # Because Raspberry Pi is still on 3.4.... + # from subprocess import run, PIPE, Popen + import subprocess +except Exception as e: + print('** Import error {} **'.format(e)) + +import threading +import itertools +import json +import configparser +import queue + +try: + import webbrowser + + webbrowser_available = True +except: + webbrowser_available = False +# used for github upgrades +import urllib.request +import urllib.error +import urllib.parse + +# import re +import ctypes + +pil_import_attempted = pil_imported = False + +warnings.simplefilter('always', UserWarning) + +g_time_start = 0 +g_time_end = 0 +g_time_delta = 0 + + +# These timer routines are to help you quickly time portions of code. Place the timer_start call at the point +# you want to start timing and the timer_stop at the end point. The delta between the start and stop calls +# is returned from calling timer_stop + +def timer_start(): + """ + Time your code easily.... starts the timer. + Uses the time.time value, a technique known to not be terribly accurage, but tis' gclose enough for our purposes + """ + global g_time_start + + g_time_start = time.time() + + +def timer_stop(): + """ + Time your code easily.... stop the timer and print the number of MILLISECONDS since the timer start + + :return: delta in MILLISECONDS from timer_start was called + :rtype: int + """ + global g_time_delta, g_time_end + + g_time_end = time.time() + g_time_delta = g_time_end - g_time_start + return int(g_time_delta * 1000) + + +def timer_stop_usec(): + """ + Time your code easily.... stop the timer and print the number of MICROSECONDS since the timer start + + :return: delta in MICROSECONDS from timer_start was called + :rtype: int + """ + global g_time_delta, g_time_end + + g_time_end = time.time() + g_time_delta = g_time_end - g_time_start + return int(g_time_delta * 1000000) + + + +def _timeit(func): + """ + Put @_timeit as a decorator to a function to get the time spent in that function printed out + + :param func: Decorated function + :type func: + :return: Execution time for the decorated function + :rtype: + """ + + @wraps(func) + def wrapper(*args, **kwargs): + start = time.time() + result = func(*args, **kwargs) + end = time.time() + print('{} executed in {:.4f} seconds'.format(func.__name__, end - start)) + return result + + return wrapper + + +_timeit_counter = 0 +MAX_TIMEIT_COUNT = 1000 +_timeit_total = 0 + + +def _timeit_summary(func): + """ + Same as the timeit decorator except that the value is shown as an averave + Put @_timeit_summary as a decorator to a function to get the time spent in that function printed out + + :param func: Decorated function + :type func: + :return: Execution time for the decorated function + :rtype: + """ + + @wraps(func) + def wrapper(*args, **kwargs): + global _timeit_counter, _timeit_total + + start = time.time() + result = func(*args, **kwargs) + end = time.time() + _timeit_counter += 1 + _timeit_total += end - start + if _timeit_counter > MAX_TIMEIT_COUNT: + print('{} executed in {:.4f} seconds'.format(func.__name__, _timeit_total / MAX_TIMEIT_COUNT)) + _timeit_counter = 0 + _timeit_total = 0 + return result + + return wrapper + + +def formatted_datetime_now(): + """ + Returns a string with current date and time formatted YYYY-MM-DD HH:MM:SS for easy logging + + :return: String with date and time formatted YYYY-MM-DD HH:MM:SS + :rtype: (str) + """ + now = datetime.datetime.now() + current_time = now.strftime("%Y-%m-%d %H:%M:%S") + return current_time + + +def running_linux(): + """ + Determines the OS is Linux by using sys.platform + + Returns True if Linux + + :return: True if sys.platform indicates running Linux + :rtype: (bool) + """ + return sys.platform.startswith('linux') + + +def running_mac(): + """ + Determines the OS is Mac by using sys.platform + + Returns True if Mac + + :return: True if sys.platform indicates running Mac + :rtype: (bool) + """ + return sys.platform.startswith('darwin') + + +def running_windows(): + """ + Determines the OS is Windows by using sys.platform + + Returns True if Windows + + :return: True if sys.platform indicates running Windows + :rtype: (bool) + """ + return sys.platform.startswith('win') + + +def running_trinket(): + """ + A special case for Trinket. Checks both the OS and the number of environment variables + Currently, Trinket only has ONE environment variable. This fact is used to figure out if Trinket is being used. + + Returns True if "Trinket" (in theory) + + :return: True if sys.platform indicates Linux and the number of environment variables is 1 + :rtype: (bool) + """ + if sys.platform.startswith('linux') and socket.gethostname().startswith('pygame-'): + return True + return False + + +def running_replit(): + """ + A special case for REPLIT. Checks both the OS and for the existance of the number of environment variable REPL_OWNER + Currently, Trinket only has ONE environment variable. This fact is used to figure out if Trinket is being used. + + Returns True if running on "replit" + + :return: True if sys.platform indicates Linux and setting REPL_OWNER is found in the environment variables + :rtype: (bool) + """ + if 'REPL_OWNER' in os.environ and sys.platform.startswith('linux'): + return True + return False + + +# Handy python statements to increment and decrement with wrapping that I don't want to forget +# count = (count + (MAX - 1)) % MAX # Decrement - roll over to MAX from 0 +# count = (count + 1) % MAX # Increment to MAX then roll over to 0 + +# ----====----====----==== Constants the user CAN safely change ====----====----====----# + +# Base64 encoded GIF file +DEFAULT_BASE64_ICON = b'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' + +DEFAULT_BASE64_ICON_16_BY_16 = b'iVBORw0KGgoAAAANSUhEUgAAABAAAAAOCAYAAAAmL5yKAAACmUlEQVR4nFWQS2icVRiGn++c8/+ZS2ZiJ4guQkGQULFgNS66cFMQ6wVR8EJFXBUKxVWpROOFEgXxAtqFSMGKXQiKurC2CeLKldZLxIobpQkEWy3SmcY680/m/8/5PhfTVvrsn5f3fQXADBHBAGx1x0E8e4icQvvPyOzaKH9j6bEy5fMgs6DH2fT7WNy1iZnIFdlsLuNM+oC6e5K+QstDHJ58fHnh2U+7Mz+4mmto0Tca1wllsUSzeoTed5WY4ViZ87SrT2hnD9ONMOWhn6AVIBZf33l88cOVf298W2TYtKiRdidnsHGEF3bvFwD7fcdepvxRejECl3DyKkmf0sxtd83gsfOfXX/syOle1nrZRoWaOABD3R2O8QlzlKZ4CRh/M/vzWyA/urrz2o0lccujr+z8fFUHqXBOPJoEHwLBbgoACBkOR6UR77bx220XgC38E6ObruXEv5ZfW3nwBmm4hpYpktUCqbpAPvH9OOAKAqhBkA5RE1MTAe2eeuDkix+vV9OHHQNV8R4Rw/snmN91fjzBcS2VJtq5h4vfPrR04L3l3q2HnRt01PD4LFKO9kE8879qyFXZTKkHR7r0ze4Tz7/zRff2N70vOppIZHmBpj2EsBPLfuXQlze7q9Uvk0wgU1nfmPnoq3O3LOQTo06qYiTLhWrzIMY91Jp7CVkTr/uv/QAQAUwZmquJKye10gR4yqGBWyDPttK/WFJv5SD9cQO1iGGAOUzxuW2bOb1u5fQijZZHSIDgw1ZGw5LaZE65eQ6Ro+OAJMqECEiGSCCYpI2ZaV7ffswVvXeptwPihVRBfTJHdZXM3c9L9/5x+QM9oYWuJeFscpzVQVpTcz9hSHzuvqephvM4/ych66LpfYaDu5i/+xcOmfsPXNAyV3hjwl8AAAAASUVORK5CYII=' + +DEFAULT_BASE64_LOADING_GIF = b'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' + +PSG_DEBUGGER_LOGO = b'iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAALiIAAC4iAari3ZIAAA2CSURBVHhe7VtplBXFGe03qBiN+RGJJjEGFGZYXWMETDhhZFEGDaA4KCbnmOTo0UQx7AwgMIDs+4ggGlAjI/BERxY3loggHpGdgRkGJlFQzxFzNCd6NC6hc28tXVXd/XrevBnyI/HC7ar6vuru735V1a9f9xvvG/yfI6XKBuO+QYN/hKIT+H1h8Lz3wG1lC+Z+KJu5obDrtc1QtAVPB98Ha/7y6uaTKBsFDUoARHP/m8BhYEcwfLyvwTQ4Gol4W1iyBIRfhmIa2ANsQpvCR+Cz4EIkYq+wNAA5JwDiL0TxJNhVGJLxMdgPSdgim8mA+GIUPHZTYYiHDz4PjkAijghLDsgpARDfC8VT4HeFITt8DvZBEjbIZjyU+OXgacJQN/4FcqZMRSK+FJZ6oF4JUFN+JDgZtKdltkhMQg7ibewH70AS9shmdsg6ARDPoJaAvxGG3BGbhAaK1/gCHAry+iAMdSGrBED8t1CsBG8UhobDSQLE34KiHGyIeBvLwLuzWRJ5qswIJf45sLHEEzzm8zg2r/AEE/JvWW0UcJauQWJ5nkQkzgAEeAaKNeB1wtD4CGYCgr0B9WfApCt/ffEy2A8zgeeJRcYZMOj+IUwOp9KpEk8EMwFBrkO9P8h13Fi4zvP9ZV1/UZhxoDMmIJVKTc3LyxsIeiTaiWwAGj8Jvo//ip43ABXeqMUiNvLBQ4YPRMHP+RQPkoQkfz33rf9ykAJj4R7b/xIdr9qydcsBZQgQScDQYSPbo3gTBzhbWuLRiMJtiCTMnzebSeiL+mowL0loRp86h/H5O2DqvHXba873COdmZviIUbjopV7ElP5xeIprEnF2MslHZuE/HWX/Tp2veXnFiuWbWzRvcT5sP6UjcxJglf9DMEZVXIBj1Bw7fsyZBc4MGDFy9AQU42XLHFIl04JriPpd5DAj3gE77HprBz+FjoGYjegj/0eh9nd90c44Tw2K9tu2b+OXNIHgIjiqZGwLXOxGmhHhhU8yeiE0Ptufl5dyqPvH+c2xbH/A5uDvt7z26kcIegUTRI1iDoh6PLGx/LK/08fzClD+UkkWCBKAQCj+TB0E6v8Ex4BFYAn4sfaFCZ9ifGLi/GZ/k5RQYu5gXAj4JUcEiI0lFAwLtWn5sGF5vxCsIJbAmLHjebXlg4tz2EYnXih+PuXBiW+wTZSMfoDfz99EYMGVWRzUAto+/MGyCvttJPkIdaxzt299rRl6cupKhM9pbXWhEfgsO1OAzcVvvPmGeD4hZgAyfyV4jjUS22zxxNQpk/ZhxNbQT42kGUUxysdRdkS5O86vmeQjLT+K1PeQhw9EzIInKUDVJbHhf8fm+kBrH1RTqBUpWToBeRfKk+vp2eRT4Q0BfU7ETV/EC/GpQiTtLdgX2z7TJ2vhtu2rk77f1IjJXqjxIfCIzb9KKlIJwIneDgnrOqF08gWih8KE0km8PvRWfkUR5HHsWzh5UmntuPETb4H9Ye2Tfp3U4NgOo8ID+2dov4tgL7ICF6X4p+uKgdAYn6Bj974jValrAMTy85dr4odsK1SCvwV3gi3Ah7BzMHUk/OM4WGHphAdqkSDnKy3sIbiGJL/0+RWTJk7o17lj5z+iMZcWA8oRRQjSED02AaP8TzyxY+cOcZEVM2DC+LFfIQHjQqPQAdwBfgFfLVhk/GbkKb504oPFqJeDp4VHHP0UzWyw/epcqq+m6D+r09WdIMa/1YycITYQ49qkWfniKDIg6sGzyeBjEEEsxYmf1sFYAZ2OesoEyuDkmh8/bkztpMlTi+FfjvZpbh9Jfawwtd+IdvwLJpaOex2BFiLijiJ0R0zWQqP0/PfgXKFkm1vhzZs3ed2691iHoK5AMAUmQHGNCAgch6XwgbEltQ9OmY6R95bDjpHXftNXMrx/nT4+6b3z808+PQsl63wvgJjFfwuqFbETxmcKseUdYN+du3cdZYPgWR1MnTaTn/OrEU9vaZFA8rgVa350yYha9CtGO3iGJ/02XIPrj/dhhCqwHbC2gg+g+Ow/hRhM34zncIpQJzSVheIH7tqzi+8pAkQSQEyfMUskQQYggeAw8l7hqJHDauEPHmAmCa9PUnB8jLZfXLGaXwC9VWAfViRUR7cA7APYRcQuxe/d7YgnYhNAzJg5W82EVG+KR7CFI0cMrZ0xc44S7zsPMKNibbjOcF8tfvWqVQyImz7cxXSzdlDViM/pYjUo3vcG7t63JyKeyJgAYuasuU2xFPDx500bPmxw7azZ85xpT7hinEZMUuL8FO8Vp59+mtGYkVddzR4RA6pWg4j6xMjv2bc3VjyRmAAbc+bOd57bN1w4SznyK8t5WL5DTOGbmnbKQsMR61QjHRV8KX7/voziiawSMG9+WVZrnkjy2z4tvvzPfAXorcL1X4x8DkKtLSArQvzeA8niiTpfby0oW4iPupQQrz+u4shcujZYVD3sA55HUbz8iSdYD13wQmKThSpYPl+K31e5P31p+0vO+ODDE4nvGxITUPbQonp/ztskoraUEP/k0qV0p3E4Z81LWCnIJJSIVpT4AxDfQXx9P++88ypPfHjir8IbAxllDBY+vDhhzROuwfVn8vkVmPoDlj32KBuY9l4f41KlgGxEfaaTqJkmINf8/oOV6Uvataf4jZCHmyj/c/Trc6DqYOwL2dgELFq8JMc1n9mn1/yfHlnMJqa9XPPcJ+gWrQhkOoeoySbE+wMPHDqY7tBWiocwPkgBxFYkobL6UCQJkQQ8suSxK1FsR8DBk58w6pcUtv212PZf8vBCtFLxNzmAqAXNuu0Cas1jhNMd2rSTI5+yb5+D/iIJBw9XOUlwEvDoY0ubINhdqPJAEcCnavGI88PG++4rFpWV8U3tKqx/Oe2Dru4+5hChY6FpLEFNiK+sOpRu36atmvZKvIbYL+j/GU7Q5VDN4d2qbb4NErhI9cU3scusb2WC+gIWtmvW4R96z913fYowpoB9RJJA8Y9liNioOquWjyLstu9/DQrx7Vq3uRz1jWAz5XOIja6fhaK8bX4Bf3Al4CQAwd5ufz0NC3N9UX+Y8PE5wlpclNrh5IN1QKQJqk6hhsqHQog/WF2VblfQ+nLYOK2b0Wf1/zu4Afwbd6FP+D2/NWx8/ygQJGDZ408i1lQX+zu9ESJpxMX7DWViwOfuuvN3OJ+PjZeH0g4wG6FxPiH+0OHqdNv81hh5bwO6qZGHEG58vxxsXlVzuCesreAbFewv+3WXqq0EQMjZYDMtSgrTIxxmdn7wLR4bJ+3Cs7pBgMlCRYmNbZfia6rTbfILLocF4iPT/h8o7q46UvMZz119pOZk9dGa6bBtoh8d2KclfUSQAAhpGhUWCHGY5Nc+Rf5YkrhAnjxroRaxt2kvwKimW7fK55rfAIM77cWxvGoI/kSe1gD+rbofWsHdoT0DPkLAfP4XEaWphWXra9KkCc9mBZe1UEm1D4kNy3tbt8wfjgrE62kfPubJlgUXt+Q7RQe0y66iH989CgQJ+NXtt/FNzF4pJsz6CbcoHq3jhMdMgMLgBh0Vauj6IMyfgVrkao+NrHseX6ZMzb/o4kBbqxYXdYGtmF7Vf7tymQQQCHiNFBOmFKTF2jS+MIVfvNrGCbeIE1tiIhQ+0VeIISN9bFr9NZUBHm8I2jshfCa4Eu1NCKOp8GEqgC8wLsK5EVqxMs33AvzoOlNa5AmSUIefN0EFpWPHtESvKtTlgxSxi9kvqIXshDG5dkKao3Yiwbem9p23gztRZwbcOuCW9zGai+zR1iMcZpb+VmBR9dEjRxHMAiYrjthEbJrYQIxrc30s4n0ZMEuVAk4CCAQ8Hnw3ThSphMX6yBj/nFXp1d9GUCUIar0IMEYQNo0tNA4c/a2qLhD5MkSsfraCr8DWUYu01H0eEUxmVIDFJcOGMuF87MsHrbRHIKz1E5Ut+PujS5GA4J0AEZkBxM039X0Bo7jMvqiFRzhMM+KsS1r+vmD5tNlzeAG6GVxPiUxCmNjIIBofk8PiidgEEBAzCEFXhoUboS61PyFp/cHymfPmiyRA6Hp1qv8GXgdnyKqL2CWgsWbt+nwU/Mx0v2IqiBFLQAY/l8BtQwfdFywHGk8hPgB/gtHXd6UOEhNArF33wjUo+NO54J16jsIDwP8Mjjdw8L1/ONVJ4C1xN4gX30nikHEJaNx4Q9F2rOdemMX80ZSYzmbqm/Vur3njd2n5uRweR2D8SezN4KlYDvxLkuIk8USdCSB6F/XajjXdFUGrj0ctWgtz17ydFNISLoj61yA/GbxTlAT+jVIPHPsl2cyMOpeAjRdfeuV8BM6Hpd2kxUVdUx892Ec8xirqdb3z0qJl8xbqhWyDlwN/CXoTxEeu+HGoVwKIl1/ZyFkzBJyIZIg/SMj2mqDF97q+Z+wbmwYmgT/tKwNLID7j3weEUe8EaGzYuLkAxSLwWmEIIZwULf66nt0TX1flmAQ+5BwE4fy4qxdyTgCxcRP/MCnF9YvbZ+8S2qKTgdNe/Pb31z26X+vchmaCSgLfmw0Qhsw4BPJP5sohPqc/uWlQAjQ2bX6Vx/kZktAPYq9G/VyQqTiCAvf/3lPduxVmPS0JJIFFT/AekMf8AciPNa7tbSBnyVYIT15//ytAQlKkan6DxoHn/QdmVLZzVZokoAAAAABJRU5ErkJggg==' + +UDEMY_ICON = b'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' + +PSG5_LOGO = b'iVBORw0KGgoAAAANSUhEUgAAAFAAAAA0CAMAAAAqqk/TAAAC7lBMVEUAAAD/1i//1i//1i//1i9lTgr/1i//1i//1i//1S4Ag7cAg7cAg7f/1i//1i//1i//1i//zCz/1i//1i//1i//1S//1i//1i//1i8Ag7cAg7f/1i8Ag7f/1i//1i//1i//1jAAg7f/1i//1i8Ag7cAgrb/1i8AfK3/1i//1i8AgrYAg7cAgbUAg7cAg7f/1i//1i//1i/4xCv/1i//1y8Agrb/1i//1i4Ag7cAgrUAg7f/1y8Ag7cAg7f/1i//1i//1i8AgrYAg7f/1i8AgrYAg7cAcZ8Ag7cAg7f/1i//1i8Agrf/1i8Ag7f/1i//1i8Ag7cAgrb/1S7/1i//1i7/1i8Ag7YAg7f/1i//1i//1S7/1i//1i//1i8Ag7f/1jAAg7cAg7f/1i8Ag7f/1i//1i//1i8Ag7b/1i//1i//1i//1i//1i8Ag7cAg7f/1i//1i//1i//1i//1i//1i8Ag7gAg7f/1i//1i8Ag7cAg7cAgrb/1i7/1i8AgrcAg7cAg7f+1TP/1i//1i8Ag7f/1i//1i8Af7EAgbT/1i8Ag7f/1i8AgbUAg7f/1i8Ag7cAg7f/1S7/1i//1i8AgrYAg7cAg7cAgrb/xyMAg7f/1i//1S4Ag7cAg7cAOFEAPFb/1i//0i7/zSz/1i/xvymGaxIAfK3/1i/wvyj/1i8AfbBgSwiQchX/2TD/1i8Aeqz/0S3/zSzitCXxwCkAd6eEnpcAZZAAXob+yywAa5buvSgAbpuXdhb/zSwAfa1klaT4zEv2wygbhrEAdqXsvCiDl4zlxF0AdaTTpyHYqyMAeakAWn8AXYPxwCm8nkQASmqUdRUASmgAOFP/1i8Ag7f/2TD/2C6ysIEAhboAgrVjlKT/2y+VpZAAh7xTkKh4m536zUkkiLJbk6aKoZW9tHvPu2/vyVT/0EJJj6z/1Db/1S02i7CgqouprYfFt3bVvmnZv2fiw1/nxVz1y03/0j0MhrRsl6GCnpm3s33ewWNGK85KAAAA03RSTlMA/bAw/CwUTfYf8Pz6JQb56OFh40rEIg/UCfby5s1QQTjqikguIhwMWUMqFBAF4NCTOyjw69zbvbccFgv49OzArq2GZ1seB+7ZyLaznpuNbWomGQT379bEuZsNCgjWqaZ7dXVnVvjKwKmQcV5TTkNAPS0WEuXKpaKYlZGNe2RWSTc2Myv++9/Pu7KggYBSRtLOrIaEbkY/NCgYeGtkOjIrKezYlyUa2NjSfGIkCO7u5+flyb2inp2OjXFaVlX29PPp6N7Dv7q3s6+Ri29sZV5aRjscDkRWdAAAAn9JREFUeJy11s9LFFEcAPDvgGiksGIIC+EhMSGwNFxs95BeSgj6ReghKaFyoYI6eBAiKCkKpUMXCcKL/0C3/oZund4ERXaMIAi9CB57M7sz8/313r5Z6nva+b7v+8z3zbzZGYD/HqsisxzbqHenmTQmUWYszuJOee6cyWI7S8U4umuvFXOsvUI0vsDcCzpUsan3MY8S4Aofm+ULbouhoBycAmgI8EwoqI02ASaEOODzBr1eekIh/vGBfW2u17cEBvo806E/VQwBcSqy0UNrTupg4Ia+lBxjcZa2eFASbLYSWKSL3g8A76LZ42mmisEjBBTXS4mbaPapNDODwe+lwUl6D2xEUWdwxQ1WMWjOwg2DPfNFB90eVAhodw3xzOfSoPEHwInC+4nBa/nB/XBwBOCxfk+ukrqhQPA40H2dDyw2WWUtCIyYV4AjonY0B6fdIMB6+F9DDi54St5R78BZamOhY4d8vXF86APzFheDPbLi3mTuKM7stEG6j7P4rXjo/uUX7FiRyz44XmleD8A9xvXb2qex+H6Qa9a8Qel9s6VXkh9fKfgwBPwAcIF5CVNv/fzoatENatcPvVwc4KYTvKV69fxgHnsP8mnjTpC/6VLvLV2+e8UqeJR6DYA1dPijPNhPwS3Y4A1LsOYDB/g1jPFjch55NdGgCl70gsOFVzVhoPKpiR/k7H7CSzrLCZ4W+9rGLqqI5NSi62mtww4tynitXgZ8Mgnu+UB0n4b1wWelWsQbadMxyv9ufCL24LJreFmAv0I89HTz8SdC/KRxQ9SDJfcJHzFvAuA2L54CEbykgsYwd72VWkWlb6SWBHvv0cGM29LndhON5+v/DisdfwEX3ZdOlBKHjgAAAABJRU5ErkJggg==' + +BLANK_BASE64 = b'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=' + +DEFAULT_WINDOW_ICON = DEFAULT_BASE64_ICON + +DEFAULT_ELEMENT_SIZE = (45, 1) # In CHARACTERS +DEFAULT_BUTTON_ELEMENT_SIZE = (10, 1) # In CHARACTERS +DEFAULT_MARGINS = (10, 5) # Margins for each LEFT/RIGHT margin is first term +DEFAULT_ELEMENT_PADDING = (5, 3) # Padding between elements (row, col) in pixels +DEFAULT_AUTOSIZE_TEXT = True +DEFAULT_AUTOSIZE_BUTTONS = True +DEFAULT_FONT = ("Helvetica", 10) +DEFAULT_TEXT_JUSTIFICATION = 'left' +DEFAULT_BORDER_WIDTH = 1 +DEFAULT_AUTOCLOSE_TIME = 3 # time in seconds to show an autoclose form +DEFAULT_DEBUG_WINDOW_SIZE = (80, 20) +DEFAULT_WINDOW_LOCATION = (None, None) +MAX_SCROLLED_TEXT_BOX_HEIGHT = 50 +DEFAULT_TOOLTIP_TIME = 400 +DEFAULT_TOOLTIP_OFFSET = (0, -20) +DEFAULT_KEEP_ON_TOP = None +DEFAULT_SCALING = None +DEFAULT_ALPHA_CHANNEL = 1.0 +DEFAULT_HIDE_WINDOW_WHEN_CREATING = True +TOOLTIP_BACKGROUND_COLOR = "#ffffe0" +TOOLTIP_FONT = None +DEFAULT_USE_BUTTON_SHORTCUTS = False +DEFAULT_DICT_TO_STRING_WIDTH = 80 +#################### COLOR STUFF #################### +BLUES = ("#082567", "#0A37A3", "#00345B") +PURPLES = ("#480656", "#4F2398", "#380474") +GREENS = ("#01826B", "#40A860", "#96D2AB", "#00A949", "#003532") +YELLOWS = ("#F3FB62", "#F0F595") +TANS = ("#FFF9D5", "#F4EFCF", "#DDD8BA") +NICE_BUTTON_COLORS = ((GREENS[3], TANS[0]), + ('#000000', '#FFFFFF'), + ('#FFFFFF', '#000000'), + (YELLOWS[0], PURPLES[1]), + (YELLOWS[0], GREENS[3]), + (YELLOWS[0], BLUES[2])) + +COLOR_SYSTEM_DEFAULT = '1234567890' # A Magic Number kind of signal to PySimpleGUI that the color should not be set at all +DEFAULT_BUTTON_COLOR = ('white', BLUES[0]) # Foreground, Background (None, None) == System Default +OFFICIAL_PYSIMPLEGUI_BUTTON_COLOR = ('white', BLUES[0]) + +# The "default PySimpleGUI theme" +OFFICIAL_PYSIMPLEGUI_THEME = CURRENT_LOOK_AND_FEEL = 'Dark Blue 3' + +DEFAULT_ERROR_BUTTON_COLOR = ("#FFFFFF", "#FF0000") +DEFAULT_BACKGROUND_COLOR = None +DEFAULT_ELEMENT_BACKGROUND_COLOR = None +DEFAULT_ELEMENT_TEXT_COLOR = COLOR_SYSTEM_DEFAULT +DEFAULT_TEXT_ELEMENT_BACKGROUND_COLOR = None +DEFAULT_TEXT_COLOR = COLOR_SYSTEM_DEFAULT +DEFAULT_INPUT_ELEMENTS_COLOR = COLOR_SYSTEM_DEFAULT +DEFAULT_INPUT_TEXT_COLOR = COLOR_SYSTEM_DEFAULT +DEFAULT_SCROLLBAR_COLOR = None + + + +# A transparent button is simply one that matches the background +# TRANSPARENT_BUTTON = 'This constant has been depricated. You must set your button background = background it is on for it to be transparent appearing' + + +# -------------------------------------------------------------------------------- +# Progress Bar Relief Choices +RELIEF_RAISED = 'raised' +RELIEF_SUNKEN = 'sunken' +RELIEF_FLAT = 'flat' +RELIEF_RIDGE = 'ridge' +RELIEF_GROOVE = 'groove' +RELIEF_SOLID = 'solid' +RELIEF_LIST = (RELIEF_RAISED, RELIEF_FLAT, RELIEF_SUNKEN, RELIEF_RIDGE, RELIEF_SOLID, RELIEF_GROOVE) + +# These are the spepific themes that tkinter offers +THEME_DEFAULT = 'default' # this is a TTK theme, not a PSG theme!!! +THEME_WINNATIVE = 'winnative' +THEME_CLAM = 'clam' +THEME_ALT = 'alt' +THEME_CLASSIC = 'classic' +THEME_VISTA = 'vista' +THEME_XPNATIVE = 'xpnative' + +# The theme to use by default for all windows +DEFAULT_TTK_THEME = THEME_DEFAULT +ttk_theme_in_use = None + + +USE_TTK_BUTTONS = None + +DEFAULT_PROGRESS_BAR_COLOR = ("#01826B", '#D0D0D0') # a nice green progress bar +DEFAULT_PROGRESS_BAR_COMPUTE = ('#000000', '#000000') # Means that the progress bar colors should be computed from other colors +DEFAULT_PROGRESS_BAR_COLOR_OFFICIAL = ("#01826B", '#D0D0D0') # a nice green progress bar +DEFAULT_PROGRESS_BAR_SIZE = (20, 20) # Size of Progress Bar (characters for length, pixels for width) +DEFAULT_PROGRESS_BAR_BORDER_WIDTH = 1 +DEFAULT_PROGRESS_BAR_RELIEF = RELIEF_GROOVE +# PROGRESS_BAR_STYLES = ('default', 'winnative', 'clam', 'alt', 'classic', 'vista', 'xpnative') +DEFAULT_PROGRESS_BAR_STYLE = DEFAULT_TTK_THEME +DEFAULT_METER_ORIENTATION = 'Horizontal' +DEFAULT_SLIDER_ORIENTATION = 'vertical' +DEFAULT_SLIDER_BORDER_WIDTH = 1 +DEFAULT_SLIDER_RELIEF = tk.FLAT +DEFAULT_FRAME_RELIEF = tk.GROOVE + +DEFAULT_LISTBOX_SELECT_MODE = tk.SINGLE +SELECT_MODE_MULTIPLE = tk.MULTIPLE +LISTBOX_SELECT_MODE_MULTIPLE = 'multiple' +SELECT_MODE_BROWSE = tk.BROWSE +LISTBOX_SELECT_MODE_BROWSE = 'browse' +SELECT_MODE_EXTENDED = tk.EXTENDED +LISTBOX_SELECT_MODE_EXTENDED = 'extended' +SELECT_MODE_SINGLE = tk.SINGLE +LISTBOX_SELECT_MODE_SINGLE = 'single' + +TABLE_SELECT_MODE_NONE = tk.NONE +TABLE_SELECT_MODE_BROWSE = tk.BROWSE +TABLE_SELECT_MODE_EXTENDED = tk.EXTENDED +DEFAULT_TABLE_SELECT_MODE = TABLE_SELECT_MODE_EXTENDED +TABLE_CLICKED_INDICATOR = '+CLICKED+' # Part of the tuple returned as an event when a Table element has click events enabled +TABLE_EDITED_INDICATOR = '+EDITED+' # Part of the tuple returned as an event when a Table element has a cell edited +DEFAULT_MODAL_WINDOWS_ENABLED = True +DEFAULT_MODAL_WINDOWS_FORCED = False + +TAB_LOCATION_TOP = 'top' +TAB_LOCATION_TOP_LEFT = 'topleft' +TAB_LOCATION_TOP_RIGHT = 'topright' +TAB_LOCATION_LEFT = 'left' +TAB_LOCATION_LEFT_TOP = 'lefttop' +TAB_LOCATION_LEFT_BOTTOM = 'leftbottom' +TAB_LOCATION_RIGHT = 'right' +TAB_LOCATION_RIGHT_TOP = 'righttop' +TAB_LOCATION_RIGHT_BOTTOM = 'rightbottom' +TAB_LOCATION_BOTTOM = 'bottom' +TAB_LOCATION_BOTTOM_LEFT = 'bottomleft' +TAB_LOCATION_BOTTOM_RIGHT = 'bottomright' + +TITLE_LOCATION_TOP = tk.N +TITLE_LOCATION_BOTTOM = tk.S +TITLE_LOCATION_LEFT = tk.W +TITLE_LOCATION_RIGHT = tk.E +TITLE_LOCATION_TOP_LEFT = tk.NW +TITLE_LOCATION_TOP_RIGHT = tk.NE +TITLE_LOCATION_BOTTOM_LEFT = tk.SW +TITLE_LOCATION_BOTTOM_RIGHT = tk.SE + +TEXT_LOCATION_TOP = tk.N +TEXT_LOCATION_BOTTOM = tk.S +TEXT_LOCATION_LEFT = tk.W +TEXT_LOCATION_RIGHT = tk.E +TEXT_LOCATION_TOP_LEFT = tk.NW +TEXT_LOCATION_TOP_RIGHT = tk.NE +TEXT_LOCATION_BOTTOM_LEFT = tk.SW +TEXT_LOCATION_BOTTOM_RIGHT = tk.SE +TEXT_LOCATION_CENTER = tk.CENTER + +GRAB_ANYWHERE_IGNORE_THESE_WIDGETS = (ttk.Sizegrip, tk.Scale, ttk.Scrollbar, tk.Scrollbar, tk.Entry, tk.Text, tk.PanedWindow, tk.Listbox, tk.OptionMenu, ttk.Treeview) + +# ----====----====----==== Constants the user should NOT f-with ====----====----====----# +ThisRow = 555666777 # magic number + +# DEFAULT_WINDOW_ICON = '' +MESSAGE_BOX_LINE_WIDTH = 60 + +# "Special" Key Values.. reserved +# Key representing a Read timeout +EVENT_TIMEOUT = TIMEOUT_EVENT = TIMEOUT_KEY = '__TIMEOUT__' +EVENT_TIMER = TIMER_KEY = '__TIMER EVENT__' +WIN_CLOSED = WINDOW_CLOSED = None +WINDOW_CLOSE_ATTEMPTED_EVENT = WIN_X_EVENT = WIN_CLOSE_ATTEMPTED_EVENT = '-WINDOW CLOSE ATTEMPTED-' +WINDOW_CONFIG_EVENT = '__WINDOW CONFIG__' +TITLEBAR_MINIMIZE_KEY = '__TITLEBAR MINIMIZE__' +TITLEBAR_MAXIMIZE_KEY = '__TITLEBAR MAXIMIZE__' +TITLEBAR_CLOSE_KEY = '__TITLEBAR CLOSE__' +TITLEBAR_IMAGE_KEY = '__TITLEBAR IMAGE__' +TITLEBAR_TEXT_KEY = '__TITLEBAR TEXT__' +TITLEBAR_KEY = '__TITLEBAR__' +TITLEBAR_DO_NOT_USE_AN_ICON = '__TITLEBAR_NO_ICON__' + + +# Key indicating should not create any return values for element +WRITE_ONLY_KEY = '__WRITE ONLY__' + +MENU_DISABLED_CHARACTER = '!' +MENU_SHORTCUT_CHARACTER = '&' +MENU_KEY_SEPARATOR = '::' +MENU_SEPARATOR_LINE = '---' +MENU_RIGHT_CLICK_EDITME_EXIT = ['', ['Edit Me', 'Exit']] +MENU_RIGHT_CLICK_EDITME_VER_EXIT = ['', ['Edit Me', 'Version', 'Exit']] +MENU_RIGHT_CLICK_EDITME_VER_EXPLORER_EXIT = ['', ['Edit Me', 'Version', 'Show in Explorer', 'Exit']] +MENU_RIGHT_CLICK_EDITME_VER_LOC_EXIT = ['', ['Edit Me', 'Version', 'File Location', 'Exit']] +MENU_RIGHT_CLICK_EDITME_VER_SETTINGS_EXIT = ['', ['Edit Me', 'Settings', 'Version', 'Exit']] +MENU_RIGHT_CLICK_EXIT = ['', ['Exit']] +MENU_RIGHT_CLICK_DISABLED = ['', []] +_MENU_RIGHT_CLICK_TABGROUP_DEFAULT = ['TABGROUP DEFAULT', []] +ENABLE_TK_WINDOWS = False + +USE_CUSTOM_TITLEBAR = None +CUSTOM_TITLEBAR_BACKGROUND_COLOR = None +CUSTOM_TITLEBAR_TEXT_COLOR = None +CUSTOM_TITLEBAR_ICON = None +CUSTOM_TITLEBAR_FONT = None +TITLEBAR_METADATA_MARKER = 'This window has a titlebar' + +CUSTOM_MENUBAR_METADATA_MARKER = 'This is a custom menubar' + +SUPPRESS_ERROR_POPUPS = False +SUPPRESS_RAISE_KEY_ERRORS = True +SUPPRESS_KEY_GUESSING = False +SUPPRESS_WIDGET_NOT_FINALIZED_WARNINGS = False +ENABLE_TREEVIEW_869_PATCH = True + +# These are now set based on the global settings file +ENABLE_MAC_NOTITLEBAR_PATCH = False +ENABLE_MAC_MODAL_DISABLE_PATCH = False +ENABLE_MAC_DISABLE_GRAB_ANYWHERE_WITH_TITLEBAR = True +ENABLE_MAC_ALPHA_99_PATCH = False + +OLD_TABLE_TREE_SELECTED_ROW_COLORS = ('#FFFFFF', '#4A6984') +ALTERNATE_TABLE_AND_TREE_SELECTED_ROW_COLORS = ('SystemHighlightText', 'SystemHighlight') + +# Some handy unicode symbols +SYMBOL_SQUARE = '█' +SYMBOL_CIRCLE = '⚫' +SYMBOL_CIRCLE_OUTLINE = '◯' +SYMBOL_BULLET = '•' +SYMBOL_UP = '▲' +SYMBOL_RIGHT = '►' +SYMBOL_LEFT = '◄' +SYMBOL_DOWN = '▼' +SYMBOL_X = '❎' +SYMBOL_CHECK = '✅' +SYMBOL_CHECK_SMALL = '✓' +SYMBOL_X_SMALL = '✗' +SYMBOL_BALLOT_X = '☒' +SYMBOL_BALLOT_CHECK = '☑' +SYMBOL_LEFT_DOUBLE = '«' +SYMBOL_RIGHT_DOUBLE = '»' +SYMBOL_LEFT_ARROWHEAD = '⮜' +SYMBOL_RIGHT_ARROWHEAD = '⮞' +SYMBOL_UP_ARROWHEAD = '⮝' +SYMBOL_DOWN_ARROWHEAD = '⮟' +SYMBOL_HOURGLASS = '⌛' if running_windows() or running_mac() else '' + +if sum([int(i) for i in tclversion_detailed.split('.')]) > 19: + SYMBOL_TITLEBAR_MINIMIZE = '_' + SYMBOL_TITLEBAR_MAXIMIZE = '◻' + SYMBOL_TITLEBAR_CLOSE = 'X' +else: + SYMBOL_TITLEBAR_MINIMIZE = '_' + SYMBOL_TITLEBAR_MAXIMIZE = 'O' + SYMBOL_TITLEBAR_CLOSE = 'X' + +#################### PATHS for user_settings APIs #################### +# These paths are passed to os.path.expanduser to get the default path for user_settings +# They can be changed using set_options + +DEFAULT_USER_SETTINGS_WIN_PATH = r'~\AppData\Local\PySimpleGUI\settings' +DEFAULT_USER_SETTINGS_LINUX_PATH = r'~/.config/PySimpleGUI/settings' +DEFAULT_USER_SETTINGS_MAC_PATH = r'~/Library/Application Support/PySimpleGUI/settings' +DEFAULT_USER_SETTINGS_TRINKET_PATH = r'.' +DEFAULT_USER_SETTINGS_REPLIT_PATH = r'.' +DEFAULT_USER_SETTINGS_UNKNOWN_OS_PATH = r'~/Library/Application Support/PySimpleGUI/settings' +DEFAULT_USER_SETTINGS_PATH = None # value set by user to override all paths above +DEFAULT_USER_SETTINGS_PYSIMPLEGUI_PATH = None # location of the global PySimpleGUI settings +DEFAULT_USER_SETTINGS_PYSIMPLEGUI_FILENAME = '_PySimpleGUI_settings_global_.json' # location of the global PySimpleGUI settings + + + +# ====================================================================== # +# One-liner functions that are handy as f_ck # +# ====================================================================== # +def rgb(red, green, blue): + """ + Given integer values of Red, Green, Blue, return a color string "#RRGGBB" + :param red: Red portion from 0 to 255 + :type red: (int) + :param green: Green portion from 0 to 255 + :type green: (int) + :param blue: Blue portion from 0 to 255 + :type blue: (int) + :return: A single RGB String in the format "#RRGGBB" where each pair is a hex number. + :rtype: (str) + """ + red = min(int(red), 255) if red > 0 else 0 + blue = min(int(blue), 255) if blue > 0 else 0 + green = min(int(green), 255) if green > 0 else 0 + return '#%02x%02x%02x' % (red, green, blue) + + +# ====================================================================== # +# Enums for types # +# ====================================================================== # +# ------------------------- Button types ------------------------- # +# uncomment this line and indent to go back to using Enums +BUTTON_TYPE_BROWSE_FOLDER = 1 +BUTTON_TYPE_BROWSE_FILE = 2 +BUTTON_TYPE_BROWSE_FILES = 21 +BUTTON_TYPE_SAVEAS_FILE = 3 +BUTTON_TYPE_CLOSES_WIN = 5 +BUTTON_TYPE_CLOSES_WIN_ONLY = 6 +BUTTON_TYPE_READ_FORM = 7 +BUTTON_TYPE_REALTIME = 9 +BUTTON_TYPE_CALENDAR_CHOOSER = 30 +BUTTON_TYPE_COLOR_CHOOSER = 40 +BUTTON_TYPE_SHOW_DEBUGGER = 50 + +BROWSE_FILES_DELIMITER = ';' # the delimiter to be used between each file in the returned string + +FILE_TYPES_ALL_FILES = (("ALL Files", "*.* *"),) + +BUTTON_DISABLED_MEANS_IGNORE = 'ignore' + +# ------------------------- Element types ------------------------- # + +ELEM_TYPE_TEXT = 'text' +ELEM_TYPE_INPUT_TEXT = 'input' +ELEM_TYPE_INPUT_COMBO = 'combo' +ELEM_TYPE_INPUT_OPTION_MENU = 'option menu' +ELEM_TYPE_INPUT_RADIO = 'radio' +ELEM_TYPE_INPUT_MULTILINE = 'multiline' +ELEM_TYPE_INPUT_CHECKBOX = 'checkbox' +ELEM_TYPE_INPUT_SPIN = 'spind' +ELEM_TYPE_BUTTON = 'button' +ELEM_TYPE_IMAGE = 'image' +ELEM_TYPE_CANVAS = 'canvas' +ELEM_TYPE_FRAME = 'frame' +ELEM_TYPE_GRAPH = 'graph' +ELEM_TYPE_TAB = 'tab' +ELEM_TYPE_TAB_GROUP = 'tabgroup' +ELEM_TYPE_INPUT_SLIDER = 'slider' +ELEM_TYPE_INPUT_LISTBOX = 'listbox' +ELEM_TYPE_OUTPUT = 'output' +ELEM_TYPE_COLUMN = 'column' +ELEM_TYPE_MENUBAR = 'menubar' +ELEM_TYPE_PROGRESS_BAR = 'progressbar' +ELEM_TYPE_BLANK = 'blank' +ELEM_TYPE_TABLE = 'table' +ELEM_TYPE_TREE = 'tree' +ELEM_TYPE_ERROR = 'error' +ELEM_TYPE_SEPARATOR = 'separator' +ELEM_TYPE_STATUSBAR = 'statusbar' +ELEM_TYPE_PANE = 'pane' +ELEM_TYPE_BUTTONMENU = 'buttonmenu' +ELEM_TYPE_TITLEBAR = 'titlebar' +ELEM_TYPE_SIZEGRIP = 'sizegrip' + +# STRETCH == ERROR ELEMENT as a filler + +# ------------------------- Popup Buttons Types ------------------------- # +POPUP_BUTTONS_YES_NO = 1 +POPUP_BUTTONS_CANCELLED = 2 +POPUP_BUTTONS_ERROR = 3 +POPUP_BUTTONS_OK_CANCEL = 4 +POPUP_BUTTONS_OK = 0 +POPUP_BUTTONS_NO_BUTTONS = 5 + +PSG_THEME_PART_BUTTON_TEXT = 'Button Text Color' +PSG_THEME_PART_BUTTON_BACKGROUND = 'Button Background Color' +PSG_THEME_PART_BACKGROUND = 'Background Color' +PSG_THEME_PART_INPUT_BACKGROUND = 'Input Element Background Color' +PSG_THEME_PART_INPUT_TEXT = 'Input Element Text Color' +PSG_THEME_PART_TEXT = 'Text Color' +PSG_THEME_PART_SLIDER = 'Slider Color' +PSG_THEME_PART_LIST = [PSG_THEME_PART_BACKGROUND, PSG_THEME_PART_BUTTON_BACKGROUND, PSG_THEME_PART_BUTTON_TEXT, PSG_THEME_PART_INPUT_BACKGROUND, PSG_THEME_PART_INPUT_TEXT, + PSG_THEME_PART_TEXT, PSG_THEME_PART_SLIDER] + +# theme_button + +TTK_SCROLLBAR_PART_TROUGH_COLOR = 'Trough Color' +TTK_SCROLLBAR_PART_BACKGROUND_COLOR = 'Background Color' +TTK_SCROLLBAR_PART_ARROW_BUTTON_ARROW_COLOR = 'Arrow Button Arrow Color' +TTK_SCROLLBAR_PART_FRAME_COLOR = 'Frame Color' +TTK_SCROLLBAR_PART_SCROLL_WIDTH = 'Frame Width' +TTK_SCROLLBAR_PART_ARROW_WIDTH = 'Arrow Width' +TTK_SCROLLBAR_PART_RELIEF = 'Relief' +TTK_SCROLLBAR_PART_LIST = [TTK_SCROLLBAR_PART_TROUGH_COLOR, TTK_SCROLLBAR_PART_BACKGROUND_COLOR, TTK_SCROLLBAR_PART_ARROW_BUTTON_ARROW_COLOR, + TTK_SCROLLBAR_PART_FRAME_COLOR, TTK_SCROLLBAR_PART_SCROLL_WIDTH, TTK_SCROLLBAR_PART_ARROW_WIDTH, TTK_SCROLLBAR_PART_RELIEF] +TTK_SCROLLBAR_PART_THEME_BASED_LIST = [TTK_SCROLLBAR_PART_TROUGH_COLOR, TTK_SCROLLBAR_PART_BACKGROUND_COLOR, TTK_SCROLLBAR_PART_ARROW_BUTTON_ARROW_COLOR, + TTK_SCROLLBAR_PART_FRAME_COLOR] +DEFAULT_TTK_PART_MAPPING_DICT = {TTK_SCROLLBAR_PART_TROUGH_COLOR: PSG_THEME_PART_SLIDER, + TTK_SCROLLBAR_PART_BACKGROUND_COLOR: PSG_THEME_PART_BUTTON_BACKGROUND, + TTK_SCROLLBAR_PART_ARROW_BUTTON_ARROW_COLOR: PSG_THEME_PART_BUTTON_TEXT, + TTK_SCROLLBAR_PART_FRAME_COLOR: PSG_THEME_PART_BACKGROUND, + TTK_SCROLLBAR_PART_SCROLL_WIDTH: 12, + TTK_SCROLLBAR_PART_ARROW_WIDTH: 12, + TTK_SCROLLBAR_PART_RELIEF: RELIEF_RAISED} + +ttk_part_mapping_dict = copy.copy(DEFAULT_TTK_PART_MAPPING_DICT) + + + +# ------------------------- Web Destinations ------------------------- # +var_aNG3uO = r'https://signup.PySimpleGUI.com' +var_T9YzE = r'http://privacy.PySimpleGUI.com' +var_jhIAN = r'http://terms.PySimpleGUI.com' +var_plz59L = r'http://license.PySimpleGUI.com' +URL_HOME = r'http://home.PySimpleGUI.com' +URL_DOCS = r'http://docs.PySimpleGUI.com' + + +class TTKPartOverrides(): + """ + This class contains "overrides" to the defaults for ttk scrollbars that are defined in the global settings file. + This class is used in every element, in the Window class and there's a global one that is used by set_options. + """ + + def __init__(self, sbar_trough_color=None, sbar_background_color=None, sbar_arrow_color=None, sbar_width=None, sbar_arrow_width=None, sbar_frame_color=None, sbar_relief=None): + self.sbar_trough_color = sbar_trough_color + self.sbar_background_color = sbar_background_color + self.sbar_arrow_color = sbar_arrow_color + self.sbar_width = sbar_width + self.sbar_arrow_width = sbar_arrow_width + self.sbar_frame_color = sbar_frame_color + self.sbar_relief = sbar_relief + + +ttk_part_overrides_from_options = TTKPartOverrides() + +# ------------------------- tkinter BASIC cursors... there are some OS dependent ones too ------------------------- # +TKINTER_CURSORS = ['X_cursor', 'arrow', 'based_arrow_down', 'based_arrow_up', 'boat', + 'bogosity', 'bottom_left_corner', 'bottom_right_corner', 'bottom_side', + 'bottom_tee', 'box_spiral', 'center_ptr', 'circle', 'clock', + 'coffee_mug', 'cross', 'cross_reverse', 'crosshair', 'diamond_cross', + 'dot', 'dotbox', 'double_arrow', 'draft_large', 'draft_small', 'draped_box', + 'exchange', 'fleur', 'gobbler', 'gumby', 'hand1', 'hand2', 'heart', + 'icon', 'iron_cross', 'left_ptr', 'left_side', 'left_tee', 'leftbutton', + 'll_angle', 'lr_angle', 'man', 'middlebutton', 'mouse', 'pencil', 'pirate', + 'plus', 'question_arrow', 'right_ptr', 'right_side', 'right_tee', + 'rightbutton', 'rtl_logo', 'sailboat', 'sb_down_arrow', 'sb_h_double_arrow', + 'sb_left_arrow', 'sb_right_arrow', 'sb_up_arrow', 'sb_v_double_arrow', + 'shuttle', 'sizing', 'spider', 'spraycan', 'star', 'target', 'tcross', + 'top_left_arrow', 'top_left_corner', 'top_right_corner', 'top_side', 'top_tee', + 'trek', 'ul_angle', 'umbrella', 'ur_angle', 'watch', 'xterm'] + +# ------------------------- tkinter key codes for bindings ------------------------- # + +# The keycode that when pressed will take a snapshot of the current window +DEFAULT_WINDOW_SNAPSHOT_KEY_CODE = None +DEFAULT_WINDOW_SNAPSHOT_KEY = '--SCREENSHOT THIS WINDOW--' + +tkinter_keysyms = ( +'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'minus', 'period', 'slash', +'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', +'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', +'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'nobreakspace', +'exclamdown', 'cent', 'sterling', 'currency', 'yen', 'brokenbar', 'section', 'diaeresis', 'copyright', 'ordfeminine', 'guillemotleft', 'notsign', 'hyphen', 'registered', 'macron', +'degree', 'plusminus', 'twosuperior', 'threesuperior', 'acute', 'mu', 'paragraph', 'periodcentered', 'cedilla', 'onesuperior', 'masculine', 'guillemotright', 'onequarter', +'onehalf', 'threequarters', 'questiondown', 'Agrave', 'Aacute', 'Acircumflex', 'Atilde', 'Adiaeresis', 'Aring', 'AE', 'Ccedilla', 'Egrave', 'Eacute', 'Ecircumflex', 'Ediaeresis', +'Igrave', 'Iacute', 'Icircumflex', 'Idiaeresis', 'Eth', 'Ntilde', 'Ograve', 'Oacute', 'Ocircumflex', 'Otilde', 'Odiaeresis', 'multiply', 'Ooblique', 'Ugrave', 'Uacute', +'Ucircumflex', 'Udiaeresis', 'Yacute', 'Thorn', 'ssharp', 'agrave', 'aacute', 'acircumflex', 'atilde', 'adiaeresis', 'aring', 'ae', 'ccedilla', 'egrave', 'eacute', 'ecircumflex', +'ediaeresis', 'igrave', 'iacute', 'icircumflex', 'idiaeresis', 'eth', 'ntilde', 'ograve', 'oacute', 'ocircumflex', 'otilde', 'odiaeresis', 'division', 'oslash', 'ugrave', 'uacute', +'ucircumflex', 'udiaeresis', 'yacute', 'thorn', 'ydiaeresis', 'Aogonek', 'breve', 'Lstroke', 'Lcaron', 'Sacute', 'Scaron', 'Scedilla', 'Tcaron', 'Zacute', 'Zcaron', 'Zabovedot', +'aogonek', 'ogonek', 'lstroke', 'lcaron', 'sacute', 'caron', 'scaron', 'scedilla', 'tcaron', 'zacute', 'doubleacute', 'zcaron', 'zabovedot', 'Racute', 'Abreve', 'Cacute', 'Ccaron', +'Eogonek', 'Ecaron', 'Dcaron', 'Nacute', 'Ncaron', 'Odoubleacute', 'Rcaron', 'Uring', 'Udoubleacute', 'Tcedilla', 'racute', 'abreve', 'cacute', 'ccaron', 'eogonek', 'ecaron', +'dcaron', 'nacute', 'ncaron', 'odoubleacute', 'rcaron', 'uring', 'udoubleacute', 'tcedilla', 'abovedot', +'leftradical', 'topleftradical', 'horizconnector', 'topintegral', 'botintegral', 'vertconnector', 'topleftsqbracket', 'botleftsqbracket', 'toprightsqbracket', 'botrightsqbracket', +'topleftparens', 'botleftparens', 'toprightparens', 'botrightparens', 'leftmiddlecurlybrace', 'rightmiddlecurlybrace', 'topleftsummation', 'botleftsummation', +'topvertsummationconnector', 'botvertsummationconnector', 'toprightsummation', 'botrightsummation', 'rightmiddlesummation', 'lessthanequal', 'notequal', 'greaterthanequal', +'integral', 'therefore', 'variation', 'infinity', 'nabla', 'approximate', 'similarequal', 'ifonlyif', 'implies', 'identical', 'radical', 'includedin', 'includes', 'intersection', +'union', 'logicaland', 'logicalor', 'partialderivative', 'function', 'leftarrow', 'uparrow', 'rightarrow', 'downarrow', 'blank', 'soliddiamond', 'checkerboard', 'ht', 'ff', 'cr', +'lf', 'nl', 'vt', 'lowrightcorner', 'uprightcorner', 'upleftcorner', 'lowleftcorner', 'crossinglines', 'horizlinescan1', 'horizlinescan3', 'horizlinescan5', 'horizlinescan7', +'horizlinescan9', 'leftt', 'rightt', 'bott', 'topt', 'vertbar', 'emspace', 'enspace', 'em3space', 'em4space', 'digitspace', 'punctspace', 'thinspace', 'hairspace', 'emdash', +'endash', 'signifblank', 'ellipsis', 'doubbaselinedot', 'onethird', 'twothirds', 'onefifth', 'twofifths', 'threefifths', 'fourfifths', 'onesixth', 'fivesixths', 'careof', +'figdash', 'leftanglebracket', 'decimalpoint', 'rightanglebracket', 'marker', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'trademark', 'signaturemark', +'trademarkincircle', 'leftopentriangle', 'rightopentriangle', 'emopencircle', 'emopenrectangle', 'leftsinglequotemark', 'rightsinglequotemark', 'leftdoublequotemark', +'rightdoublequotemark', 'prescription', 'minutes', 'seconds', 'latincross', 'hexagram', 'filledrectbullet', 'filledlefttribullet', 'filledrighttribullet', 'emfilledcircle', +'emfilledrect', 'enopencircbullet', 'enopensquarebullet', 'openrectbullet', 'opentribulletup', 'opentribulletdown', 'openstar', 'enfilledcircbullet', 'enfilledsqbullet', +'filledtribulletup', 'filledtribulletdown', 'leftpointer', 'rightpointer', 'club', 'diamond', 'heart', 'maltesecross', 'dagger', 'doubledagger', 'checkmark', 'ballotcross', +'musicalsharp', 'musicalflat', 'malesymbol', 'femalesymbol', 'telephone', 'telephonerecorder', 'phonographcopyright', 'caret', 'singlelowquotemark', 'doublelowquotemark', 'cursor', +'leftcaret', 'rightcaret', 'downcaret', 'upcaret', 'overbar', 'downtack', 'upshoe', 'downstile', 'underbar', 'jot', 'quad', 'uptack', 'circle', 'upstile', 'downshoe', 'rightshoe', +'leftshoe', 'lefttack', 'righttack', 'BackSpace', 'Tab', 'Linefeed', 'Clear', 'Return', 'Pause', 'Scroll_Lock', +'Sys_Req', 'Escape', 'Multi_key', 'Kanji', 'Home', 'Left', 'Up', 'Right', 'Down', 'Prior', 'Next', 'End', 'Begin', 'Win_L', 'Win_R', 'App', 'Select', 'Print', 'Execute', 'Insert', +'Undo', 'Redo', 'Menu', 'Find', 'Cancel', 'Help', 'Break', 'Hebrew_switch', 'Num_Lock', 'KP_Space', 'KP_Tab', 'KP_Enter', 'KP_F1', 'KP_F2', 'KP_F3', 'KP_F4', 'KP_Multiply', +'KP_Add', 'KP_Separator', 'KP_Subtract', 'KP_Decimal', 'KP_Divide', 'KP_0', 'KP_1', 'KP_2', 'KP_3', 'KP_4', 'KP_5', 'KP_6', 'KP_7', 'KP_8', 'KP_9', 'KP_Equal', 'F1', 'F2', 'F3', +'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'F10', 'F11', 'F12', 'L1', 'L2', 'L3', 'L4', 'L5', 'L6', 'L7', 'L8', 'L9', 'L10', 'R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10', +'R11', 'R12', 'F33', 'R14', 'R15', 'Shift_L', 'Shift_R', 'Control_L', 'Control_R', 'Caps_Lock', 'Shift_Lock', 'Meta_L', 'Meta_R', 'Alt_L', 'Alt_R', 'Super_L', 'Super_R', 'Hyper_L', +'Hyper_R', 'Delete') + + +# ------------------------------------------------------------------------- # +# ToolTip used by the Elements # +# ------------------------------------------------------------------------- # + +class ToolTip: + """ + Create a tooltip for a given widget + (inspired by https://stackoverflow.com/a/36221216) + This is an INTERNALLY USED only class. Users should not refer to this class at all. + """ + + def __init__(self, widget, text, timeout=DEFAULT_TOOLTIP_TIME): + """ + :param widget: The tkinter widget + :type widget: widget type varies + :param text: text for the tooltip. It can inslude \n. If None tip won't be shown + :type text: str | None + :param timeout: Time in milliseconds that mouse must remain still before tip is shown + :type timeout: (int) + """ + self.widget = widget + self.text = text # Set to None and tooltip will be not shown + self.timeout = timeout + # self.wraplength = wraplength if wraplength else widget.winfo_screenwidth() // 2 + self.tipwindow = None + self.id = None + self.x = self.y = 0 + self.widget.bind("", self.enter) + self.widget.bind("", self.leave) + self.widget.bind("", self.leave) + + def enter(self, event=None): + """ + Called by tkinter when mouse enters a widget + :param event: from tkinter. Has x,y coordinates of mouse + :type event: + + """ + if self.text is None: # if tip is diabled + return + self.x = event.x + self.y = event.y + self.schedule() + + def leave(self, event=None): + """ + Called by tktiner when mouse exits a widget + :param event: from tkinter. Event info that's not used by function. + :type event: + + """ + self.unschedule() + self.hidetip() + + def schedule(self): + """ + Schedule a timer to time how long mouse is hovering + """ + self.unschedule() + self.id = self.widget.after(self.timeout, self.showtip) + + def unschedule(self): + """ + Cancel timer used to time mouse hover + """ + if self.id: + self.widget.after_cancel(self.id) + self.id = None + + def showtip(self): + """ + Creates a topoltip window with the tooltip text inside of it + """ + if self.tipwindow: + return + x = self.widget.winfo_rootx() + self.x + DEFAULT_TOOLTIP_OFFSET[0] + y = self.widget.winfo_rooty() + self.y + DEFAULT_TOOLTIP_OFFSET[1] + self.tipwindow = tk.Toplevel(self.widget) + # if not sys.platform.startswith('darwin'): + try: + self.tipwindow.wm_overrideredirect(True) + # if running_mac() and ENABLE_MAC_NOTITLEBAR_PATCH: + if _mac_should_apply_notitlebar_patch(): + self.tipwindow.wm_overrideredirect(False) + except Exception as e: + print('* Error performing wm_overrideredirect in showtip *', e) + self.tipwindow.wm_geometry("+%d+%d" % (x, y)) + self.tipwindow.wm_attributes("-topmost", 1) + + label = ttk.Label(self.tipwindow, text=self.text, justify=tk.LEFT, + background=TOOLTIP_BACKGROUND_COLOR, relief=tk.SOLID, borderwidth=1) + if TOOLTIP_FONT is not None: + label.config(font=TOOLTIP_FONT) + label.pack() + + def hidetip(self): + """ + Destroy the tooltip window + """ + if self.tipwindow: + self.tipwindow.destroy() + self.tipwindow = None + + def remove(self): + """ + Removes a tooltip from a widget + """ + self.text = None + +# ---------------------------------------------------------------------- # +# Cascading structure.... Objects get larger # +# Button # +# Element # +# Row # +# Form # +# ---------------------------------------------------------------------- # +# ------------------------------------------------------------------------- # +# Element CLASS # +# ------------------------------------------------------------------------- # +class Element(): + """ The base class for all Elements. Holds the basic description of an Element like size and colors """ + + def __init__(self, type, size=(None, None), auto_size_text=None, font=None, background_color=None, text_color=None, key=None, pad=None, tooltip=None, + visible=True, metadata=None, sbar_trough_color=None, sbar_background_color=None, sbar_arrow_color=None, sbar_width=None, sbar_arrow_width=None, sbar_frame_color=None, sbar_relief=None): + """ + Element base class. Only used internally. User will not create an Element object by itself + + :param type: The type of element. These constants all start with "ELEM_TYPE_" + :type type: (int) (could be enum) + :param size: w=characters-wide, h=rows-high. If an int instead of a tuple is supplied, then height is auto-set to 1 + :type size: (int, int) | (None, None) | int + :param auto_size_text: True if the Widget should be shrunk to exactly fit the number of chars to show + :type auto_size_text: bool + :param font: specifies the font family, size. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param background_color: color of background. Can be in #RRGGBB format or a color name "black" + :type background_color: (str) + :param text_color: element's text color. Can be in #RRGGBB format or a color name "black" + :type text_color: (str) + :param key: Identifies an Element. Should be UNIQUE to this window. + :type key: str | int | tuple | object + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom). If an int is given, then auto-converted to tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param visible: set visibility state of the element (Default = True) + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + :param sbar_trough_color: Scrollbar color of the trough + :type sbar_trough_color: (str) + :param sbar_background_color: Scrollbar color of the background of the arrow buttons at the ends AND the color of the "thumb" (the thing you grab and slide). Switches to arrow color when mouse is over + :type sbar_background_color: (str) + :param sbar_arrow_color: Scrollbar color of the arrow at the ends of the scrollbar (it looks like a button). Switches to background color when mouse is over + :type sbar_arrow_color: (str) + :param sbar_width: Scrollbar width in pixels + :type sbar_width: (int) + :param sbar_arrow_width: Scrollbar width of the arrow on the scrollbar. It will potentially impact the overall width of the scrollbar + :type sbar_arrow_width: (int) + :param sbar_frame_color: Scrollbar Color of frame around scrollbar (available only on some ttk themes) + :type sbar_frame_color: (str) + :param sbar_relief: Scrollbar relief that will be used for the "thumb" of the scrollbar (the thing you grab that slides). Should be a constant that is defined at starting with "RELIEF_" - RELIEF_RAISED, RELIEF_SUNKEN, RELIEF_FLAT, RELIEF_RIDGE, RELIEF_GROOVE, RELIEF_SOLID + :type sbar_relief: (str) + """ + + if size is not None and size != (None, None): + if isinstance(size, int): + size = (size, 1) + if isinstance(size, tuple) and len(size) == 1: + size = (size[0], 1) + + if pad is not None and pad != (None, None): + if isinstance(pad, int): + pad = (pad, pad) + + self.Size = size + self.Type = type + self.AutoSizeText = auto_size_text + + self.Pad = pad + self.Font = font + + self.TKStringVar = None + self.TKIntVar = None + self.TKText = None + self.TKEntry = None + self.TKImage = None + self.ttk_style_name = '' # The ttk style name (if this is a ttk widget) + self.ttk_style = None # The ttk Style object (if this is a ttk widget) + self._metadata = None # type: Any + if not hasattr(self, 'setting'): + self.setting = None # If no setting has been set yet, set it to None + self.ParentForm = None # type: Window + self.ParentContainer = None # will be a Form, Column, or Frame element # UNBIND + self.TextInputDefault = None + self.Position = (0, 0) # Default position Row 0, Col 0 + self.BackgroundColor = background_color if background_color is not None else DEFAULT_ELEMENT_BACKGROUND_COLOR + self.TextColor = text_color if text_color is not None else DEFAULT_ELEMENT_TEXT_COLOR + self.Key = key # dictionary key for return values + self.Tooltip = tooltip + self.TooltipObject = None # type: ToolTip + self._visible = visible + self.TKRightClickMenu = None + self.Widget = None # Set when creating window. Has the main tkinter widget for element + self.Tearoff = False # needed because of right click menu code + self.ParentRowFrame = None # type tk.Frame + self.metadata = metadata + self.user_bind_dict = {} # Used when user defines a tkinter binding using bind method - convert bind string to key modifier + self.user_bind_event = None # Used when user defines a tkinter binding using bind method - event data from tkinter + # self.pad_used = (0, 0) # the amount of pad used when was inserted into the layout + self._popup_menu_location = (None, None) + self.pack_settings = None + self.vsb_style_name = None # ttk style name used for the verical scrollbar if one is attached to element + self.hsb_style_name = None # ttk style name used for the horizontal scrollbar if one is attached to element + self.vsb_style = None # The ttk style used for the vertical scrollbar if one is attached to element + self.hsb_style = None # The ttk style used for the horizontal scrollbar if one is attached to element + self.hsb = None # The horizontal scrollbar if one is attached to element + self.vsb = None # type: ttk.Scrollbar # The vertical scrollbar if one is attached to element + self.font_used = None # Set to the font used when the element is created in the window + ## TTK Scrollbar Settings + self.ttk_part_overrides = TTKPartOverrides(sbar_trough_color=sbar_trough_color, sbar_background_color=sbar_background_color, sbar_arrow_color=sbar_arrow_color, + sbar_width=sbar_width, sbar_arrow_width=sbar_arrow_width, sbar_frame_color=sbar_frame_color, sbar_relief=sbar_relief) + + PSG_THEME_PART_FUNC_MAP = {PSG_THEME_PART_BACKGROUND: theme_background_color, + PSG_THEME_PART_BUTTON_BACKGROUND: theme_button_color_background, + PSG_THEME_PART_BUTTON_TEXT: theme_button_color_text, + PSG_THEME_PART_INPUT_BACKGROUND: theme_input_background_color, + PSG_THEME_PART_INPUT_TEXT: theme_input_text_color, + PSG_THEME_PART_TEXT: theme_text_color, + PSG_THEME_PART_SLIDER: theme_slider_color} + + # class Theme_Parts(): + # PSG_THEME_PART_FUNC_MAP = {PSG_THEME_PART_BACKGROUND: theme_background_color, + if sbar_trough_color is not None: + self.scroll_trough_color = sbar_trough_color + else: + self.scroll_trough_color = PSG_THEME_PART_FUNC_MAP.get(ttk_part_mapping_dict[TTK_SCROLLBAR_PART_TROUGH_COLOR], ttk_part_mapping_dict[TTK_SCROLLBAR_PART_TROUGH_COLOR]) + if callable(self.scroll_trough_color): + self.scroll_trough_color = self.scroll_trough_color() + + if sbar_background_color is not None: + self.scroll_background_color = sbar_background_color + else: + self.scroll_background_color = PSG_THEME_PART_FUNC_MAP.get(ttk_part_mapping_dict[TTK_SCROLLBAR_PART_BACKGROUND_COLOR], + ttk_part_mapping_dict[TTK_SCROLLBAR_PART_BACKGROUND_COLOR]) + if callable(self.scroll_background_color): + self.scroll_background_color = self.scroll_background_color() + + if sbar_arrow_color is not None: + self.scroll_arrow_color = sbar_arrow_color + else: + self.scroll_arrow_color = PSG_THEME_PART_FUNC_MAP.get(ttk_part_mapping_dict[TTK_SCROLLBAR_PART_ARROW_BUTTON_ARROW_COLOR], + ttk_part_mapping_dict[TTK_SCROLLBAR_PART_ARROW_BUTTON_ARROW_COLOR]) + if callable(self.scroll_arrow_color): + self.scroll_arrow_color = self.scroll_arrow_color() + + if sbar_frame_color is not None: + self.scroll_frame_color = sbar_frame_color + else: + self.scroll_frame_color = PSG_THEME_PART_FUNC_MAP.get(ttk_part_mapping_dict[TTK_SCROLLBAR_PART_FRAME_COLOR], ttk_part_mapping_dict[TTK_SCROLLBAR_PART_FRAME_COLOR]) + if callable(self.scroll_frame_color): + self.scroll_frame_color = self.scroll_frame_color() + + if sbar_relief is not None: + self.scroll_relief = sbar_relief + else: + self.scroll_relief = ttk_part_mapping_dict[TTK_SCROLLBAR_PART_RELIEF] + + if sbar_width is not None: + self.scroll_width = sbar_width + else: + self.scroll_width = ttk_part_mapping_dict[TTK_SCROLLBAR_PART_SCROLL_WIDTH] + + if sbar_arrow_width is not None: + self.scroll_arrow_width = sbar_arrow_width + else: + self.scroll_arrow_width = ttk_part_mapping_dict[TTK_SCROLLBAR_PART_ARROW_WIDTH] + + if not hasattr(self, 'DisabledTextColor'): + self.DisabledTextColor = None + if not hasattr(self, 'ItemFont'): + self.ItemFont = None + if not hasattr(self, 'RightClickMenu'): + self.RightClickMenu = None + if not hasattr(self, 'Disabled'): + self.Disabled = None # in case the element hasn't defined this, add it here + + @property + def visible(self): + """ + Returns visibility state for the element. This is a READONLY property + :return: Visibility state for element + :rtype: (bool) + """ + return self._visible + + @property + def metadata(self): + """ + Metadata is an Element property that you can use at any time to hold any value + :return: the current metadata value + :rtype: (Any) + """ + return self._metadata + + @metadata.setter + def metadata(self, value): + """ + Metadata is an Element property that you can use at any time to hold any value + :param value: Anything you want it to be + :type value: (Any) + """ + self._metadata = value + + @property + def key(self): + """ + Returns key for the element. This is a READONLY property. + Keys can be any hashable object (basically anything except a list... tuples are ok, but not lists) + :return: The window's Key + :rtype: (Any) + """ + return self.Key + + @property + def widget(self): + """ + Returns tkinter widget for the element. This is a READONLY property. + The implementation is that the Widget member variable is returned. This is a backward compatible addition + :return: The element's underlying tkinter widget + :rtype: (tkinter.Widget) + """ + return self.Widget + + def _RightClickMenuCallback(self, event): + """ + Callback function that's called when a right click happens. Shows right click menu as result + + :param event: information provided by tkinter about the event including x,y location of click + :type event: + + """ + + if self.Type == ELEM_TYPE_TAB_GROUP: + try: + index = self.Widget.index('@{},{}'.format(event.x, event.y)) + tab = self.Widget.tab(index, 'text') + key = self.find_key_from_tab_name(tab) + tab_element = self.ParentForm.key_dict[key] + if tab_element.RightClickMenu is None: # if this tab didn't explicitly have a menu, then don't show anything + return + tab_element.TKRightClickMenu.tk_popup(event.x_root, event.y_root, 0) + self.TKRightClickMenu.grab_release() + except: + pass + return + self.TKRightClickMenu.tk_popup(event.x_root, event.y_root, 0) + self.TKRightClickMenu.grab_release() + if self.Type == ELEM_TYPE_GRAPH: + self._update_position_for_returned_values(event) + self.ParentForm._right_click_menu_element = self + + def _tearoff_menu_callback(self, parent, menu): + """ + Callback function that's called when a right click menu is torn off. + The reason for this function is to relocate the torn-off menu. It will default to 0,0 otherwise + This callback moves the right click menu window to the location of the current window + + :param parent: information provided by tkinter - the parent of the Meny + :type parent: + :param menu: information provided by tkinter - the menu window + :type menu: + + """ + if self._popup_menu_location == (None, None): + winx, winy = self.ParentForm.current_location() + else: + winx, winy = self._popup_menu_location + # self.ParentForm.TKroot.update() + self.ParentForm.TKroot.tk.call('wm', 'geometry', menu, "+{}+{}".format(winx, winy)) + + def _MenuItemChosenCallback(self, item_chosen): # TEXT Menu item callback + """ + Callback function called when user chooses a menu item from menubar, Button Menu or right click menu + + :param item_chosen: String holding the value chosen. + :type item_chosen: str + + """ + # print('IN MENU ITEM CALLBACK', item_chosen) + self.MenuItemChosen = item_chosen + self.ParentForm.LastButtonClicked = self.MenuItemChosen + self.ParentForm.FormRemainedOpen = True + _exit_mainloop(self.ParentForm) + # Window._window_that_exited = self.ParentForm + # self.ParentForm.TKroot.quit() # kick the users out of the mainloop + + def _FindReturnKeyBoundButton(self, form): + """ + Searches for which Button has the flag Button.BindReturnKey set. It is called recursively when a + "Container Element" is encountered. Func has to walk entire window including these "sub-forms" + + :param form: the Window object to search + :type form: + :return: Button Object if a button is found, else None + :rtype: Button | None + """ + for row in form.Rows: + for element in row: + if element.Type == ELEM_TYPE_BUTTON: + if element.BindReturnKey: + return element + if element.Type == ELEM_TYPE_COLUMN: + rc = self._FindReturnKeyBoundButton(element) + if rc is not None: + return rc + if element.Type == ELEM_TYPE_FRAME: + rc = self._FindReturnKeyBoundButton(element) + if rc is not None: + return rc + if element.Type == ELEM_TYPE_TAB_GROUP: + rc = self._FindReturnKeyBoundButton(element) + if rc is not None: + return rc + if element.Type == ELEM_TYPE_TAB: + rc = self._FindReturnKeyBoundButton(element) + if rc is not None: + return rc + if element.Type == ELEM_TYPE_PANE: + rc = self._FindReturnKeyBoundButton(element) + if rc is not None: + return rc + return None + + def _TextClickedHandler(self, event): + """ + Callback that's called when a text element is clicked on with events enabled on the Text Element. + Result is that control is returned back to user (quits mainloop). + + :param event: + :type event: + + """ + # If this is a minimize button for a custom titlebar, then minimize the window + if self.Key in (TITLEBAR_MINIMIZE_KEY, TITLEBAR_MAXIMIZE_KEY, TITLEBAR_CLOSE_KEY): + self.ParentForm._custom_titlebar_callback(self.Key) + elif self.Key == var_eeUSKe: + webbrowser.open_new_tab(var_aNG3uO) + return + self._generic_callback_handler(self.DisplayText) + return + + def _ReturnKeyHandler(self, event): + """ + Internal callback for the ENTER / RETURN key. Results in calling the ButtonCallBack for element that has the return key bound to it, just as if button was clicked. + + :param event: + :type event: + + """ + # if the element is disabled, ignore the event + if self.Disabled: + return + + MyForm = self.ParentForm + button_element = self._FindReturnKeyBoundButton(MyForm) + if button_element is not None: + # if the Button has been disabled, then don't perform the callback + if button_element.Disabled: + return + button_element.ButtonCallBack() + + def _generic_callback_handler(self, alternative_to_key=None, force_key_to_be=None): + """ + Peforms the actions that were in many of the callback functions previously. Combined so that it's + easier to modify and is in 1 place now + + :param event: From tkinter and is not used + :type event: Any + :param alternate_to_key: If key is None, then use this value instead + :type alternate_to_key: Any + """ + if force_key_to_be is not None: + self.ParentForm.LastButtonClicked = force_key_to_be + elif self.Key is not None: + self.ParentForm.LastButtonClicked = self.Key + else: + self.ParentForm.LastButtonClicked = alternative_to_key + self.ParentForm.FormRemainedOpen = True + + _exit_mainloop(self.ParentForm) + # if self.ParentForm.CurrentlyRunningMainloop: + # Window._window_that_exited = self.ParentForm + # self.ParentForm.TKroot.quit() # kick the users out of the mainloop + + def _ListboxSelectHandler(self, event): + """ + Internal callback function for when a listbox item is selected + + :param event: Information from tkinter about the callback + :type event: + + """ + self._generic_callback_handler('') + + def _ComboboxSelectHandler(self, event): + """ + Internal callback function for when an entry is selected in a Combobox. + :param event: Event data from tkinter (not used) + :type event: + + """ + self._generic_callback_handler('') + + + + def _OptionMenuSelectHandler(self, var, index, mode): + """ + Internal callback function for when an entry is selected in a OptionMenu. + :param var: tkinter control variable + :param index: index of var, '' if var is not a list + :param mode: 'w' for 'write' here + """ + self._generic_callback_handler('') + + + + + def _SpinboxSelectHandler(self, event=None): + """ + Internal callback function for when an entry is selected in a Spinbox. + Note that the parm is optional because it's not used if arrows are used to change the value + but if the return key is pressed, it will include the event parm + :param event: Event data passed in by tkinter (not used) + :type event: + """ + self._generic_callback_handler('') + + def _RadioHandler(self): + """ + Internal callback for when a radio button is selected and enable events was set for radio + """ + self._generic_callback_handler('') + + def _CheckboxHandler(self): + """ + Internal callback for when a checkbnox is selected and enable events was set for checkbox + """ + self._generic_callback_handler('') + + def _TabGroupSelectHandler(self, event): + """ + Internal callback for when a Tab is selected and enable events was set for TabGroup + + :param event: Event data passed in by tkinter (not used) + :type event: + """ + self._generic_callback_handler('') + + def _KeyboardHandler(self, event): + """ + Internal callback for when a key is pressed andd return keyboard events was set for window + + :param event: Event data passed in by tkinter (not used) + :type event: + """ + + # if the element is disabled, ignore the event + if self.Disabled: + return + self._generic_callback_handler('') + + def _ClickHandler(self, event): + """ + Internal callback for when a mouse was clicked... I think. + + :param event: Event data passed in by tkinter (not used) + :type event: + """ + self._generic_callback_handler('') + + def _this_elements_window_closed(self, quick_check=True): + if self.ParentForm is not None: + return self.ParentForm.is_closed(quick_check=quick_check) + + return True + + def _user_bind_callback(self, bind_string, event, propagate=True): + """ + Used when user binds a tkinter event directly to an element + + :param bind_string: The event that was bound so can lookup the key modifier + :type bind_string: (str) + :param event: Event data passed in by tkinter (not used) + :type event: (Any) + :param propagate: If True then tkinter will be told to propagate the event to the element + :type propagate: (bool) + """ + key_suffix = self.user_bind_dict.get(bind_string, '') + self.user_bind_event = event + if self.Type == ELEM_TYPE_GRAPH: + self._update_position_for_returned_values(event) + if self.Key is not None: + if isinstance(self.Key, str): + key = self.Key + str(key_suffix) + else: + key = (self.Key, key_suffix) # old way (pre 2021) was to make a brand new tuple + # key = self.Key + (key_suffix,) # in 2021 tried this. It will break existing applications though - if key is a tuple, add one more item + else: + key = bind_string + + self._generic_callback_handler(force_key_to_be=key) + + return 'break' if propagate is not True else None + + def bind(self, bind_string, key_modifier, propagate=True): + """ + Used to add tkinter events to an Element. + The tkinter specific data is in the Element's member variable user_bind_event + :param bind_string: The string tkinter expected in its bind function + :type bind_string: (str) + :param key_modifier: Additional data to be added to the element's key when event is returned + :type key_modifier: (str) + :param propagate: If True then tkinter will be told to propagate the event to the element + :type propagate: (bool) + """ + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + try: + self.Widget.bind(bind_string, lambda evt: self._user_bind_callback(bind_string, evt, propagate)) + except Exception as e: + self.Widget.unbind_all(bind_string) + return + + self.user_bind_dict[bind_string] = key_modifier + + def unbind(self, bind_string): + """ + Removes a previously bound tkinter event from an Element. + :param bind_string: The string tkinter expected in its bind function + :type bind_string: (str) + """ + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + self.Widget.unbind(bind_string) + self.user_bind_dict.pop(bind_string, None) + + def set_tooltip(self, tooltip_text): + """ + Called by application to change the tooltip text for an Element. Normally invoked using the Element Object such as: window.Element('key').SetToolTip('New tip'). + + :param tooltip_text: the text to show in tooltip. If None then no tip will be shown + :type tooltip_text: str | None + """ + + if self.TooltipObject: + try: + self.TooltipObject.leave() + except: + pass + + self.TooltipObject = ToolTip(self.Widget, text=tooltip_text, timeout=DEFAULT_TOOLTIP_TIME) + + + def remove_tooltip(self): + """ + Removes a previiously created tooltip for an element + + """ + + if self.TooltipObject: + try: + self.TooltipObject.remove() + except: + pass + + + def set_focus(self, force=False): + """ + Sets the current focus to be on this element + + :param force: if True will call focus_force otherwise calls focus_set + :type force: bool + """ + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + try: + if force: + self.Widget.focus_force() + else: + self.Widget.focus_set() + except Exception as e: + _error_popup_with_traceback("Exception blocking focus. Check your element's Widget", e) + + def block_focus(self, block=True): + """ + Enable or disable the element from getting focus by using the keyboard. + If the block parameter is True, then this element will not be given focus by using + the keyboard to go from one element to another. + You CAN click on the element and utilize it. + + :param block: if True the element will not get focus via the keyboard + :type block: bool + """ + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + try: + self.ParentForm.TKroot.focus_force() + if block: + self.Widget.configure(takefocus=0) + else: + self.Widget.configure(takefocus=1) + except Exception as e: + _error_popup_with_traceback("Exception blocking focus. Check your element's Widget", e) + + def get_next_focus(self): + """ + Gets the next element that should get focus after this element. + + :return: Element that will get focus after this one + :rtype: (Element) + """ + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return None + + try: + next_widget_focus = self.widget.tk_focusNext() + return self.ParentForm.widget_to_element(next_widget_focus) + except Exception as e: + _error_popup_with_traceback("Exception getting next focus. Check your element's Widget", e) + + def get_previous_focus(self): + """ + Gets the element that should get focus previous to this element. + + :return: Element that should get the focus before this one + :rtype: (Element) + """ + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return None + try: + next_widget_focus = self.widget.tk_focusPrev() # tkinter.Widget + return self.ParentForm.widget_to_element(next_widget_focus) + except Exception as e: + _error_popup_with_traceback("Exception getting previous focus. Check your element's Widget", e) + + def set_size(self, size=(None, None)): + """ + Changes the size of an element to a specific size. + It's possible to specify None for one of sizes so that only 1 of the element's dimensions are changed. + + :param size: The size in characters, rows typically. In some cases they are pixels + :type size: (int, int) + """ + try: + if size[0] != None: + self.Widget.config(width=size[0]) + except: + print('Warning, error setting width on element with key=', self.Key) + try: + if size[1] != None: + self.Widget.config(height=size[1]) + except: + try: + self.Widget.config(length=size[1]) + except: + print('Warning, error setting height on element with key=', self.Key) + + if self.Type == ELEM_TYPE_GRAPH: + self.CanvasSize = size + + def get_size(self): + """ + Return the size of an element in Pixels. Care must be taken as some elements use characters to specify their size but will return pixels when calling this get_size method. + :return: width and height of the element + :rtype: (int, int) + """ + try: + w = self.Widget.winfo_width() + h = self.Widget.winfo_height() + except: + print('Warning, error getting size of element', self.Key) + w = h = None + return w, h + + def hide_row(self): + """ + Hide the entire row an Element is located on. + Use this if you must have all space removed when you are hiding an element, including the row container + """ + try: + self.ParentRowFrame.pack_forget() + except: + print('Warning, error hiding element row for key =', self.Key) + + def unhide_row(self): + """ + Unhides (makes visible again) the row container that the Element is located on. + Note that it will re-appear at the bottom of the window / container, most likely. + """ + try: + self.ParentRowFrame.pack() + except: + print('Warning, error hiding element row for key =', self.Key) + + def expand(self, expand_x=False, expand_y=False, expand_row=True): + """ + Causes the Element to expand to fill available space in the X and Y directions. Can specify which or both directions + + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :param expand_row: If True the row containing the element will also expand. Without this your element is "trapped" within the row + :type expand_row: (bool) + """ + if expand_x and expand_y: + fill = tk.BOTH + elif expand_x: + fill = tk.X + elif expand_y: + fill = tk.Y + else: + return + + if not self._widget_was_created(): + return + self.Widget.pack(expand=True, fill=fill) + self.ParentRowFrame.pack(expand=expand_row, fill=fill) + if self.element_frame is not None: + self.element_frame.pack(expand=True, fill=fill) + + def set_cursor(self, cursor=None, cursor_color=None): + """ + Sets the cursor for the current Element. + "Cursor" is used in 2 different ways in this call. + For the parameter "cursor" it's actually the mouse pointer. + If you do not want any mouse pointer, then use the string "none" + For the parameter "cursor_color" it's the color of the beam used when typing into an input element + + :param cursor: The tkinter cursor name + :type cursor: (str) + :param cursor_color: color to set the "cursor" to + :type cursor_color: (str) + """ + if not self._widget_was_created(): + return + if cursor is not None: + try: + self.Widget.config(cursor=cursor) + except Exception as e: + print('Warning bad cursor specified ', cursor) + print(e) + if cursor_color is not None: + try: + self.Widget.config(insertbackground=cursor_color) + except Exception as e: + print('Warning bad cursor color', cursor_color) + print(e) + + def set_vscroll_position(self, percent_from_top): + """ + Attempts to set the vertical scroll postition for an element's Widget + :param percent_from_top: From 0 to 1.0, the percentage from the top to move scrollbar to + :type percent_from_top: (float) + """ + if self.Type == ELEM_TYPE_COLUMN and self.Scrollable: + widget = self.widget.canvas # scrollable column is a special case + else: + widget = self.widget + + try: + widget.yview_moveto(percent_from_top) + except Exception as e: + print('Warning setting the vertical scroll (yview_moveto failed)') + print(e) + + + def set_hscroll_position(self, percent_from_left): + """ + Attempts to set the horizontal scroll postition for an element's Widget + :param percent_from_left: From 0 to 1.0, the percentage from the left to move scrollbar to + :type percent_from_left: (float) + """ + if self.Type == ELEM_TYPE_COLUMN and self.Scrollable: + widget = self.widget.canvas # scrollable column is a special case + else: + widget = self.widget + + try: + widget.xview_moveto(percent_from_left) + except Exception as e: + print('Warning setting the horizontal scroll (xview_moveto failed)') + print(e) + + + def _widget_was_created(self): + """ + Determines if a Widget was created for this element. + + :return: True if a Widget has been created previously (Widget is not None) + :rtype: (bool) + """ + if self.Widget is not None: + return True + else: + if SUPPRESS_WIDGET_NOT_FINALIZED_WARNINGS: + return False + + warnings.warn('You cannot Update element with key = {} until the window.read() is called or finalize=True when creating window'.format(self.Key), UserWarning) + if not SUPPRESS_ERROR_POPUPS: + _error_popup_with_traceback('Unable to complete operation on element with key {}'.format(self.Key), + 'You cannot perform operations (such as calling update) on an Element until:', + ' window.read() is called or finalize=True when Window created.', + 'Adding a "finalize=True" parameter to your Window creation will likely fix this.', + _create_error_message(), + ) + return False + + def _grab_anywhere_on_using_control_key(self): + """ + Turns on Grab Anywhere functionality AFTER a window has been created. Don't try on a window that's not yet + been Finalized or Read. + """ + self.Widget.bind("", self.ParentForm._StartMove) + self.Widget.bind("", self.ParentForm._StopMove) + self.Widget.bind("", self.ParentForm._OnMotion) + + def _grab_anywhere_on(self): + """ + Turns on Grab Anywhere functionality AFTER a window has been created. Don't try on a window that's not yet + been Finalized or Read. + """ + self.Widget.bind("", self.ParentForm._StartMove) + self.Widget.bind("", self.ParentForm._StopMove) + self.Widget.bind("", self.ParentForm._OnMotion) + + def _grab_anywhere_off(self): + """ + Turns off Grab Anywhere functionality AFTER a window has been created. Don't try on a window that's not yet + been Finalized or Read. + """ + self.Widget.unbind("") + self.Widget.unbind("") + self.Widget.unbind("") + + def grab_anywhere_exclude(self): + """ + Excludes this element from being used by the grab_anywhere feature + Handy for elements like a Graph element when dragging is enabled. You want the Graph element to get the drag events instead of the window dragging. + """ + self.ParentForm._grab_anywhere_ignore_these_list.append(self.Widget) + + def grab_anywhere_include(self): + """ + Includes this element in the grab_anywhere feature + This will allow you to make a Multline element drag a window for example + """ + self.ParentForm._grab_anywhere_include_these_list.append(self.Widget) + + + def set_right_click_menu(self, menu=None): + """ + Sets a right click menu for an element. + If a menu is already set for the element, it will call the tkinter destroy method to remove it + :param menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type menu: List[List[ List[str] | str ]] + """ + if menu == MENU_RIGHT_CLICK_DISABLED: + return + if menu is None: + menu = self.ParentForm.RightClickMenu + if menu is None: + return + if menu: + # If previously had a menu destroy it + if self.TKRightClickMenu: + try: + self.TKRightClickMenu.destroy() # just in case there's a problem let's not crash + except: + pass + top_menu = tk.Menu(self.ParentForm.TKroot, tearoff=self.ParentForm.right_click_menu_tearoff, tearoffcommand=self._tearoff_menu_callback) + + if self.ParentForm.right_click_menu_background_color not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(bg=self.ParentForm.right_click_menu_background_color) + if self.ParentForm.right_click_menu_text_color not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(fg=self.ParentForm.right_click_menu_text_color) + if self.ParentForm.right_click_menu_disabled_text_color not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(disabledforeground=self.ParentForm.right_click_menu_disabled_text_color) + if self.ParentForm.right_click_menu_font is not None: + top_menu.config(font=self.ParentForm.right_click_menu_font) + + if self.ParentForm.right_click_menu_selected_colors[0] not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(activeforeground=self.ParentForm.right_click_menu_selected_colors[0]) + if self.ParentForm.right_click_menu_selected_colors[1] not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(activebackground=self.ParentForm.right_click_menu_selected_colors[1]) + AddMenuItem(top_menu, menu[1], self, right_click_menu=True) + self.TKRightClickMenu = top_menu + if self.ParentForm.RightClickMenu: # if the top level has a right click menu, then setup a callback for the Window itself + if self.ParentForm.TKRightClickMenu is None: + self.ParentForm.TKRightClickMenu = top_menu + if (running_mac()): + self.ParentForm.TKroot.bind('', self.ParentForm._RightClickMenuCallback) + else: + self.ParentForm.TKroot.bind('', self.ParentForm._RightClickMenuCallback) + if (running_mac()): + self.Widget.bind('', self._RightClickMenuCallback) + else: + self.Widget.bind('', self._RightClickMenuCallback) + + + def save_element_screenshot_to_disk(self, filename=None): + """ + Saves an image of the PySimpleGUI window provided into the filename provided + + :param filename: Optional filename to save screenshot to. If not included, the User Settinds are used to get the filename + :return: A PIL ImageGrab object that can be saved or manipulated + :rtype: (PIL.ImageGrab | None) + """ + global pil_import_attempted, pil_imported, PIL, ImageGrab, Image + + if not pil_import_attempted: + try: + import PIL as PIL + from PIL import ImageGrab + from PIL import Image + pil_imported = True + pil_import_attempted = True + except: + pil_imported = False + pil_import_attempted = True + print('FAILED TO IMPORT PIL!') + return None + try: + # Add a little to the X direction if window has a titlebar + rect = ( + self.widget.winfo_rootx(), self.widget.winfo_rooty(), self.widget.winfo_rootx() + self.widget.winfo_width(), self.widget.winfo_rooty() + self.widget.winfo_height()) + + grab = ImageGrab.grab(bbox=rect) + # Save the grabbed image to disk + except Exception as e: + # print(e) + popup_error_with_traceback('Screen capture failure', 'Error happened while trying to save screencapture of an element', e) + return None + + # return grab + if filename is None: + folder = pysimplegui_user_settings.get('-screenshots folder-', '') + filename = pysimplegui_user_settings.get('-screenshots filename-', '') + full_filename = os.path.join(folder, filename) + else: + full_filename = filename + if full_filename: + try: + grab.save(full_filename) + except Exception as e: + popup_error_with_traceback('Screen capture failure', 'Error happened while trying to save screencapture', e) + else: + popup_error_with_traceback('Screen capture failure', 'You have attempted a screen capture but have not set up a good filename to save to') + return grab + + def _pack_forget_save_settings(self, alternate_widget=None): + """ + Performs a pack_forget which will make a widget invisible. + This method saves the pack settings so that they can be restored if the element is made visible again + + :param alternate_widget: Widget to use that's different than the one defined in Element.Widget. These are usually Frame widgets + :type alternate_widget: (tk.Widget) + """ + + if alternate_widget is not None and self.Widget is None: + return + + widget = alternate_widget if alternate_widget is not None else self.Widget + # if the widget is already invisible (i.e. not packed) then will get an error + try: + pack_settings = widget.pack_info() + self.pack_settings = pack_settings + widget.pack_forget() + except: + pass + + def _pack_restore_settings(self, alternate_widget=None): + """ + Restores a previously packated widget which will make it visible again. + If no settings were saved, then the widget is assumed to have not been unpacked and will not try to pack it again + + :param alternate_widget: Widget to use that's different than the one defined in Element.Widget. These are usually Frame widgets + :type alternate_widget: (tk.Widget) + """ + + # if there are no saved pack settings, then assume it hasnb't been packaed before. The request will be ignored + if self.pack_settings is None: + return + + widget = alternate_widget if alternate_widget is not None else self.Widget + if widget is not None: + widget.pack(**self.pack_settings) + + def update(self, *args, **kwargs): + """ + A dummy update call. This will only be called if an element hasn't implemented an update method + It is provided here for docstring purposes. If you got here by browing code via PyCharm, know + that this is not the function that will be called. Your actual element's update method will be called. + + If you call update, you must call window.refresh if you want the change to happen prior to your next + window.read() call. Normally uou don't do this as the window.read call is likely going to happen next. + """ + print('* Base Element Class update was called. Your element does not seem to have an update method') + + def __call__(self, *args, **kwargs): + """ + Makes it possible to "call" an already existing element. When you do make the "call", it actually calls + the Update method for the element. + Example: If this text element was in yoiur layout: + sg.Text('foo', key='T') + Then you can call the Update method for that element by writing: + window.find_element('T')('new text value') + """ + return self.update(*args, **kwargs) + + SetTooltip = set_tooltip + SetFocus = set_focus + + +# ---------------------------------------------------------------------- # +# Input Class # +# ---------------------------------------------------------------------- # +class Input(Element): + """ + Display a single text input field. Based on the tkinter Widget `Entry` + """ + + def __init__(self, default_text='', size=(None, None), s=(None, None), disabled=False, password_char='', setting=None, + justification=None, background_color=None, text_color=None, font=None, tooltip=None, border_width=None, + change_submits=False, enable_events=False, do_not_clear=True, key=None, k=None, focus=False, pad=None, p=None, + use_readonly_for_disable=True, readonly=False, disabled_readonly_background_color=None, disabled_readonly_text_color=None, selected_text_color=None, + selected_background_color=None, expand_x=False, expand_y=False, + right_click_menu=None, visible=True, metadata=None): + """ + :param default_text: Text initially shown in the input box as a default value(Default value = ''). Will automatically be converted to string + :type default_text: (Any) + :param size: w=characters-wide, h=rows-high. If an int is supplied rather than a tuple, then a tuple is created width=int supplied and heigh=1 + :type size: (int, int) | (int, None) | int + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param password_char: Password character if this is a password field (Default value = '') + :type password_char: (char) + :param setting: If not None, then this element will be saved in a settings file using the key for the element + :type setting: (Any) + :param justification: justification for data display. Valid choices - left, right, center + :type justification: (str) + :param background_color: color of background in one of the color formats + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param font: specifies the font family, size. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param border_width: width of border around element in pixels + :type border_width: (int) + :param change_submits: * DEPRICATED DO NOT USE. Use `enable_events` instead + :type change_submits: (bool) + :param enable_events: If True then changes to this element are immediately reported as an event. Use this instead of change_submits (Default = False) + :type enable_events: (bool) + :param do_not_clear: If False then the field will be set to blank after ANY event (button, any event) (Default = True) + :type do_not_clear: (bool) + :param key: Value that uniquely identifies this element from all other elements. Used when Finding an element or in return values. Must be unique to the window + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param focus: Determines if initial focus should go to this element. + :type focus: (bool) + :param pad: Amount of padding to put around element. Normally (horizontal pixels, vertical pixels) but can be split apart further into ((horizontal left, horizontal right), (vertical above, vertical below)). If int is given, then converted to tuple (int, int) with the value provided duplicated + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param use_readonly_for_disable: If True (the default) tkinter state set to 'readonly'. Otherwise state set to 'disabled' + :type use_readonly_for_disable: (bool) + :param readonly: If True tkinter state set to 'readonly'. Use this in place of use_readonly_for_disable as another way of achieving readonly. Note cannot set BOTH readonly and disabled as tkinter only supplies a single flag + :type readonly: (bool) + :param disabled_readonly_background_color: If state is set to readonly or disabled, the color to use for the background + :type disabled_readonly_background_color: (str) + :param disabled_readonly_text_color: If state is set to readonly or disabled, the color to use for the text + :type disabled_readonly_text_color: (str) + :param selected_text_color: Color of text when it is selected (using mouse or control+A, etc) + :type selected_text_color: (str) + :param selected_background_color: Color of background when it is selected (using mouse or control+A, etc) + :type selected_background_color: (str) + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param visible: set visibility state of the element (Default = True) + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.DefaultText = default_text if default_text is not None else '' + self.PasswordCharacter = password_char + bg = background_color if background_color is not None else DEFAULT_INPUT_ELEMENTS_COLOR + fg = text_color if text_color is not None else DEFAULT_INPUT_TEXT_COLOR + self.selected_text_color = selected_text_color + self.selected_background_color = selected_background_color + self.Focus = focus + self.do_not_clear = do_not_clear + self.Justification = justification + self.Disabled = disabled + self.ChangeSubmits = change_submits or enable_events + self.RightClickMenu = right_click_menu + self.UseReadonlyForDisable = use_readonly_for_disable + self.disabled_readonly_background_color = disabled_readonly_background_color + self.disabled_readonly_text_color = disabled_readonly_text_color + self.ReadOnly = readonly + self.BorderWidth = border_width if border_width is not None else DEFAULT_BORDER_WIDTH + self.TKEntry = self.Widget = None # type: tk.Entry + key = key if key is not None else k + sz = size if size != (None, None) else s + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + if setting is not None: + self.setting = setting + self.DefaultText = user_settings_get_entry(key, setting) + + super().__init__(ELEM_TYPE_INPUT_TEXT, size=sz, background_color=bg, text_color=fg, key=key, pad=pad, + font=font, tooltip=tooltip, visible=visible, metadata=metadata) + + def update(self, value=None, disabled=None, select=None, visible=None, text_color=None, background_color=None, font=None, move_cursor_to='end', password_char=None, paste=None, + readonly=None): + """ + Changes some of the settings for the Input Element. Must call `Window.Read` or `Window.Finalize` prior. + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param value: new text to display as default text in Input field + :type value: (str) + :param disabled: disable or enable state of the element (sets Entry Widget to readonly or normal) + :type disabled: (bool) + :param select: if True, then the text will be selected + :type select: (bool) + :param visible: change visibility of element + :type visible: (bool) + :param text_color: change color of text being typed + :type text_color: (str) + :param background_color: change color of the background + :type background_color: (str) + :param font: specifies the font family, size. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param move_cursor_to: Moves the cursor to a particular offset. Defaults to 'end' + :type move_cursor_to: int | str + :param password_char: Password character if this is a password field + :type password_char: str + :param paste: If True "Pastes" the value into the element rather than replacing the entire element. If anything is selected it is replaced. The text is inserted at the current cursor location. + :type paste: bool + :param readonly: if True make element readonly (user cannot change any choices). Enables the element if either choice are made. + :type readonly: (bool) + """ + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Input.update - The window was closed') + return + + if background_color not in (None, COLOR_SYSTEM_DEFAULT): + self.TKEntry.configure(background=background_color) + self.BackgroundColor = background_color + if text_color not in (None, COLOR_SYSTEM_DEFAULT): + self.TKEntry.configure(fg=text_color) + self.TextColor = text_color + + if disabled is True: + if self.UseReadonlyForDisable: + self.TKEntry.configure(fg=self.disabled_readonly_text_color) + self.TKEntry['state'] = 'readonly' + else: + self.TKEntry.configure(fg=self.TextColor) + self.TKEntry['state'] = 'disabled' + self.Disabled = True + elif disabled is False: + self.TKEntry['state'] = 'normal' + self.TKEntry.configure(fg=self.TextColor) + self.Disabled = False + + if readonly is True: + self.TKEntry['state'] = 'readonly' + elif readonly is False: + self.TKEntry['state'] = 'normal' + + + + + if value is not None: + if paste is not True: + try: + self.TKStringVar.set(value) + except: + pass + self.DefaultText = value + if paste is True: + try: + self.TKEntry.delete('sel.first', 'sel.last') + except: + pass + self.TKEntry.insert("insert", value) + if move_cursor_to == 'end': + self.TKEntry.icursor(tk.END) + elif move_cursor_to is not None: + self.TKEntry.icursor(move_cursor_to) + if select is True: + self.TKEntry.select_range(0, 'end') + elif select is False: + self.TKEntry.select_clear() + if visible is False: + self._pack_forget_save_settings() + # self.TKEntry.pack_forget() + elif visible is True: + self._pack_restore_settings() + # self.TKEntry.pack(padx=self.pad_used[0], pady=self.pad_used[1]) + # self.TKEntry.pack(padx=self.pad_used[0], pady=self.pad_used[1], in_=self.ParentRowFrame) + if visible is not None: + self._visible = visible + if password_char is not None: + self.TKEntry.configure(show=password_char) + self.PasswordCharacter = password_char + if font is not None: + self.TKEntry.configure(font=font) + + + + def set_ibeam_color(self, ibeam_color=None): + """ + Sets the color of the I-Beam that is used to "insert" characters. This is oftens called a "Cursor" by + many users. To keep from being confused with tkinter's definition of cursor (the mouse pointer), the term + ibeam is used in this case. + :param ibeam_color: color to set the "I-Beam" used to indicate where characters will be inserted + :type ibeam_color: (str) + """ + + if not self._widget_was_created(): + return + if ibeam_color is not None: + try: + self.Widget.config(insertbackground=ibeam_color) + except Exception as e: + _error_popup_with_traceback('Error setting I-Beam color in set_ibeam_color', + 'The element has a key:', self.Key, + 'The color passed in was:', ibeam_color) + + + + + def get(self): + """ + Read and return the current value of the input element. Must call `Window.Read` or `Window.Finalize` prior + + :return: current value of Input field or '' if error encountered + :rtype: (str) + """ + try: + text = self.TKStringVar.get() + except: + text = '' + return text + + Get = get + Update = update + + +# ------------------------- INPUT TEXT Element lazy functions ------------------------- # +In = Input +InputText = Input +I = Input + + +# ---------------------------------------------------------------------- # +# Combo # +# ---------------------------------------------------------------------- # +class Combo(Element): + """ + ComboBox Element - A combination of a single-line input and a drop-down menu. User can type in their own value or choose from list. + """ + + def __init__(self, values, default_value=None, size=(None, None), s=(None, None), auto_size_text=None, background_color=None, text_color=None, button_background_color=None, + button_arrow_color=None, bind_return_key=False, setting=None, change_submits=False, enable_events=False, enable_per_char_events=None, disabled=False,right_click_menu=None, key=None, k=None, pad=None, + p=None, expand_x=False, expand_y=False, tooltip=None, readonly=False, font=None, visible=True, metadata=None): + """ + :param values: values to choose. While displayed as text, the items returned are what the caller supplied, not text + :type values: List[Any] or Tuple[Any] + :param default_value: Choice to be displayed as initial value. Must match one of values variable contents + :type default_value: (Any) + :param size: width, height. Width = characters-wide, height = NOTE it's the number of entries to show in the list. If an Int is passed rather than a tuple, then height is auto-set to 1 and width is value of the int + :type size: (int, int) | (None, None) | int + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_text: True if element should be the same size as the contents + :type auto_size_text: (bool) + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param button_background_color: The color of the background of the button on the combo box + :type button_background_color: (str) + :param button_arrow_color: The color of the arrow on the button on the combo box + :type button_arrow_color: (str) + :param bind_return_key: If True, then the return key will cause a the Combo to generate an event when return key is pressed + :type bind_return_key: (bool) + :param setting: If not None, then this element will be saved in a settings file using the key for the element + :type setting: (Any) + :param change_submits: DEPRICATED DO NOT USE. Use `enable_events` instead + :type change_submits: (bool) + :param enable_events: Turns on the element specific events. Combo event is when a choice is made + :type enable_events: (bool) + :param enable_per_char_events: Enables generation of events for every character that's input. This is like the Input element's events + :type enable_per_char_events: (bool) + :param disabled: set disable state for element + :type disabled: (bool) + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param key: Used with window.find_element and with return values to uniquely identify this element + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param tooltip: text that will appear when mouse hovers over this element + :type tooltip: (str) + :param readonly: make element readonly (user can't change). True means user cannot change + :type readonly: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param visible: set visibility state of the element + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.Values = values + self.DefaultValue = default_value + self.ChangeSubmits = change_submits or enable_events + self.Widget = self.TKCombo = None # type: ttk.Combobox + self.Disabled = disabled + self.Readonly = readonly + self.BindReturnKey = bind_return_key + bg = background_color if background_color else DEFAULT_INPUT_ELEMENTS_COLOR + fg = text_color if text_color is not None else DEFAULT_INPUT_TEXT_COLOR + key = key if key is not None else k + sz = size if size != (None, None) else s + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + self.RightClickMenu = right_click_menu + + if button_background_color is None: + self.button_background_color = theme_button_color()[1] + else: + self.button_background_color = button_background_color + if button_arrow_color is None: + self.button_arrow_color = theme_button_color()[0] + else: + self.button_arrow_color = button_arrow_color + self.enable_per_char_events = enable_per_char_events + if setting is not None: + self.setting = setting + self.DefaultValue = user_settings_get_entry(key, setting) + + super().__init__(ELEM_TYPE_INPUT_COMBO, size=sz, auto_size_text=auto_size_text, background_color=bg, + text_color=fg, key=key, pad=pad, tooltip=tooltip, font=font or DEFAULT_FONT, visible=visible, metadata=metadata) + + def update(self, value=None, values=None, set_to_index=None, disabled=None, readonly=None, font=None, visible=None, size=(None, None), select=None, text_color=None, background_color=None): + """ + Changes some of the settings for the Combo Element. Must call `Window.Read` or `Window.Finalize` prior. + Note that the state can be in 3 states only.... enabled, disabled, readonly even + though more combinations are available. The easy way to remember is that if you + change the readonly parameter then you are enabling the element. + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param value: change which value is current selected based on new list of previous list of choices + :type value: (Any) + :param values: change list of choices + :type values: List[Any] + :param set_to_index: change selection to a particular choice starting with index = 0 + :type set_to_index: (int) + :param disabled: disable or enable state of the element + :type disabled: (bool) + :param readonly: if True make element readonly (user cannot change any choices). Enables the element if either choice are made. + :type readonly: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param visible: control visibility of element + :type visible: (bool) + :param size: width, height. Width = characters-wide, height = NOTE it's the number of entries to show in the list + :type size: (int, int) + :param select: if True, then the text will be selected, if False then selection will be cleared + :type select: (bool) + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + """ + if size != (None, None): + if isinstance(size, int): + size = (size, 1) + if isinstance(size, tuple) and len(size) == 1: + size = (size[0], 1) + + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Combo.update - The window was closed') + return + + if values is not None: + try: + self.TKCombo['values'] = values + # self.TKCombo.current(0) # don't set any value if a new set of values was made + except: + pass + self.Values = values + if value is None: + self.TKCombo.set('') + if size == (None, None): + max_line_len = max([len(str(l)) for l in self.Values]) if len(self.Values) else 0 + if self.AutoSizeText is False: + width = self.Size[0] + else: + width = max_line_len + 1 + self.TKCombo.configure(width=width) + else: + self.TKCombo.configure(height=size[1]) + self.TKCombo.configure(width=size[0]) + if value is not None: + if value not in self.Values: + self.TKCombo.set(value) + else: + for index, v in enumerate(self.Values): + if v == value: + try: + self.TKCombo.current(index) + except: + pass + self.DefaultValue = value + break + if set_to_index is not None: + try: + self.TKCombo.current(set_to_index) + self.DefaultValue = self.Values[set_to_index] + except: + pass + if readonly: + self.Readonly = True + self.TKCombo['state'] = 'readonly' + elif readonly is False: + self.Readonly = False + self.TKCombo['state'] = 'enable' + if disabled is True: + self.TKCombo['state'] = 'disable' + elif disabled is False and self.Readonly is True: + self.TKCombo['state'] = 'readonly' + elif disabled is False and self.Readonly is False: + self.TKCombo['state'] = 'enable' + self.Disabled = disabled if disabled is not None else self.Disabled + + combostyle = self.ttk_style + style_name = self.ttk_style_name + if text_color is not None: + combostyle.configure(style_name, foreground=text_color) + combostyle.configure(style_name, selectforeground=text_color) + combostyle.configure(style_name, insertcolor=text_color) + combostyle.map(style_name, fieldforeground=[('readonly', text_color)]) + self.TextColor = text_color + if background_color is not None: + combostyle.configure(style_name, selectbackground=background_color) + combostyle.map(style_name, fieldbackground=[('readonly', background_color)]) + combostyle.configure(style_name, fieldbackground=background_color) + self.BackgroundColor = background_color + + + if self.Readonly is True: + if text_color not in (None, COLOR_SYSTEM_DEFAULT): + combostyle.configure(style_name, selectforeground=text_color) + if background_color not in (None, COLOR_SYSTEM_DEFAULT): + combostyle.configure(style_name, selectbackground=background_color) + + + if font is not None: + self.Font = font + self.TKCombo.configure(font=font) + self._dropdown_newfont = tkinter.font.Font(font=font) + self.ParentRowFrame.option_add("*TCombobox*Listbox*Font", self._dropdown_newfont) + + + # make tcl call to deal with colors for the drop-down formatting + try: + if self.BackgroundColor not in (None, COLOR_SYSTEM_DEFAULT) and \ + self.TextColor not in (None, COLOR_SYSTEM_DEFAULT): + self.Widget.tk.eval( + '[ttk::combobox::PopdownWindow {}].f.l configure -foreground {} -background {} -selectforeground {} -selectbackground {} -font {}'.format(self.Widget, self.TextColor, self.BackgroundColor, self.BackgroundColor, self.TextColor, self._dropdown_newfont)) + except Exception as e: + pass # going to let this one slide + + if visible is False: + self._pack_forget_save_settings() + # self.TKCombo.pack_forget() + elif visible is True: + self._pack_restore_settings() + # self.TKCombo.pack(padx=self.pad_used[0], pady=self.pad_used[1]) + if visible is not None: + self._visible = visible + if select is True: + self.TKCombo.select_range(0, tk.END) + elif select is False: + self.TKCombo.select_clear() + + + def get(self): + """ + Returns the current (right now) value of the Combo. DO NOT USE THIS AS THE NORMAL WAY OF READING A COMBO! + You should be using values from your call to window.read instead. Know what you're doing if you use it. + + :return: Returns the value of what is currently chosen + :rtype: Any | None + """ + try: + if self.TKCombo.current() == -1: # if the current value was not in the original list + value = self.TKCombo.get() # then get the value typed in by user + else: + value = self.Values[self.TKCombo.current()] # get value from original list given index + except: + value = None # only would happen if user closes window + return value + + Get = get + Update = update + + +# ------------------------- INPUT COMBO Element lazy functions ------------------------- # +InputCombo = Combo +DropDown = InputCombo +Drop = InputCombo +DD = Combo + + +# ---------------------------------------------------------------------- # +# Option Menu # +# ---------------------------------------------------------------------- # +class OptionMenu(Element): + """ + Option Menu is an Element available ONLY on the tkinter port of PySimpleGUI. It's is a widget that is unique + to tkinter. However, it looks much like a ComboBox. Instead of an arrow to click to pull down the list of + choices, another little graphic is shown on the widget to indicate where you click. After clicking to activate, + it looks like a Combo Box that you scroll to select a choice. + """ + + def __init__(self, values, default_value=None, size=(None, None), s=(None, None), disabled=False, enable_events=False, auto_size_text=None, expand_x=False, expand_y=False, + background_color=None, text_color=None, key=None, k=None, pad=None, p=None, tooltip=None, visible=True, metadata=None): + """ + :param values: Values to be displayed + :type values: List[Any] or Tuple[Any] + :param default_value: the value to choose by default + :type default_value: (Any) + :param size: (width, height) size in characters (wide), height is ignored and present to be consistent with other elements + :type size: (int, int) (width, UNUSED) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param disabled: control enabled / disabled + :type disabled: (bool) + :param enable_events: Turns on the element specific events. OptionMenu event is when a choice is made + :type enable_events: (bool) + :param auto_size_text: True if size of Element should match the contents of the items + :type auto_size_text: (bool) + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param key: Used with window.find_element and with return values to uniquely identify this element + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param tooltip: text that will appear when mouse hovers over this element + :type tooltip: (str) + :param visible: set visibility state of the element + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.Values = values + self.DefaultValue = default_value + self.Widget = self.TKOptionMenu = None # type: tk.OptionMenu + self.Disabled = disabled + bg = background_color if background_color else DEFAULT_INPUT_ELEMENTS_COLOR + fg = text_color if text_color is not None else DEFAULT_INPUT_TEXT_COLOR + key = key if key is not None else k + sz = size if size != (None, None) else s + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + self.ChangeSubmits = enable_events + + super().__init__(ELEM_TYPE_INPUT_OPTION_MENU, size=sz, auto_size_text=auto_size_text, background_color=bg, + text_color=fg, key=key, pad=pad, tooltip=tooltip, visible=visible, metadata=metadata) + + def update(self, value=None, values=None, disabled=None, visible=None, size=(None, None)): + """ + Changes some of the settings for the OptionMenu Element. Must call `Window.Read` or `Window.Finalize` prior + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param value: the value to choose by default + :type value: (Any) + :param values: Values to be displayed + :type values: List[Any] + :param disabled: disable or enable state of the element + :type disabled: (bool) + :param visible: control visibility of element + :type visible: (bool) + :param size: (width, height) size in characters (wide), height is ignored and present to be consistent with other elements + :type size: (int, int) (width, UNUSED) + """ + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in OptionMenu.update - The window was closed') + return + + if values is not None: + self.Values = values + self.TKOptionMenu['menu'].delete(0, 'end') + + # Insert list of new options (tk._setit hooks them up to var) + # self.TKStringVar.set(self.Values[0]) + for new_value in self.Values: + self.TKOptionMenu['menu'].add_command(label=new_value, command=tk._setit(self.TKStringVar, new_value)) + if value is None: + self.TKStringVar.set('') + + if size == (None, None): + max_line_len = max([len(str(l)) for l in self.Values]) if len(self.Values) else 0 + if self.AutoSizeText is False: + width = self.Size[0] + else: + width = max_line_len + 1 + self.TKOptionMenu.configure(width=width) + else: + self.TKOptionMenu.configure(width=size[0]) + + if value is not None: + self.DefaultValue = value + self.TKStringVar.set(value) + + if disabled is True: + self.TKOptionMenu['state'] = 'disabled' + elif disabled is False: + self.TKOptionMenu['state'] = 'normal' + self.Disabled = disabled if disabled is not None else self.Disabled + if visible is False: + self._pack_forget_save_settings() + # self.TKOptionMenu.pack_forget() + elif visible is True: + self._pack_restore_settings() + # self.TKOptionMenu.pack(padx=self.pad_used[0], pady=self.pad_used[1]) + if visible is not None: + self._visible = visible + + Update = update + + +# ------------------------- OPTION MENU Element lazy functions ------------------------- # +InputOptionMenu = OptionMenu + + +# ---------------------------------------------------------------------- # +# Listbox # +# ---------------------------------------------------------------------- # +class Listbox(Element): + """ + A List Box. Provide a list of values for the user to choose one or more of. Returns a list of selected rows + when a window.read() is executed. + """ + + def __init__(self, values, default_values=None, select_mode=None, change_submits=False, enable_events=False, + bind_return_key=False, size=(None, None), s=(None, None), disabled=False, justification=None, auto_size_text=None, font=None, no_scrollbar=False, + horizontal_scroll=False, setting=None, + background_color=None, text_color=None, highlight_background_color=None, highlight_text_color=None, + sbar_trough_color=None, sbar_background_color=None, sbar_arrow_color=None, sbar_width=None, sbar_arrow_width=None, sbar_frame_color=None, sbar_relief=None, + key=None, k=None, pad=None, p=None, tooltip=None, expand_x=False, expand_y=False, right_click_menu=None, visible=True, metadata=None): + """ + :param values: list of values to display. Can be any type including mixed types as long as they have __str__ method + :type values: List[Any] or Tuple[Any] + :param default_values: which values should be initially selected + :type default_values: List[Any] + :param select_mode: Select modes are used to determine if only 1 item can be selected or multiple and how they can be selected. Valid choices begin with "LISTBOX_SELECT_MODE_" and include: LISTBOX_SELECT_MODE_SINGLE LISTBOX_SELECT_MODE_MULTIPLE LISTBOX_SELECT_MODE_BROWSE LISTBOX_SELECT_MODE_EXTENDED + :type select_mode: (str) + :param change_submits: DO NOT USE. Only listed for backwards compat - Use enable_events instead + :type change_submits: (bool) + :param enable_events: Turns on the element specific events. Listbox generates events when an item is clicked + :type enable_events: (bool) + :param bind_return_key: If True, then the return key will cause a the Listbox to generate an event when return key is pressed + :type bind_return_key: (bool) + :param size: w=characters-wide, h=rows-high. If an int instead of a tuple is supplied, then height is auto-set to 1 + :type size: (int, int) | (int, None) | int + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param disabled: set disable state for element + :type disabled: (bool) + :param justification: justification for items in listbox. Valid choices - left, right, center. Default is left. NOTE - on some older versions of tkinter, not available + :type justification: (str) + :param auto_size_text: True if element should be the same size as the contents + :type auto_size_text: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param no_scrollbar: Controls if a scrollbar should be shown. If True, no scrollbar will be shown + :type no_scrollbar: (bool) + :param horizontal_scroll: Controls if a horizontal scrollbar should be shown. If True a horizontal scrollbar will be shown in addition to vertical + :type horizontal_scroll: (bool) + :param setting: If not None, then this element will be saved in a settings file using the key for the element + :type setting: (Any) + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param highlight_background_color: color of the background when an item is selected. Defaults to normal text color (a reverse look) + :type highlight_background_color: (str) + :param highlight_text_color: color of the text when an item is selected. Defaults to the normal background color (a rerverse look) + :type highlight_text_color: (str) + :param sbar_trough_color: Scrollbar color of the trough + :type sbar_trough_color: (str) + :param sbar_background_color: Scrollbar color of the background of the arrow buttons at the ends AND the color of the "thumb" (the thing you grab and slide). Switches to arrow color when mouse is over + :type sbar_background_color: (str) + :param sbar_arrow_color: Scrollbar color of the arrow at the ends of the scrollbar (it looks like a button). Switches to background color when mouse is over + :type sbar_arrow_color: (str) + :param sbar_width: Scrollbar width in pixels + :type sbar_width: (int) + :param sbar_arrow_width: Scrollbar width of the arrow on the scrollbar. It will potentially impact the overall width of the scrollbar + :type sbar_arrow_width: (int) + :param sbar_frame_color: Scrollbar Color of frame around scrollbar (available only on some ttk themes) + :type sbar_frame_color: (str) + :param sbar_relief: Scrollbar relief that will be used for the "thumb" of the scrollbar (the thing you grab that slides). Should be a constant that is defined at starting with "RELIEF_" - RELIEF_RAISED, RELIEF_SUNKEN, RELIEF_FLAT, RELIEF_RIDGE, RELIEF_GROOVE, RELIEF_SOLID + :type sbar_relief: (str) + :param key: Used with window.find_element and with return values to uniquely identify this element + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param visible: set visibility state of the element + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + if values is None: + _error_popup_with_traceback('Error in your Listbox definition - The values parameter cannot be None', 'Use an empty list if you want no values in your Listbox') + + self.Values = values + self.DefaultValues = default_values + self.TKListbox = None + self.ChangeSubmits = change_submits or enable_events + self.BindReturnKey = bind_return_key + self.Disabled = disabled + if select_mode == LISTBOX_SELECT_MODE_BROWSE: + self.SelectMode = SELECT_MODE_BROWSE + elif select_mode == LISTBOX_SELECT_MODE_EXTENDED: + self.SelectMode = SELECT_MODE_EXTENDED + elif select_mode == LISTBOX_SELECT_MODE_MULTIPLE: + self.SelectMode = SELECT_MODE_MULTIPLE + elif select_mode == LISTBOX_SELECT_MODE_SINGLE: + self.SelectMode = SELECT_MODE_SINGLE + else: + self.SelectMode = DEFAULT_LISTBOX_SELECT_MODE + bg = background_color if background_color is not None else theme_input_background_color() + fg = text_color if text_color is not None else theme_input_text_color() + self.HighlightBackgroundColor = highlight_background_color if highlight_background_color is not None else fg + self.HighlightTextColor = highlight_text_color if highlight_text_color is not None else bg + self.RightClickMenu = right_click_menu + self.vsb = None # type: tk.Scrollbar or None + self.hsb = None # type: tk.Scrollbar | None + self.TKListbox = self.Widget = None # type: tk.Listbox + self.element_frame = None # type: tk.Frame + self.NoScrollbar = no_scrollbar + self.HorizontalScroll = horizontal_scroll + key = key if key is not None else k + sz = size if size != (None, None) else s + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + self.justification = justification + if setting is not None: + self.setting = setting + self.DefaultValues = user_settings_get_entry(key, setting) + + + super().__init__(ELEM_TYPE_INPUT_LISTBOX, size=sz, auto_size_text=auto_size_text, font=font, + background_color=bg, text_color=fg, key=key, pad=pad, tooltip=tooltip, visible=visible, metadata=metadata, + sbar_trough_color=sbar_trough_color, sbar_background_color=sbar_background_color, sbar_arrow_color=sbar_arrow_color, sbar_width=sbar_width, + sbar_arrow_width=sbar_arrow_width, sbar_frame_color=sbar_frame_color, sbar_relief=sbar_relief) + + + def update(self, values=None, disabled=None, set_to_index=None, scroll_to_index=None, select_mode=None, visible=None): + """ + Changes some of the settings for the Listbox Element. Must call `Window.Read` or `Window.Finalize` prior + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param values: new list of choices to be shown to user + :type values: List[Any] + :param disabled: disable or enable state of the element + :type disabled: (bool) + :param set_to_index: highlights the item(s) indicated. If parm is an int one entry will be set. If is a list, then each entry in list is highlighted + :type set_to_index: int | list | tuple + :param scroll_to_index: scroll the listbox so that this index is the first shown + :type scroll_to_index: (int) + :param select_mode: changes the select mode according to tkinter's listbox widget + :type select_mode: (str) + :param visible: control visibility of element + :type visible: (bool) + """ + + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Listbox.update - The window was closed') + return + + if disabled is True: + self.TKListbox.configure(state='disabled') + elif disabled is False: + self.TKListbox.configure(state='normal') + self.Disabled = disabled if disabled is not None else self.Disabled + + if values is not None: + self.TKListbox.delete(0, 'end') + for item in list(values): + self.TKListbox.insert(tk.END, item) + # self.TKListbox.selection_set(0, 0) + self.Values = list(values) + if set_to_index is not None: + self.TKListbox.selection_clear(0, len(self.Values)) # clear all listbox selections + if type(set_to_index) in (tuple, list): + for i in set_to_index: + try: + self.TKListbox.selection_set(i, i) + except: + warnings.warn('* Listbox Update selection_set failed with index {}*'.format(set_to_index)) + else: + try: + self.TKListbox.selection_set(set_to_index, set_to_index) + except: + warnings.warn('* Listbox Update selection_set failed with index {}*'.format(set_to_index)) + if visible is False: + self._pack_forget_save_settings(self.element_frame) + elif visible is True: + self._pack_restore_settings(self.element_frame) + if scroll_to_index is not None and len(self.Values): + self.TKListbox.yview_moveto(scroll_to_index / len(self.Values)) + if select_mode is not None: + try: + self.TKListbox.config(selectmode=select_mode) + except: + print('Listbox.update error trying to change mode to: ', select_mode) + if visible is not None: + self._visible = visible + + def set_value(self, values): + """ + Set listbox highlighted choices + + :param values: new values to choose based on previously set values + :type values: List[Any] | Tuple[Any] + + """ + for index, item in enumerate(self.Values): + try: + if item in values: + self.TKListbox.selection_set(index) + else: + self.TKListbox.selection_clear(index) + except: + pass + self.DefaultValues = values + + def get_list_values(self): + # type: (Listbox) -> List[Any] + """ + Returns list of Values provided by the user in the user's format + + :return: List of values. Can be any / mixed types -> [] + :rtype: List[Any] + """ + return self.Values + + def get_indexes(self): + """ + Returns the items currently selected as a list of indexes + + :return: A list of offsets into values that is currently selected + :rtype: List[int] + """ + return self.TKListbox.curselection() + + def get(self): + """ + Returns the list of items currently selected in this listbox. It should be identical + to the value you would receive when performing a window.read() call. + + :return: The list of currently selected items. The actual items are returned, not the indexes + :rtype: List[Any] + """ + try: + items = self.TKListbox.curselection() + value = [self.Values[int(item)] for item in items] + except: + value = [] + return value + + + + + def select_index(self, index, highlight_text_color=None, highlight_background_color=None): + """ + Selects an index while providing capability to setting the selected color for the index to specific text/background color + + :param index: specifies which item to change. index starts at 0 and goes to length of values list minus one + :type index: (int) + :param highlight_text_color: color of the text when this item is selected. + :type highlight_text_color: (str) + :param highlight_background_color: color of the background when this item is selected + :type highlight_background_color: (str) + """ + + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Listbox.select_item - The window was closed') + return + + if index >= len(self.Values): + _error_popup_with_traceback('Index {} is out of range for Listbox.select_index. Max allowed index is {}.'.format(index, len(self.Values)-1)) + return + + self.TKListbox.selection_set(index, index) + + if highlight_text_color is not None: + self.widget.itemconfig(index, selectforeground=highlight_text_color) + if highlight_background_color is not None: + self.widget.itemconfig(index, selectbackground=highlight_background_color) + + + def set_index_color(self, index, text_color=None, background_color=None, highlight_text_color=None, highlight_background_color=None): + """ + Sets the color of a specific item without selecting it + + :param index: specifies which item to change. index starts at 0 and goes to length of values list minus one + :type index: (int) + :param text_color: color of the text for this item + :type text_color: (str) + :param background_color: color of the background for this item + :type background_color: (str) + :param highlight_text_color: color of the text when this item is selected. + :type highlight_text_color: (str) + :param highlight_background_color: color of the background when this item is selected + :type highlight_background_color: (str) + """ + + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Listbox.set_item_color - The window was closed') + return + + if index >= len(self.Values): + _error_popup_with_traceback('Index {} is out of range for Listbox.set_index_color. Max allowed index is {}.'.format(index, len(self.Values)-1)) + return + + if text_color is not None: + self.widget.itemconfig(index, fg=text_color) + if background_color is not None: + self.widget.itemconfig(index, bg=background_color) + if highlight_text_color is not None: + self.widget.itemconfig(index, selectforeground=highlight_text_color) + if highlight_background_color is not None: + self.widget.itemconfig(index, selectbackground=highlight_background_color) + + + + GetIndexes = get_indexes + GetListValues = get_list_values + SetValue = set_value + Update = update + + +LBox = Listbox +LB = Listbox + + +# ---------------------------------------------------------------------- # +# Radio # +# ---------------------------------------------------------------------- # +class Radio(Element): + """ + Radio Button Element - Used in a group of other Radio Elements to provide user with ability to select only + 1 choice in a list of choices. + """ + + def __init__(self, text, group_id, default=False, disabled=False, size=(None, None), s=(None, None), auto_size_text=None, setting=None, + background_color=None, text_color=None, circle_color=None, font=None, key=None, k=None, pad=None, p=None, tooltip=None, + change_submits=False, enable_events=False, right_click_menu=None, expand_x=False, expand_y=False, visible=True, metadata=None): + """ + :param text: Text to display next to button + :type text: (str) + :param group_id: Groups together multiple Radio Buttons. Any type works + :type group_id: (Any) + :param default: Set to True for the one element of the group you want initially selected + :type default: (bool) + :param disabled: set disable state + :type disabled: (bool) + :param size: (w, h) w=characters-wide, h=rows-high. If an int instead of a tuple is supplied, then height is auto-set to 1 + :type size: (int, int) | (None, None) | int + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_text: if True will size the element to match the length of the text + :type auto_size_text: (bool) + :param setting: If not None, then this element will be saved in a settings file using the key for the element + :type setting: (Any) + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param circle_color: color of background of the circle that has the dot selection indicator in it + :type circle_color: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param key: Used with window.find_element and with return values to uniquely identify this element + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param change_submits: DO NOT USE. Only listed for backwards compat - Use enable_events instead + :type change_submits: (bool) + :param enable_events: Turns on the element specific events. Radio Button events happen when an item is selected + :type enable_events: (bool) + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param visible: set visibility state of the element + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.InitialState = default + self.Text = text + self.Widget = self.TKRadio = None # type: tk.Radiobutton + self.GroupID = group_id + self.Value = None + self.Disabled = disabled + self.TextColor = text_color if text_color else theme_text_color() + self.RightClickMenu = right_click_menu + + if circle_color is None: + # ---- compute color of circle background --- + try: # something in here will fail if a color is not specified in Hex + text_hsl = _hex_to_hsl(self.TextColor) + background_hsl = _hex_to_hsl(background_color if background_color else theme_background_color()) + l_delta = abs(text_hsl[2] - background_hsl[2]) / 10 + if text_hsl[2] > background_hsl[2]: # if the text is "lighter" than the background then make background darker + bg_rbg = _hsl_to_rgb(background_hsl[0], background_hsl[1], background_hsl[2] - l_delta) + else: + bg_rbg = _hsl_to_rgb(background_hsl[0], background_hsl[1], background_hsl[2] + l_delta) + self.CircleBackgroundColor = rgb(*bg_rbg) + except: + self.CircleBackgroundColor = background_color if background_color else theme_background_color() + else: + self.CircleBackgroundColor = circle_color + self.ChangeSubmits = change_submits or enable_events + self.EncodedRadioValue = None + key = key if key is not None else k + sz = size if size != (None, None) else s + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + if setting is not None: + self.setting = bool(setting) + self.InitialState = user_settings_get_entry(key, self.setting) + + + + + super().__init__(ELEM_TYPE_INPUT_RADIO, size=sz, auto_size_text=auto_size_text, font=font, + background_color=background_color, text_color=self.TextColor, key=key, pad=pad, + tooltip=tooltip, visible=visible, metadata=metadata) + + def update(self, value=None, text=None, background_color=None, text_color=None, circle_color=None, disabled=None, visible=None): + """ + Changes some of the settings for the Radio Button Element. Must call `Window.read` or `Window.finalize` prior + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param value: if True change to selected and set others in group to unselected + :type value: (bool) + :param text: Text to display next to radio button + :type text: (str) + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text. Note this also changes the color of the selection dot + :type text_color: (str) + :param circle_color: color of background of the circle that has the dot selection indicator in it + :type circle_color: (str) + :param disabled: disable or enable state of the element + :type disabled: (bool) + :param visible: control visibility of element + :type visible: (bool) + """ + + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Radio.update - The window was closed') + return + + if value is not None: + try: + if value is True: + self.TKIntVar.set(self.EncodedRadioValue) + elif value is False: + if self.TKIntVar.get() == self.EncodedRadioValue: + self.TKIntVar.set(0) + except: + print('Error updating Radio') + self.InitialState = value + if text is not None: + self.Text = str(text) + self.TKRadio.configure(text=self.Text) + if background_color not in (None, COLOR_SYSTEM_DEFAULT): + self.TKRadio.configure(background=background_color) + self.BackgroundColor = background_color + if text_color not in (None, COLOR_SYSTEM_DEFAULT): + self.TKRadio.configure(fg=text_color) + self.TextColor = text_color + + if circle_color not in (None, COLOR_SYSTEM_DEFAULT): + self.CircleBackgroundColor = circle_color + self.TKRadio.configure(selectcolor=self.CircleBackgroundColor) # The background of the radio button + elif text_color or background_color: + if self.TextColor not in (None, COLOR_SYSTEM_DEFAULT) and self.BackgroundColor not in (None, COLOR_SYSTEM_DEFAULT) and self.TextColor.startswith( + '#') and self.BackgroundColor.startswith('#'): + # ---- compute color of circle background --- + text_hsl = _hex_to_hsl(self.TextColor) + background_hsl = _hex_to_hsl(self.BackgroundColor if self.BackgroundColor else theme_background_color()) + l_delta = abs(text_hsl[2] - background_hsl[2]) / 10 + if text_hsl[2] > background_hsl[2]: # if the text is "lighter" than the background then make background darker + bg_rbg = _hsl_to_rgb(background_hsl[0], background_hsl[1], background_hsl[2] - l_delta) + else: + bg_rbg = _hsl_to_rgb(background_hsl[0], background_hsl[1], background_hsl[2] + l_delta) + self.CircleBackgroundColor = rgb(*bg_rbg) + self.TKRadio.configure(selectcolor=self.CircleBackgroundColor) # The background of the checkbox + + if disabled is True: + self.TKRadio['state'] = 'disabled' + elif disabled is False: + self.TKRadio['state'] = 'normal' + self.Disabled = disabled if disabled is not None else self.Disabled + + if visible is False: + self._pack_forget_save_settings() + elif visible is True: + self._pack_restore_settings() + if visible is not None: + self._visible = visible + + def reset_group(self): + """ + Sets all Radio Buttons in the group to not selected + """ + self.TKIntVar.set(0) + + def get(self): + # type: (Radio) -> bool + """ + A snapshot of the value of Radio Button -> (bool) + + :return: True if this radio button is selected + :rtype: (bool) + """ + return self.TKIntVar.get() == self.EncodedRadioValue + + Get = get + ResetGroup = reset_group + Update = update + + +R = Radio +Rad = Radio + + +# ---------------------------------------------------------------------- # +# Checkbox # +# ---------------------------------------------------------------------- # +class Checkbox(Element): + """ + Checkbox Element - Displays a checkbox and text next to it + """ + + def __init__(self, text, default=False, size=(None, None), s=(None, None), auto_size_text=None, setting=None, font=None, background_color=None, text_color=None, checkbox_color=None, highlight_thickness=1, change_submits=False, enable_events=False, disabled=False, key=None, k=None, pad=None, p=None, tooltip=None, right_click_menu=None, expand_x=False, expand_y=False, visible=True, metadata=None): + """ + :param text: Text to display next to checkbox + :type text: (str) + :param default: Set to True if you want this checkbox initially checked + :type default: (bool) + :param size: (w, h) w=characters-wide, h=rows-high. If an int instead of a tuple is supplied, then height is auto-set to 1 + :type size: (int, int) | (None, None) | int + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_text: if True will size the element to match the length of the text + :type auto_size_text: (bool) + :param setting: If not None, then this element will be saved in a settings file using the key for the element + :type setting: (Any) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param checkbox_color: color of background of the box that has the check mark in it. The checkmark is the same color as the text + :type checkbox_color: (str) + :param highlight_thickness: thickness of border around checkbox when gets focus + :type highlight_thickness: (int) + :param change_submits: DO NOT USE. Only listed for backwards compat - Use enable_events instead + :type change_submits: (bool) + :param enable_events: Turns on the element specific events. Checkbox events happen when an item changes + :type enable_events: (bool) + :param disabled: set disable state + :type disabled: (bool) + :param key: Used with window.find_element and with return values to uniquely identify this element + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param visible: set visibility state of the element + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.Text = text + self.InitialState = bool(default) + self.Value = None + self.TKCheckbutton = self.Widget = None # type: tk.Checkbutton + self.Disabled = disabled + self.TextColor = text_color if text_color else theme_text_color() + self.RightClickMenu = right_click_menu + self.highlight_thickness = highlight_thickness + + # ---- compute color of circle background --- + if checkbox_color is None: + try: # something in here will fail if a color is not specified in Hex + text_hsl = _hex_to_hsl(self.TextColor) + background_hsl = _hex_to_hsl(background_color if background_color else theme_background_color()) + l_delta = abs(text_hsl[2] - background_hsl[2]) / 10 + if text_hsl[2] > background_hsl[2]: # if the text is "lighter" than the background then make background darker + bg_rbg = _hsl_to_rgb(background_hsl[0], background_hsl[1], background_hsl[2] - l_delta) + else: + bg_rbg = _hsl_to_rgb(background_hsl[0], background_hsl[1], background_hsl[2] + l_delta) + self.CheckboxBackgroundColor = rgb(*bg_rbg) + except: + self.CheckboxBackgroundColor = background_color if background_color else theme_background_color() + else: + self.CheckboxBackgroundColor = checkbox_color + self.ChangeSubmits = change_submits or enable_events + key = key if key is not None else k + sz = size if size != (None, None) else s + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + if setting is not None: + self.setting = bool(setting) + self.InitialState = user_settings_get_entry(key, self.setting) + + + super().__init__(ELEM_TYPE_INPUT_CHECKBOX, size=sz, auto_size_text=auto_size_text, font=font, + background_color=background_color, text_color=self.TextColor, key=key, pad=pad, + tooltip=tooltip, visible=visible, metadata=metadata) + + def get(self): + # type: (Checkbox) -> bool + """ + Return the current state of this checkbox + + :return: Current state of checkbox + :rtype: (bool) + """ + return self.TKIntVar.get() != 0 + + def update(self, value=None, text=None, background_color=None, text_color=None, checkbox_color=None, disabled=None, visible=None): + """ + Changes some of the settings for the Checkbox Element. Must call `Window.Read` or `Window.Finalize` prior. + Note that changing visibility may cause element to change locations when made visible after invisible + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param value: if True checks the checkbox, False clears it + :type value: (bool) + :param text: Text to display next to checkbox + :type text: (str) + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text. Note this also changes the color of the checkmark + :type text_color: (str) + :param disabled: disable or enable element + :type disabled: (bool) + :param visible: control visibility of element + :type visible: (bool) + """ + + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Checkbox.update - The window was closed') + return + + if value is not None: + value = bool(value) + try: + self.TKIntVar.set(value) + self.InitialState = value + except: + print('Checkbox update failed') + if disabled is True: + self.TKCheckbutton.configure(state='disabled') + elif disabled is False: + self.TKCheckbutton.configure(state='normal') + self.Disabled = disabled if disabled is not None else self.Disabled + + if text is not None: + self.Text = str(text) + self.TKCheckbutton.configure(text=self.Text) + if background_color not in (None, COLOR_SYSTEM_DEFAULT): + self.TKCheckbutton.configure(background=background_color) + self.BackgroundColor = background_color + if text_color not in (None, COLOR_SYSTEM_DEFAULT): + self.TKCheckbutton.configure(fg=text_color) + self.TextColor = text_color + # Color the checkbox itself + if checkbox_color not in (None, COLOR_SYSTEM_DEFAULT): + self.CheckboxBackgroundColor = checkbox_color + self.TKCheckbutton.configure(selectcolor=self.CheckboxBackgroundColor) # The background of the checkbox + elif text_color or background_color: + if self.CheckboxBackgroundColor is not None and self.TextColor is not None and self.BackgroundColor is not None and self.TextColor.startswith( + '#') and self.BackgroundColor.startswith('#'): + # ---- compute color of checkbox background --- + text_hsl = _hex_to_hsl(self.TextColor) + background_hsl = _hex_to_hsl(self.BackgroundColor if self.BackgroundColor else theme_background_color()) + l_delta = abs(text_hsl[2] - background_hsl[2]) / 10 + if text_hsl[2] > background_hsl[2]: # if the text is "lighter" than the background then make background darker + bg_rbg = _hsl_to_rgb(background_hsl[0], background_hsl[1], background_hsl[2] - l_delta) + else: + bg_rbg = _hsl_to_rgb(background_hsl[0], background_hsl[1], background_hsl[2] + l_delta) + self.CheckboxBackgroundColor = rgb(*bg_rbg) + self.TKCheckbutton.configure(selectcolor=self.CheckboxBackgroundColor) # The background of the checkbox + + if visible is False: + self._pack_forget_save_settings() + elif visible is True: + self._pack_restore_settings() + + if visible is not None: + self._visible = visible + + Get = get + Update = update + + +# ------------------------- CHECKBOX Element lazy functions ------------------------- # +CB = Checkbox +CBox = Checkbox +Check = Checkbox + + +# ---------------------------------------------------------------------- # +# Spin # +# ---------------------------------------------------------------------- # + +class Spin(Element): + """ + A spinner with up/down buttons and a single line of text. Choose 1 values from list + """ + + def __init__(self, values, initial_value=None, disabled=False, change_submits=False, enable_events=False, readonly=False, setting=None, + size=(None, None), s=(None, None), auto_size_text=None, bind_return_key=None, font=None, background_color=None, text_color=None, key=None, k=None, pad=None, + p=None, wrap=None, + tooltip=None, right_click_menu=None, expand_x=False, expand_y=False, visible=True, metadata=None): + """ + :param values: List of valid values + :type values: Tuple[Any] or List[Any] + :param initial_value: Initial item to show in window. Choose from list of values supplied + :type initial_value: (Any) + :param disabled: set disable state + :type disabled: (bool) + :param change_submits: DO NOT USE. Only listed for backwards compat - Use enable_events instead + :type change_submits: (bool) + :param enable_events: Turns on the element specific events. Spin events happen when an item changes + :type enable_events: (bool) + :param readonly: If True, then users cannot type in values. Only values from the values list are allowed. + :type readonly: (bool) + :param setting: If not None, then this element will be saved in a settings file using the key for the element + :type setting: (Any) + :param size: (w, h) w=characters-wide, h=rows-high. If an int instead of a tuple is supplied, then height is auto-set to 1 + :type size: (int, int) | (None, None) | int + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_text: if True will size the element to match the length of the text + :type auto_size_text: (bool) + :param bind_return_key: If True, then the return key will cause a the element to generate an event when return key is pressed + :type bind_return_key: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param key: Used with window.find_element and with return values to uniquely identify this element + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param wrap: Determines if the values should "Wrap". Default is False. If True, when reaching last value, will continue back to the first value. + :type wrap: (bool) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param visible: set visibility state of the element + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.Values = values + self.DefaultValue = initial_value + self.ChangeSubmits = change_submits or enable_events + self.TKSpinBox = self.Widget = None # type: tk.Spinbox + self.Disabled = disabled + self.Readonly = readonly + self.RightClickMenu = right_click_menu + self.BindReturnKey = bind_return_key + self.wrap = wrap + + bg = background_color if background_color else DEFAULT_INPUT_ELEMENTS_COLOR + fg = text_color if text_color is not None else DEFAULT_INPUT_TEXT_COLOR + key = key if key is not None else k + sz = size if size != (None, None) else s + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + + if setting is not None: + self.setting = setting + self.DefaultValue = user_settings_get_entry(key, setting) + + + super().__init__(ELEM_TYPE_INPUT_SPIN, size=sz, auto_size_text=auto_size_text, font=font, background_color=bg, text_color=fg, + key=key, pad=pad, tooltip=tooltip, visible=visible, metadata=metadata) + return + + def update(self, value=None, values=None, disabled=None, readonly=None, visible=None): + """ + Changes some of the settings for the Spin Element. Must call `Window.Read` or `Window.Finalize` prior + Note that the state can be in 3 states only.... enabled, disabled, readonly even + though more combinations are available. The easy way to remember is that if you + change the readonly parameter then you are enabling the element. + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param value: set the current value from list of choices + :type value: (Any) + :param values: set available choices + :type values: List[Any] + :param disabled: disable. Note disabled and readonly cannot be mixed. It must be one OR the other + :type disabled: (bool) + :param readonly: make element readonly. Note disabled and readonly cannot be mixed. It must be one OR the other + :type readonly: (bool) + :param visible: control visibility of element + :type visible: (bool) + """ + + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Spin.update - The window was closed') + return + + if values != None: + old_value = self.TKStringVar.get() + self.Values = values + self.TKSpinBox.configure(values=values) + self.TKStringVar.set(old_value) + if value is not None: + try: + self.TKStringVar.set(value) + self.DefaultValue = value + except: + pass + + if readonly is True: + self.Readonly = True + self.TKSpinBox['state'] = 'readonly' + elif readonly is False: + self.Readonly = False + self.TKSpinBox['state'] = 'normal' + if disabled is True: + self.TKSpinBox['state'] = 'disable' + elif disabled is False: + if self.Readonly: + self.TKSpinBox['state'] = 'readonly' + else: + self.TKSpinBox['state'] = 'normal' + self.Disabled = disabled if disabled is not None else self.Disabled + + if visible is False: + self._pack_forget_save_settings() + elif visible is True: + self._pack_restore_settings() + if visible is not None: + self._visible = visible + + def _SpinChangedHandler(self, event): + """ + Callback function. Used internally only. Called by tkinter when Spinbox Widget changes. Results in Window.Read() call returning + + :param event: passed in from tkinter + :type event: + """ + # first, get the results table built + if self.Key is not None: + self.ParentForm.LastButtonClicked = self.Key + else: + self.ParentForm.LastButtonClicked = '' + self.ParentForm.FormRemainedOpen = True + _exit_mainloop(self.ParentForm) + # if self.ParentForm.CurrentlyRunningMainloop: + # Window._window_that_exited = self.ParentForm + # self.ParentForm.TKroot.quit() # kick the users out of the mainloop + + + + + def set_ibeam_color(self, ibeam_color=None): + """ + Sets the color of the I-Beam that is used to "insert" characters. This is oftens called a "Cursor" by + many users. To keep from being confused with tkinter's definition of cursor (the mouse pointer), the term + ibeam is used in this case. + :param ibeam_color: color to set the "I-Beam" used to indicate where characters will be inserted + :type ibeam_color: (str) + """ + + if not self._widget_was_created(): + return + if ibeam_color is not None: + try: + self.Widget.config(insertbackground=ibeam_color) + except Exception as e: + _error_popup_with_traceback('Error setting I-Beam color in set_ibeam_color', + 'The element has a key:', self.Key, + 'The color passed in was:', ibeam_color) + + + + def get(self): + """ + Return the current chosen value showing in spinbox. + This value will be the same as what was provided as list of choices. If list items are ints, then the + item returned will be an int (not a string) + + :return: The currently visible entry + :rtype: (Any) + """ + value = self.TKStringVar.get() + for v in self.Values: + if str(v) == value: + value = v + break + return value + + Get = get + Update = update + + +Sp = Spin # type: Spin + + +# ---------------------------------------------------------------------- # +# Multiline # +# ---------------------------------------------------------------------- # +class Multiline(Element): + """ + Multiline Element - Display and/or read multiple lines of text. This is both an input and output element. + Other PySimpleGUI ports have a separate MultilineInput and MultilineOutput elements. May want to split this + one up in the future too. + """ + + def __init__(self, default_text='', enter_submits=False, disabled=False, autoscroll=False, autoscroll_only_at_bottom=False, border_width=None, + size=(None, None), s=(None, None), setting=None, auto_size_text=None, background_color=None, text_color=None, selected_text_color=None, selected_background_color=None, horizontal_scroll=False, change_submits=False, enable_events=False, do_not_clear=True, key=None, k=None, write_only=False, auto_refresh=False, reroute_stdout=False, reroute_stderr=False, reroute_cprint=False, echo_stdout_stderr=False, focus=False, font=None, pad=None, p=None, tooltip=None, justification=None, no_scrollbar=False, wrap_lines=None, sbar_trough_color=None, sbar_background_color=None, sbar_arrow_color=None, sbar_width=None, sbar_arrow_width=None, sbar_frame_color=None, sbar_relief=None, expand_x=False, expand_y=False, rstrip=True, right_click_menu=None, visible=True, metadata=None): + """ + :param default_text: Initial text to show + :type default_text: (Any) + :param enter_submits: if True, the Window.read call will return is enter key is pressed in this element + :type enter_submits: (bool) + :param disabled: set disable state + :type disabled: (bool) + :param autoscroll: If True the contents of the element will automatically scroll as more data added to the end + :type autoscroll: (bool) + :param autoscroll_only_at_bottom: If True the contents of the element will automatically scroll only if the scrollbar is at the bottom of the multiline + :type autoscroll_only_at_bottom: (bool) + :param border_width: width of border around element in pixels + :type border_width: (int) + :param size: (w, h) w=characters-wide, h=rows-high. If an int instead of a tuple is supplied, then height is auto-set to 1 + :type size: (int, int) | (None, None) | int | (None, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int | (None, int) + :param setting: If not None, then this element will be saved in a settings file using the key for the element + :type setting: (Any) + :param auto_size_text: if True will size the element to match the length of the text + :type auto_size_text: (bool) + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param selected_text_color: Color of text when it is selected (using mouse or control+A, etc) + :type selected_text_color: (str) + :param selected_background_color: Color of background when it is selected (using mouse or control+A, etc) + :type selected_background_color: (str) + :param horizontal_scroll: Controls if a horizontal scrollbar should be shown. If True a horizontal scrollbar will be shown in addition to vertical + :type horizontal_scroll: (bool) + :param change_submits: DO NOT USE. Only listed for backwards compat - Use enable_events instead + :type change_submits: (bool) + :param enable_events: If True then any key press that happens when the element has focus will generate an event. + :type enable_events: (bool) + :param do_not_clear: if False the element will be cleared any time the Window.read call returns + :type do_not_clear: (bool) + :param key: Used with window.find_element and with return values to uniquely identify this element to uniquely identify this element + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param write_only: If True then no entry will be added to the values dictionary when the window is read + :type write_only: bool + :param auto_refresh: If True then anytime the element is updated, the window will be refreshed so that the change is immediately displayed + :type auto_refresh: (bool) + :param reroute_stdout: If True then all output to stdout will be output to this element + :type reroute_stdout: (bool) + :param reroute_stderr: If True then all output to stderr will be output to this element + :type reroute_stderr: (bool) + :param reroute_cprint: If True your cprint calls will output to this element. It's the same as you calling cprint_set_output_destination + :type reroute_cprint: (bool) + :param echo_stdout_stderr: If True then output to stdout and stderr will be output to this element AND also to the normal console location + :type echo_stdout_stderr: (bool) + :param focus: if True initial focus will go to this element + :type focus: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param justification: text justification. left, right, center. Can use single characters l, r, c. + :type justification: (str) + :param no_scrollbar: If False then a vertical scrollbar will be shown (the default) + :type no_scrollbar: (bool) + :param wrap_lines: If True, the lines will be wrapped automatically. Other parms affect this setting, but this one will override them all. Default is it does nothing and uses previous settings for wrapping. + :type wrap_lines: (bool) + :param sbar_trough_color: Scrollbar color of the trough + :type sbar_trough_color: (str) + :param sbar_background_color: Scrollbar color of the background of the arrow buttons at the ends AND the color of the "thumb" (the thing you grab and slide). Switches to arrow color when mouse is over + :type sbar_background_color: (str) + :param sbar_arrow_color: Scrollbar color of the arrow at the ends of the scrollbar (it looks like a button). Switches to background color when mouse is over + :type sbar_arrow_color: (str) + :param sbar_width: Scrollbar width in pixels + :type sbar_width: (int) + :param sbar_arrow_width: Scrollbar width of the arrow on the scrollbar. It will potentially impact the overall width of the scrollbar + :type sbar_arrow_width: (int) + :param sbar_frame_color: Scrollbar Color of frame around scrollbar (available only on some ttk themes) + :type sbar_frame_color: (str) + :param sbar_relief: Scrollbar relief that will be used for the "thumb" of the scrollbar (the thing you grab that slides). Should be a constant that is defined at starting with "RELIEF_" - RELIEF_RAISED, RELIEF_SUNKEN, RELIEF_FLAT, RELIEF_RIDGE, RELIEF_GROOVE, RELIEF_SOLID + :type sbar_relief: (str) + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param rstrip: If True the value returned in will have whitespace stripped from the right side + :type rstrip: (bool) + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param visible: set visibility state of the element + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.DefaultText = str(default_text) + self.EnterSubmits = enter_submits + bg = background_color if background_color else DEFAULT_INPUT_ELEMENTS_COLOR + self.Focus = focus + self.do_not_clear = do_not_clear + fg = text_color if text_color is not None else DEFAULT_INPUT_TEXT_COLOR + fg = text_color if text_color is not None else DEFAULT_INPUT_TEXT_COLOR + self.selected_text_color = selected_text_color + self.selected_background_color = selected_background_color + self.Autoscroll = autoscroll + self.Disabled = disabled + self.ChangeSubmits = change_submits or enable_events + self.RightClickMenu = right_click_menu + self.BorderWidth = border_width if border_width is not None else DEFAULT_BORDER_WIDTH + self.TagCounter = 0 + self.TKText = self.Widget = None # type: tk.Text + self.element_frame = None # type: tk.Frame + self.HorizontalScroll = horizontal_scroll + self.tags = set() + self.WriteOnly = write_only + self.AutoRefresh = auto_refresh + key = key if key is not None else k + self.reroute_cprint = reroute_cprint + self.echo_stdout_stderr = echo_stdout_stderr + self.Justification = 'left' if justification is None else justification + self.justification_tag = self.just_center_tag = self.just_left_tag = self.just_right_tag = None + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + self.rstrip = rstrip + self.wrap_lines = wrap_lines + self.reroute_stdout = reroute_stdout + self.reroute_stderr = reroute_stderr + self.no_scrollbar = no_scrollbar + self.hscrollbar = None # The horizontal scrollbar + self.auto_scroll_only_at_bottom = autoscroll_only_at_bottom + sz = size if size != (None, None) else s + if setting is not None: + self.setting = str(setting) + self.DefaultText = user_settings_get_entry(key, self.setting) + + super().__init__(ELEM_TYPE_INPUT_MULTILINE, size=sz, auto_size_text=auto_size_text, background_color=bg, + text_color=fg, key=key, pad=pad, tooltip=tooltip, font=font or DEFAULT_FONT, visible=visible, metadata=metadata, + sbar_trough_color=sbar_trough_color, sbar_background_color=sbar_background_color, sbar_arrow_color=sbar_arrow_color, sbar_width=sbar_width, sbar_arrow_width=sbar_arrow_width, sbar_frame_color=sbar_frame_color, sbar_relief=sbar_relief) + return + + def update(self, value=None, disabled=None, append=False, font=None, text_color=None, background_color=None, text_color_for_value=None, + background_color_for_value=None, visible=None, autoscroll=None, justification=None, font_for_value=None): + """ + Changes some of the settings for the Multiline Element. Must call `Window.read` or set finalize=True when creating window. + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param value: new text to display + :type value: (Any) + :param disabled: disable or enable state of the element + :type disabled: (bool) + :param append: if True then new value will be added onto the end of the current value. if False then contents will be replaced. + :type append: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike for the entire element + :type font: (str or (str, int[, str]) or None) + :param text_color: color of the text + :type text_color: (str) + :param background_color: color of background + :type background_color: (str) + :param text_color_for_value: color of the new text being added (the value paramter) + :type text_color_for_value: (str) + :param background_color_for_value: color of the new background of the text being added (the value paramter) + :type background_color_for_value: (str) + :param visible: set visibility state of the element + :type visible: (bool) + :param autoscroll: if True then contents of element are scrolled down when new text is added to the end + :type autoscroll: (bool) + :param justification: text justification. left, right, center. Can use single characters l, r, c. Sets only for this value, not entire element + :type justification: (str) + :param font_for_value: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike for the value being updated + :type font_for_value: str | (str, int) + """ + + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + # _error_popup_with_traceback('Error in Multiline.update - The window was closed') + return + + if autoscroll is not None: + self.Autoscroll = autoscroll + current_scroll_position = self.TKText.yview()[1] + + if justification is not None: + if justification.startswith('l'): + just_tag = 'left' + if justification.startswith('r'): + just_tag = 'right' + if justification.startswith('c'): + just_tag = 'center' + else: + just_tag = self.justification_tag + + starting_point = self.Widget.index(tk.INSERT) + tag = None + if value is not None: + value = str(value) + if background_color_for_value is not None or text_color_for_value is not None or font_for_value is not None: + try: + tag = 'Multiline(' + str(text_color_for_value) + ',' + str(background_color_for_value) + ',' + str(font_for_value) + ')' + if tag not in self.tags: + self.tags.add(tag) + if background_color_for_value is not None: + self.TKText.tag_configure(tag, background=background_color_for_value) + if text_color_for_value is not None: + self.TKText.tag_configure(tag, foreground=text_color_for_value) + if font_for_value is not None: + self.TKText.tag_configure(tag, font=font_for_value) + except Exception as e: + print('* Multiline.update - bad color likely specified:', e) + if self.Disabled: + self.TKText.configure(state='normal') + try: + if not append: + self.TKText.delete('1.0', tk.END) + if tag is not None or just_tag is not None: + self.TKText.insert(tk.END, value, (just_tag, tag)) + else: + self.TKText.insert(tk.END, value) + + # self.TKText.tag_add(just_tag, starting_point, starting_point) + + except Exception as e: + print("* Error setting multiline *", e) + if self.Disabled: + self.TKText.configure(state='disabled') + self.DefaultText = value + + # if self.Autoscroll: + # self.TKText.see(tk.END) + if self.Autoscroll: + if not self.auto_scroll_only_at_bottom or (self.auto_scroll_only_at_bottom and current_scroll_position == 1.0): + self.TKText.see(tk.END) + if disabled is True: + self.TKText.configure(state='disabled') + elif disabled is False: + self.TKText.configure(state='normal') + self.Disabled = disabled if disabled is not None else self.Disabled + + if background_color not in (None, COLOR_SYSTEM_DEFAULT): + self.TKText.configure(background=background_color) + if text_color not in (None, COLOR_SYSTEM_DEFAULT): + self.TKText.configure(fg=text_color) + if font is not None: + self.TKText.configure(font=font) + + if visible is False: + self._pack_forget_save_settings(alternate_widget=self.element_frame) + # self.element_frame.pack_forget() + elif visible is True: + self._pack_restore_settings(alternate_widget=self.element_frame) + # self.element_frame.pack(padx=self.pad_used[0], pady=self.pad_used[1]) + + if self.AutoRefresh and self.ParentForm: + try: # in case the window was destroyed + self.ParentForm.refresh() + except: + pass + if visible is not None: + self._visible = visible + + def get(self): + """ + Return current contents of the Multiline Element + + :return: current contents of the Multiline Element (used as an input type of Multiline + :rtype: (str) + """ + value = str(self.TKText.get(1.0, tk.END)) + if self.rstrip: + return value.rstrip() + return value + + def print(self, *args, end=None, sep=None, text_color=None, background_color=None, justification=None, font=None, colors=None, t=None, b=None, c=None, + autoscroll=True): + """ + Print like Python normally prints except route the output to a multiline element and also add colors if desired + + colors -(str, str) or str. A combined text/background color definition in a single parameter + + There are also "aliases" for text_color, background_color and colors (t, b, c) + t - An alias for color of the text (makes for shorter calls) + b - An alias for the background_color parameter + c - (str, str) - "shorthand" way of specifying color. (foreground, backgrouned) + c - str - can also be a string of the format "foreground on background" ("white on red") + + With the aliases it's possible to write the same print but in more compact ways: + cprint('This will print white text on red background', c=('white', 'red')) + cprint('This will print white text on red background', c='white on red') + cprint('This will print white text on red background', text_color='white', background_color='red') + cprint('This will print white text on red background', t='white', b='red') + + :param args: The arguments to print + :type args: (Any) + :param end: The end char to use just like print uses + :type end: (str) + :param sep: The separation character like print uses + :type sep: (str) + :param text_color: The color of the text + :type text_color: (str) + :param background_color: The background color of the line + :type background_color: (str) + :param justification: text justification. left, right, center. Can use single characters l, r, c. Sets only for this value, not entire element + :type justification: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike for the args being printed + :type font: (str or (str, int[, str]) or None) + :param colors: Either a tuple or a string that has both the text and background colors. Or just the text color + :type colors: (str) or (str, str) + :param t: Color of the text + :type t: (str) + :param b: The background color of the line + :type b: (str) + :param c: Either a tuple or a string that has both the text and background colors or just tex color (same as the color parm) + :type c: (str) or (str, str) + :param autoscroll: If True the contents of the element will automatically scroll as more data added to the end + :type autoscroll: (bool) + """ + + kw_text_color = text_color or t + kw_background_color = background_color or b + dual_color = colors or c + try: + if isinstance(dual_color, tuple): + kw_text_color = dual_color[0] + kw_background_color = dual_color[1] + elif isinstance(dual_color, str): + if ' on ' in dual_color: # if has "on" in the string, then have both text and background + kw_text_color = dual_color.split(' on ')[0] + kw_background_color = dual_color.split(' on ')[1] + else: # if no "on" then assume the color string is just the text color + kw_text_color = dual_color + except Exception as e: + print('* multiline print warning * you messed up with color formatting', e) + + _print_to_element(self, *args, end=end, sep=sep, text_color=kw_text_color, background_color=kw_background_color, justification=justification, + autoscroll=autoscroll, font=font) + + def reroute_stdout_to_here(self): + """ + Sends stdout (prints) to this element + """ + # if nothing on the stack, then need to save the very first stdout + if len(Window._rerouted_stdout_stack) == 0: + Window._original_stdout = sys.stdout + Window._rerouted_stdout_stack.insert(0, (self.ParentForm, self)) + sys.stdout = self + + def reroute_stderr_to_here(self): + """ + Sends stderr to this element + """ + if len(Window._rerouted_stderr_stack) == 0: + Window._original_stderr = sys.stderr + Window._rerouted_stderr_stack.insert(0, (self.ParentForm, self)) + sys.stderr = self + + def restore_stdout(self): + """ + Restore a previously re-reouted stdout back to the original destination + """ + Window._restore_stdout() + + def restore_stderr(self): + """ + Restore a previously re-reouted stderr back to the original destination + """ + Window._restore_stderr() + + def write(self, txt): + """ + Called by Python (not tkinter?) when stdout or stderr wants to write + + :param txt: text of output + :type txt: (str) + """ + try: + self.update(txt, append=True) + # if need to echo, then send the same text to the destinatoin that isn't thesame as this one + if self.echo_stdout_stderr: + if sys.stdout != self: + sys.stdout.write(txt) + elif sys.stderr != self: + sys.stderr.write(txt) + except: + pass + + def flush(self): + """ + Flush parameter was passed into a print statement. + For now doing nothing. Not sure what action should be taken to ensure a flush happens regardless. + """ + # try: + # self.previous_stdout.flush() + # except: + # pass + return + + + + + + def set_ibeam_color(self, ibeam_color=None): + """ + Sets the color of the I-Beam that is used to "insert" characters. This is oftens called a "Cursor" by + many users. To keep from being confused with tkinter's definition of cursor (the mouse pointer), the term + ibeam is used in this case. + :param ibeam_color: color to set the "I-Beam" used to indicate where characters will be inserted + :type ibeam_color: (str) + """ + + if not self._widget_was_created(): + return + if ibeam_color is not None: + try: + self.Widget.config(insertbackground=ibeam_color) + except Exception as e: + _error_popup_with_traceback('Error setting I-Beam color in set_ibeam_color', + 'The element has a key:', self.Key, + 'The color passed in was:', ibeam_color) + + + + def __del__(self): + """ + AT ONE TIME --- If this Widget is deleted, be sure and restore the old stdout, stderr + Now the restore is done differently. Do not want to RELY on Python to call this method + in order for stdout and stderr to be restored. Instead explicit restores are called. + + """ + + return + + Get = get + Update = update + + +ML = Multiline +MLine = Multiline + + +# ---------------------------------------------------------------------- # +# Text # +# ---------------------------------------------------------------------- # +class Text(Element): + """ + Text - Display some text in the window. Usually this means a single line of text. However, the text can also be multiple lines. If multi-lined there are no scroll bars. + """ + + def __init__(self, text='', size=(None, None), s=(None, None), auto_size_text=None, click_submits=False, enable_events=False, relief=None, font=None, + text_color=None, background_color=None, colors=(None,None), border_width=None, justification=None, pad=None, p=None, key=None, k=None, right_click_menu=None, expand_x=False, + expand_y=False, grab=None, tooltip=None, visible=True, metadata=None): + """ + :param text: The text to display. Can include /n to achieve multiple lines. Will convert (optional) parameter into a string + :type text: Any + :param size: (w, h) w=characters-wide, h=rows-high. If an int instead of a tuple is supplied, then height is auto-set to 1 + :type size: (int, int) | (int, None) | (None, None) | (int, ) | int + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (int, None) | (None, None) | (int, ) | int + :param auto_size_text: if True size of the Text Element will be sized to fit the string provided in 'text' parm + :type auto_size_text: (bool) + :param click_submits: DO NOT USE. Only listed for backwards compat - Use enable_events instead + :type click_submits: (bool) + :param enable_events: Turns on the element specific events. Text events happen when the text is clicked + :type enable_events: (bool) + :param relief: relief style around the text. Values are same as progress meter relief values. Should be a constant that is defined at starting with RELIEF - RELIEF_RAISED, RELIEF_SUNKEN, RELIEF_FLAT, RELIEF_RIDGE, RELIEF_GROOVE, RELIEF_SOLID + :type relief: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param text_color: color of the text + :type text_color: (str) + :param background_color: color of background + :type background_color: (str) + :param colors: Optional quick specification of both text and background colors in 1 parameter. If a single color specified, then assumed to be text_color + :type colors: (str) or (str, str) + :param border_width: number of pixels for the border (if using a relief) + :type border_width: (int) + :param justification: how string should be aligned within space provided by size. Valid choices = `left`, `right`, `center` + :type justification: (str) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: Used with window.find_element and with return values to uniquely identify this element to uniquely identify this element + :type key: str or int or tuple or object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param grab: If True can grab this element and move the window around. Default is False + :type grab: (bool) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param visible: set visibility state of the element + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.DisplayText = str(text) + tc = text_color if text_color else DEFAULT_TEXT_COLOR + self.Justification = justification + self.Relief = relief + self.ClickSubmits = click_submits or enable_events + if background_color is None: + bg = DEFAULT_TEXT_ELEMENT_BACKGROUND_COLOR + else: + bg = background_color + + if colors != (None, None): + dual_colors = _simplified_dual_color_to_tuple(colors) + if dual_colors[0] is None and dual_colors[1] is not None: # if first entry is None, then use second as text color + tc = dual_colors[1] + else: + tc = dual_colors[0] + bg = dual_colors[1] + self.TextColor = tc + self.RightClickMenu = right_click_menu + self.TKRightClickMenu = None + self.BorderWidth = border_width + self.Grab = grab + key = key if key is not None else k + sz = size if size != (None, None) else s + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + + super().__init__(ELEM_TYPE_TEXT, auto_size_text=auto_size_text, size=sz, background_color=bg, font=font if font else DEFAULT_FONT, + text_color=self.TextColor, pad=pad, key=key, tooltip=tooltip, visible=visible, metadata=metadata) + + def update(self, value=None, background_color=None, text_color=None, font=None, visible=None): + """ + Changes some of the settings for the Text Element. Must call `Window.Read` or `Window.Finalize` prior + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param value: new text to show + :type value: (Any) + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param visible: set visibility state of the element + :type visible: (bool) + """ + + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Text.update - The window was closed') + return + + if value is not None: + self.DisplayText = str(value) + self.TKStringVar.set(str(value)) + if background_color not in (None, COLOR_SYSTEM_DEFAULT): + self.TKText.configure(background=background_color) + if text_color not in (None, COLOR_SYSTEM_DEFAULT): + self.TKText.configure(fg=text_color) + if font is not None: + self.TKText.configure(font=font) + if visible is False: + self._pack_forget_save_settings() + # self.TKText.pack_forget() + elif visible is True: + self._pack_restore_settings() + # self.TKText.pack(padx=self.pad_used[0], pady=self.pad_used[1]) + if visible is not None: + self._visible = visible + + def get(self): + """ + Gets the current value of the displayed text + + :return: The current value + :rtype: (str) + """ + try: + text = self.TKStringVar.get() + except: + text = '' + return text + + @classmethod + def fonts_installed_list(cls): + """ + Returns a list of strings that tkinter reports as the installed fonts + + :return: List of the installed font names + :rtype: List[str] + """ + # A window must exist before can perform this operation. Create the hidden master root if it doesn't exist + _get_hidden_master_root() + + fonts = list(tkinter.font.families()) + fonts.sort() + + return fonts + + @classmethod + def char_width_in_pixels(cls, font, character='W'): + """ + Get the with of the character "W" in pixels for the font being passed in or + the character of your choosing if "W" is not a good representative character. + Cannot be used until a window has been created. + If an error occurs, 0 will be returned + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike, to be measured + :type font: (str or (str, int[, str]) or None) + :param character: specifies a SINGLE CHARACTER character to measure + :type character: (str) + :return: Width in pixels of "A" + :rtype: (int) + """ + # A window must exist before can perform this operation. Create the hidden master root if it doesn't exist + _get_hidden_master_root() + + size = 0 + try: + size = tkinter.font.Font(font=font).measure(character) # single character width + except Exception as e: + _error_popup_with_traceback('Exception retrieving char width in pixels', e) + + return size + + @classmethod + def char_height_in_pixels(cls, font): + """ + Get the height of a string if using the supplied font in pixels. + Cannot be used until a window has been created. + If an error occurs, 0 will be returned + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike, to be measured + :type font: (str or (str, int[, str]) or None) + :return: Height in pixels of "A" + :rtype: (int) + """ + + # A window must exist before can perform this operation. Create the hidden master root if it doesn't exist + _get_hidden_master_root() + + size = 0 + try: + size = tkinter.font.Font(font=font).metrics('linespace') + except Exception as e: + _error_popup_with_traceback('Exception retrieving char height in pixels', e) + + return size + + @classmethod + def string_width_in_pixels(cls, font, string): + """ + Get the with of the supplied string in pixels for the font being passed in. + If an error occurs, 0 will be returned + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike, to be measured + :type font: (str or (str, int[, str]) or None) + :param string: the string to measure + :type string: str + :return: Width in pixels of string + :rtype: (int) + """ + + # A window must exist before can perform this operation. Create the hidden master root if it doesn't exist + _get_hidden_master_root() + + size = 0 + try: + size = tkinter.font.Font(font=font).measure(string) # string's width + except Exception as e: + _error_popup_with_traceback('Exception retrieving string width in pixels', e) + + return size + + def _print_to_element(self, *args, end=None, sep=None, text_color=None, background_color=None, autoscroll=None, justification=None, font=None, append=None): + """ + Print like Python normally prints except route the output to a multiline element and also add colors if desired + + :param multiline_element: The multiline element to be output to + :type multiline_element: (Multiline) + :param args: The arguments to print + :type args: List[Any] + :param end: The end char to use just like print uses + :type end: (str) + :param sep: The separation character like print uses + :type sep: (str) + :param text_color: color of the text + :type text_color: (str) + :param background_color: The background color of the line + :type background_color: (str) + :param autoscroll: If True (the default), the element will scroll to bottom after updating + :type autoscroll: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike for the value being updated + :type font: str | (str, int) + """ + end_str = str(end) if end is not None else '\n' + sep_str = str(sep) if sep is not None else ' ' + + outstring = '' + num_args = len(args) + for i, arg in enumerate(args): + outstring += str(arg) + if i != num_args - 1: + outstring += sep_str + outstring += end_str + if append: + outstring = self.get() + outstring + + self.update(outstring, text_color=text_color, background_color=background_color, font=font) + + try: # if the element is set to autorefresh, then refresh the parent window + if self.AutoRefresh: + self.ParentForm.refresh() + except: + pass + + def print(self, *args, end=None, sep=None, text_color=None, background_color=None, justification=None, font=None, colors=None, t=None, b=None, c=None, autoscroll=True, + append=True): + """ + Print like Python normally prints except route the output to a multiline element and also add colors if desired + + colors -(str, str) or str. A combined text/background color definition in a single parameter + + There are also "aliases" for text_color, background_color and colors (t, b, c) + t - An alias for color of the text (makes for shorter calls) + b - An alias for the background_color parameter + c - (str, str) - "shorthand" way of specifying color. (foreground, backgrouned) + c - str - can also be a string of the format "foreground on background" ("white on red") + + With the aliases it's possible to write the same print but in more compact ways: + cprint('This will print white text on red background', c=('white', 'red')) + cprint('This will print white text on red background', c='white on red') + cprint('This will print white text on red background', text_color='white', background_color='red') + cprint('This will print white text on red background', t='white', b='red') + + :param args: The arguments to print + :type args: (Any) + :param end: The end char to use just like print uses + :type end: (str) + :param sep: The separation character like print uses + :type sep: (str) + :param text_color: The color of the text + :type text_color: (str) + :param background_color: The background color of the line + :type background_color: (str) + :param justification: text justification. left, right, center. Can use single characters l, r, c. Sets only for this value, not entire element + :type justification: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike for the args being printed + :type font: (str or (str, int[, str]) or None) + :param colors: Either a tuple or a string that has both the text and background colors. Or just the text color + :type colors: (str) or (str, str) + :param t: Color of the text + :type t: (str) + :param b: The background color of the line + :type b: (str) + :param c: Either a tuple or a string that has both the text and background colors or just tex color (same as the color parm) + :type c: (str) or (str, str) + :param autoscroll: If True the contents of the element will automatically scroll as more data added to the end + :type autoscroll: (bool) + """ + + kw_text_color = text_color or t + kw_background_color = background_color or b + dual_color = colors or c + try: + if isinstance(dual_color, tuple): + kw_text_color = dual_color[0] + kw_background_color = dual_color[1] + elif isinstance(dual_color, str): + if ' on ' in dual_color: # if has "on" in the string, then have both text and background + kw_text_color = dual_color.split(' on ')[0] + kw_background_color = dual_color.split(' on ')[1] + else: # if no "on" then assume the color string is just the text color + kw_text_color = dual_color + except Exception as e: + print('* multiline print warning * you messed up with color formatting', e) + + self._print_to_element(*args, end=end, sep=sep, text_color=kw_text_color, background_color=kw_background_color, justification=justification, autoscroll=autoscroll, + font=font, append=append) + + Get = get + Update = update + + +# ------------------------- Text Element lazy functions ------------------------- # + +Txt = Text # type: Text +T = Text # type: Text + + +# ---------------------------------------------------------------------- # +# StatusBar # +# ---------------------------------------------------------------------- # +class StatusBar(Element): + """ + A StatusBar Element creates the sunken text-filled strip at the bottom. Many Windows programs have this line + """ + + def __init__(self, text, size=(None, None), s=(None, None), auto_size_text=None, click_submits=None, enable_events=False, + relief=RELIEF_SUNKEN, font=None, text_color=None, background_color=None, justification=None, pad=None, p=None, + key=None, k=None, right_click_menu=None, expand_x=False, expand_y=False, tooltip=None, visible=True, metadata=None): + """ + :param text: Text that is to be displayed in the widget + :type text: (str) + :param size: (w, h) w=characters-wide, h=rows-high. If an int instead of a tuple is supplied, then height is auto-set to 1 + :type size: (int, int) | (int, None) | int + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_text: True if size should fit the text length + :type auto_size_text: (bool) + :param click_submits: DO NOT USE. Only listed for backwards compat - Use enable_events instead + :type click_submits: (bool) + :param enable_events: Turns on the element specific events. StatusBar events occur when the bar is clicked + :type enable_events: (bool) + :param relief: relief style. Values are same as progress meter relief values. Can be a constant or a string: `RELIEF_RAISED RELIEF_SUNKEN RELIEF_FLAT RELIEF_RIDGE RELIEF_GROOVE RELIEF_SOLID` + :type relief: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param text_color: color of the text + :type text_color: (str) + :param background_color: color of background + :type background_color: (str) + :param justification: how string should be aligned within space provided by size. Valid choices = `left`, `right`, `center` + :type justification: (str) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: Used with window.find_element and with return values to uniquely identify this element to uniquely identify this element + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param visible: set visibility state of the element + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.DisplayText = text + self.TextColor = text_color if text_color else DEFAULT_TEXT_COLOR + self.Justification = justification + self.Relief = relief + self.ClickSubmits = click_submits or enable_events + if background_color is None: + bg = DEFAULT_TEXT_ELEMENT_BACKGROUND_COLOR + else: + bg = background_color + self.TKText = self.Widget = None # type: tk.Label + key = key if key is not None else k + self.RightClickMenu = right_click_menu + sz = size if size != (None, None) else s + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + + super().__init__(ELEM_TYPE_STATUSBAR, size=sz, auto_size_text=auto_size_text, background_color=bg, + font=font or DEFAULT_FONT, text_color=self.TextColor, pad=pad, key=key, tooltip=tooltip, + visible=visible, metadata=metadata) + return + + def update(self, value=None, background_color=None, text_color=None, font=None, visible=None): + """ + Changes some of the settings for the Status Bar Element. Must call `Window.Read` or `Window.Finalize` prior + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param value: new text to show + :type value: (str) + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param visible: set visibility state of the element + :type visible: (bool) + """ + + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in StatusBar.update - The window was closed') + return + + if value is not None: + self.DisplayText = value + stringvar = self.TKStringVar + stringvar.set(value) + if background_color not in (None, COLOR_SYSTEM_DEFAULT): + self.TKText.configure(background=background_color) + if text_color not in (None, COLOR_SYSTEM_DEFAULT): + self.TKText.configure(fg=text_color) + if font is not None: + self.TKText.configure(font=font) + if visible is False: + self._pack_forget_save_settings() + # self.TKText.pack_forget() + elif visible is True: + self._pack_restore_settings() + # self.TKText.pack(padx=self.pad_used[0], pady=self.pad_used[1]) + if visible is not None: + self._visible = visible + + Update = update + + +SBar = StatusBar + + +# ---------------------------------------------------------------------- # +# TKProgressBar # +# Emulate the TK ProgressBar using canvas and rectangles +# ---------------------------------------------------------------------- # + +class TKProgressBar(): + uniqueness_counter = 0 + + def __init__(self, root, max, length=400, width=DEFAULT_PROGRESS_BAR_SIZE[1], ttk_theme=DEFAULT_TTK_THEME, style_name='', + relief=DEFAULT_PROGRESS_BAR_RELIEF, border_width=DEFAULT_PROGRESS_BAR_BORDER_WIDTH, + orientation='horizontal', BarColor=(None, None), key=None): + """ + :param root: The root window bar is to be shown in + :type root: tk.Tk | tk.TopLevel + :param max: Maximum value the bar will be measuring + :type max: (int) + :param length: length in pixels of the bar + :type length: (int) + :param width: width in pixels of the bar + :type width: (int) + :param style_name: Progress bar style to use. Set in the packer function + :type style_name: (str) + :param ttk_theme: Progress bar style defined as one of these 'default', 'winnative', 'clam', 'alt', 'classic', 'vista', 'xpnative' + :type ttk_theme: (str) + :param relief: relief style. Values are same as progress meter relief values. Can be a constant or a string: `RELIEF_RAISED RELIEF_SUNKEN RELIEF_FLAT RELIEF_RIDGE RELIEF_GROOVE RELIEF_SOLID` (Default value = DEFAULT_PROGRESS_BAR_RELIEF) + :type relief: (str) + :param border_width: The amount of pixels that go around the outside of the bar + :type border_width: (int) + :param orientation: 'horizontal' or 'vertical' ('h' or 'v' work) (Default value = 'vertical') + :type orientation: (str) + :param BarColor: The 2 colors that make up a progress bar. One is the background, the other is the bar + :type BarColor: (str, str) + :param key: Used with window.find_element and with return values to uniquely identify this element to uniquely identify this element + :type key: str | int | tuple | object + """ + + self.Length = length + self.Width = width + self.Max = max + self.Orientation = orientation + self.Count = None + self.PriorCount = 0 + self.style_name = style_name + + TKProgressBar.uniqueness_counter += 1 + + if orientation.lower().startswith('h'): + s = ttk.Style() + _change_ttk_theme(s, ttk_theme) + + # self.style_name = str(key) + str(TKProgressBar.uniqueness_counter) + "my.Horizontal.TProgressbar" + if BarColor != COLOR_SYSTEM_DEFAULT and BarColor[0] != COLOR_SYSTEM_DEFAULT: + s.configure(self.style_name, background=BarColor[0], troughcolor=BarColor[1], + troughrelief=relief, borderwidth=border_width, thickness=width) + else: + s.configure(self.style_name, troughrelief=relief, borderwidth=border_width, thickness=width) + + self.TKProgressBarForReal = ttk.Progressbar(root, maximum=self.Max, style=self.style_name, length=length, orient=tk.HORIZONTAL, mode='determinate') + else: + s = ttk.Style() + _change_ttk_theme(s, ttk_theme) + # self.style_name = str(key) + str(TKProgressBar.uniqueness_counter) + "my.Vertical.TProgressbar" + if BarColor != COLOR_SYSTEM_DEFAULT and BarColor[0] != COLOR_SYSTEM_DEFAULT: + + s.configure(self.style_name, background=BarColor[0], + troughcolor=BarColor[1], troughrelief=relief, borderwidth=border_width, thickness=width) + else: + s.configure(self.style_name, troughrelief=relief, borderwidth=border_width, thickness=width) + + self.TKProgressBarForReal = ttk.Progressbar(root, maximum=self.Max, style=self.style_name, length=length, orient=tk.VERTICAL, mode='determinate') + + def Update(self, count=None, max=None): + """ + Update the current value of the bar and/or update the maximum value the bar can reach + :param count: current value + :type count: (int) + :param max: the maximum value + :type max: (int) + """ + if max is not None: + self.Max = max + try: + self.TKProgressBarForReal.config(maximum=max) + except: + return False + if count is not None: + try: + self.TKProgressBarForReal['value'] = count + except: + return False + return True + + +# ---------------------------------------------------------------------- # +# Output # +# Routes stdout, stderr to a scrolled window # +# ---------------------------------------------------------------------- # +class Output(Multiline): + """ + Output Element - a multi-lined text area to where stdout, stderr, cprint are rerouted. + + The Output Element is now based on the Multiline Element. When you make an Output Element, you're + creating a Multiline Element with some specific settings set: + auto_refresh = True + auto_scroll = True + reroute_stdout = True + reroute_stderr = True + reroute_cprint = True + write_only = True + + If you choose to use a Multiline element to replace an Output element, be sure an turn on the write_only paramter in the Multiline + so that an item is not included in the values dictionary on every window.read call + """ + + def __init__(self, size=(None, None), s=(None, None), background_color=None, text_color=None, pad=None, p=None, autoscroll_only_at_bottom=False, echo_stdout_stderr=False, font=None, tooltip=None, + key=None, k=None, right_click_menu=None, expand_x=False, expand_y=False, visible=True, metadata=None, wrap_lines=None, horizontal_scroll=None, + sbar_trough_color=None, sbar_background_color=None, sbar_arrow_color=None, sbar_width=None, sbar_arrow_width=None, sbar_frame_color=None, sbar_relief=None): + """ + :param size: (w, h) w=characters-wide, h=rows-high. If an int instead of a tuple is supplied, then height is auto-set to 1 + :type size: (int, int) | (None, None) | int + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param autoscroll_only_at_bottom: If True the contents of the element will automatically scroll only if the scrollbar is at the bottom of the multiline + :type autoscroll_only_at_bottom: (bool) + :param echo_stdout_stderr: If True then output to stdout will be output to this element AND also to the normal console location + :type echo_stdout_stderr: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param key: Used with window.find_element and with return values to uniquely identify this element to uniquely identify this element + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param visible: set visibility state of the element + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + :param wrap_lines: If True, the lines will be wrapped automatically. Other parms affect this setting, but this one will override them all. Default is it does nothing and uses previous settings for wrapping. + :type wrap_lines: (bool) + :param horizontal_scroll: Controls if a horizontal scrollbar should be shown. If True, then line wrapping will be off by default + :type horizontal_scroll: (bool) + :param sbar_trough_color: Scrollbar color of the trough + :type sbar_trough_color: (str) + :param sbar_background_color: Scrollbar color of the background of the arrow buttons at the ends AND the color of the "thumb" (the thing you grab and slide). Switches to arrow color when mouse is over + :type sbar_background_color: (str) + :param sbar_arrow_color: Scrollbar color of the arrow at the ends of the scrollbar (it looks like a button). Switches to background color when mouse is over + :type sbar_arrow_color: (str) + :param sbar_width: Scrollbar width in pixels + :type sbar_width: (int) + :param sbar_arrow_width: Scrollbar width of the arrow on the scrollbar. It will potentially impact the overall width of the scrollbar + :type sbar_arrow_width: (int) + :param sbar_frame_color: Scrollbar Color of frame around scrollbar (available only on some ttk themes) + :type sbar_frame_color: (str) + :param sbar_relief: Scrollbar relief that will be used for the "thumb" of the scrollbar (the thing you grab that slides). Should be a constant that is defined at starting with "RELIEF_" - RELIEF_RAISED, RELIEF_SUNKEN, RELIEF_FLAT, RELIEF_RIDGE, RELIEF_GROOVE, RELIEF_SOLID + :type sbar_relief: (str) + """ + + + super().__init__(size=size, s=s, background_color=background_color, autoscroll_only_at_bottom=autoscroll_only_at_bottom, text_color=text_color, pad=pad, p=p, echo_stdout_stderr=echo_stdout_stderr, font=font, tooltip=tooltip, wrap_lines=wrap_lines, horizontal_scroll=horizontal_scroll, key=key, k=k, right_click_menu=right_click_menu, write_only=True, reroute_stdout=True, reroute_stderr=True, reroute_cprint=True, autoscroll=True, auto_refresh=True, expand_x=expand_x, expand_y=expand_y, visible=visible, metadata=metadata, sbar_trough_color=sbar_trough_color, sbar_background_color=sbar_background_color, sbar_arrow_color=sbar_arrow_color, sbar_width=sbar_width, sbar_arrow_width=sbar_arrow_width, sbar_frame_color=sbar_frame_color, sbar_relief=sbar_relief) + + + +# ---------------------------------------------------------------------- # +# Button Class # +# ---------------------------------------------------------------------- # +class Button(Element): + """ + Button Element - Defines all possible buttons. The shortcuts such as Submit, FileBrowse, ... each create a Button + """ + + def __init__(self, button_text='', button_type=BUTTON_TYPE_READ_FORM, target=(None, None), tooltip=None, + file_types=FILE_TYPES_ALL_FILES, initial_folder=None, default_extension='', disabled=False, change_submits=False, + enable_events=False, image_filename=None, image_data=None, image_size=(None, None), + image_subsample=None, image_zoom=None, image_source=None, border_width=None, size=(None, None), s=(None, None), auto_size_button=None, button_color=None, + disabled_button_color=None, + highlight_colors=None, mouseover_colors=(None, None), use_ttk_buttons=None, font=None, bind_return_key=False, focus=False, pad=None, p=None, key=None, + k=None, right_click_menu=None, expand_x=False, expand_y=False, visible=True, metadata=None): + """ + :param button_text: Text to be displayed on the button + :type button_text: (str) + :param button_type: You should NOT be setting this directly. ONLY the shortcut functions set this + :type button_type: (int) + :param target: key or (row,col) target for the button. Note that -1 for column means 1 element to the left of this one. The constant ThisRow is used to indicate the current row. The Button itself is a valid target for some types of button + :type target: str | (int, int) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param file_types: the filetypes that will be used to match files. To indicate all files: (("ALL Files", "*.* *"),). + :type file_types: Tuple[(str, str), ...] + :param initial_folder: starting path for folders and files + :type initial_folder: (str) + :param default_extension: If no extension entered by user, add this to filename (only used in saveas dialogs) + :type default_extension: (str) + :param disabled: If True button will be created disabled. If BUTTON_DISABLED_MEANS_IGNORE then the button will be ignored rather than disabled using tkinter + :type disabled: (bool | str) + :param change_submits: DO NOT USE. Only listed for backwards compat - Use enable_events instead + :type change_submits: (bool) + :param enable_events: Turns on the element specific events. If this button is a target, should it generate an event when filled in + :type enable_events: (bool) + :param image_source: Image to place on button. Use INSTEAD of the image_filename and image_data. Unifies these into 1 easier to use parm + :type image_source: (str | bytes) + :param image_filename: image filename if there is a button image. GIFs and PNGs only. + :type image_filename: (str) + :param image_data: Raw or Base64 representation of the image to put on button. Choose either filename or data + :type image_data: bytes | str + :param image_size: Size of the image in pixels (width, height) + :type image_size: (int, int) + :param image_subsample: amount to reduce the size of the image. Divides the size by this number. 2=1/2, 3=1/3, 4=1/4, etc + :type image_subsample: (int) + :param image_zoom: amount to increase the size of the image. 2=twice size, 3=3 times, etc + :type image_zoom: (int) + :param border_width: width of border around button in pixels + :type border_width: (int) + :param size: (w, h) w=characters-wide, h=rows-high. If an int instead of a tuple is supplied, then height is auto-set to 1 + :type size: (int | None, int | None) | (None, None) | int + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int | None, int | None) | (None, None) | int + :param auto_size_button: if True the button size is sized to fit the text + :type auto_size_button: (bool) + :param button_color: Color of button. default is from theme or the window. Easy to remember which is which if you say "ON" between colors. "red" on "green". Normally a tuple, but can be a simplified-button-color-string "foreground on background". Can be a single color if want to set only the background. + :type button_color: (str, str) | str + :param disabled_button_color: colors to use when button is disabled (text, background). Use None for a color if don't want to change. Only ttk buttons support both text and background colors. tk buttons only support changing text color + :type disabled_button_color: (str, str) | str + :param highlight_colors: colors to use when button has focus (has focus, does not have focus). None will use colors based on theme. Only used by Linux and only for non-TTK button + :type highlight_colors: (str, str) + :param mouseover_colors: Important difference between Linux & Windows! Linux - Colors when mouse moved over button. Windows - colors when button is pressed. The default is to switch the text and background colors (an inverse effect) + :type mouseover_colors: (str, str) | str + :param use_ttk_buttons: True = use ttk buttons. False = do not use ttk buttons. None (Default) = use ttk buttons only if on a Mac and not with button images + :type use_ttk_buttons: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param bind_return_key: If True then pressing the return key in an Input or Multiline Element will cause this button to appear to be clicked (generates event with this button's key + :type bind_return_key: (bool) + :param focus: if True, initial focus will be put on this button + :type focus: (bool) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: Used with window.find_element and with return values to uniquely identify this element to uniquely identify this element + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param visible: set visibility state of the element + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.AutoSizeButton = auto_size_button + self.BType = button_type + if file_types is not None and len(file_types) == 2 and isinstance(file_types[0], str) and isinstance(file_types[1], str): + warnings.warn('file_types parameter not correctly specified. This parameter is a LIST of TUPLES. You have passed (str,str) rather than ((str, str),). Fixing it for you this time.\nchanging {} to {}\nPlease correct your code'.format(file_types, ((file_types[0], file_types[1]),)), UserWarning) + file_types = ((file_types[0], file_types[1]),) + self.FileTypes = file_types + self.Widget = self.TKButton = None # type: tk.Button + self.Target = target + self.ButtonText = str(button_text) + self.RightClickMenu = right_click_menu + self.ButtonColor = button_color_to_tuple(button_color) + + self.DisabledButtonColor = button_color_to_tuple(disabled_button_color) if disabled_button_color is not None else (None, None) + if image_source is not None: + if isinstance(image_source, bytes): + image_data = image_source + elif isinstance(image_source, str): + image_filename = image_source + self.ImageFilename = image_filename + self.ImageData = image_data + self.ImageSize = image_size + self.ImageSubsample = image_subsample + self.zoom = int(image_zoom) if image_zoom is not None else None + self.UserData = None + self.BorderWidth = border_width if border_width is not None else DEFAULT_BORDER_WIDTH + self.BindReturnKey = bind_return_key + self.Focus = focus + self.calendar_default_date_M_D_Y = (None, None, None) + self.calendar_close_when_chosen = False + self.calendar_locale = None + self.calendar_format = None + self.calendar_location = (None, None) + self.calendar_no_titlebar = True + self.calendar_begin_at_sunday_plus = 0 + self.calendar_month_names = None + self.calendar_day_abbreviations = None + self.calendar_title = '' + self.calendar_selection = '' + self.default_button = None + self.InitialFolder = initial_folder + self.DefaultExtension = default_extension + self.Disabled = disabled + self.ChangeSubmits = change_submits or enable_events + self.UseTtkButtons = use_ttk_buttons + self._files_delimiter = BROWSE_FILES_DELIMITER # used by the file browse button. used when multiple files are selected by user + if use_ttk_buttons is None and running_mac(): + self.UseTtkButtons = True + # if image_filename or image_data: + # self.UseTtkButtons = False # if an image is to be displayed, then force the button to not be a TTK Button + if key is None and k is None: + _key = self.ButtonText + if DEFAULT_USE_BUTTON_SHORTCUTS is True: + pos = _key.find(MENU_SHORTCUT_CHARACTER) + if pos != -1: + if pos < len(MENU_SHORTCUT_CHARACTER) or _key[pos - len(MENU_SHORTCUT_CHARACTER)] != "\\": + _key = _key[:pos] + _key[pos + len(MENU_SHORTCUT_CHARACTER):] + else: + _key = _key.replace('\\'+MENU_SHORTCUT_CHARACTER, MENU_SHORTCUT_CHARACTER) + else: + _key = key if key is not None else k + if highlight_colors is not None: + self.HighlightColors = highlight_colors + else: + self.HighlightColors = self._compute_highlight_colors() + + if mouseover_colors != (None, None): + self.MouseOverColors = button_color_to_tuple(mouseover_colors) + elif button_color != None: + self.MouseOverColors = (self.ButtonColor[1], self.ButtonColor[0]) + else: + self.MouseOverColors = (theme_button_color()[1], theme_button_color()[0]) + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + + sz = size if size != (None, None) else s + super().__init__(ELEM_TYPE_BUTTON, size=sz, font=font, pad=pad, key=_key, tooltip=tooltip, visible=visible, metadata=metadata) + return + + def _compute_highlight_colors(self): + """ + Determines the color to use to indicate the button has focus. This setting is only used by Linux. + :return: Pair of colors. (Highlight, Highlight Background) + :rtype: (str, str) + """ + highlight_color = highlight_background = COLOR_SYSTEM_DEFAULT + if self.ButtonColor != COLOR_SYSTEM_DEFAULT and theme_background_color() != COLOR_SYSTEM_DEFAULT: + highlight_background = theme_background_color() + if self.ButtonColor != COLOR_SYSTEM_DEFAULT and self.ButtonColor[0] != COLOR_SYSTEM_DEFAULT: + if self.ButtonColor[0] != theme_background_color(): + highlight_color = self.ButtonColor[0] + else: + highlight_color = 'red' + return (highlight_color, highlight_background) + + # Realtime button release callback + + def ButtonReleaseCallBack(self, parm): + """ + Not a user callable function. Called by tkinter when a "realtime" button is released + + :param parm: the event info from tkinter + :type parm: + + """ + self.LastButtonClickedWasRealtime = False + self.ParentForm.LastButtonClicked = None + + # Realtime button callback + def ButtonPressCallBack(self, parm): + """ + Not a user callable method. Callback called by tkinter when a "realtime" button is pressed + + :param parm: Event info passed in by tkinter + :type parm: + + """ + self.ParentForm.LastButtonClickedWasRealtime = True + if self.Key is not None: + self.ParentForm.LastButtonClicked = self.Key + else: + self.ParentForm.LastButtonClicked = self.ButtonText + # if self.ParentForm.CurrentlyRunningMainloop: + # Window._window_that_exited = self.ParentForm + # self.ParentForm.TKroot.quit() # kick out of loop if read was called + _exit_mainloop(self.ParentForm) + + def _find_target(self): + target = self.Target + target_element = None + + if target[0] == ThisRow: + target = [self.Position[0], target[1]] + if target[1] < 0: + target[1] = self.Position[1] + target[1] + strvar = None + should_submit_window = False + if target == (None, None): + strvar = self.TKStringVar + else: + # Need a try-block because if the target is not hashable, the "in" test will raise exception + try: + if target in self.ParentForm.AllKeysDict: + target_element = self.ParentForm.AllKeysDict[target] + except: + pass + # if target not found or the above try got exception, then keep looking.... + if target_element is None: + if not isinstance(target, str): + if target[0] < 0: + target = [self.Position[0] + target[0], target[1]] + target_element = self.ParentContainer._GetElementAtLocation(target) + else: + target_element = self.ParentForm.find_element(target) + try: + strvar = target_element.TKStringVar + except: + pass + try: + if target_element.ChangeSubmits: + should_submit_window = True + except: + pass + return target_element, strvar, should_submit_window + + # ------- Button Callback ------- # + def ButtonCallBack(self): + """ + Not user callable! Called by tkinter when a button is clicked. This is where all the fun begins! + """ + + if self.Disabled == BUTTON_DISABLED_MEANS_IGNORE: + return + target_element, strvar, should_submit_window = self._find_target() + + filetypes = FILE_TYPES_ALL_FILES if self.FileTypes is None else self.FileTypes + + if self.BType == BUTTON_TYPE_BROWSE_FOLDER: + if running_mac(): # macs don't like seeing the parent window (go firgure) + folder_name = tk.filedialog.askdirectory(initialdir=self.InitialFolder) # show the 'get folder' dialog box + else: + folder_name = tk.filedialog.askdirectory(initialdir=self.InitialFolder, parent=self.ParentForm.TKroot) # show the 'get folder' dialog box + if folder_name: + try: + strvar.set(folder_name) + self.TKStringVar.set(folder_name) + except: + pass + else: # if "cancel" button clicked, don't generate an event + should_submit_window = False + elif self.BType == BUTTON_TYPE_BROWSE_FILE: + if running_mac(): + # Workaround for the "*.*" issue on Mac + is_all = [(x, y) for (x, y) in filetypes if all(ch in '* .' for ch in y)] + if not len(set(filetypes)) > 1 and (len(is_all) != 0 or filetypes == FILE_TYPES_ALL_FILES): + file_name = tk.filedialog.askopenfilename(initialdir=self.InitialFolder) + else: + file_name = tk.filedialog.askopenfilename(initialdir=self.InitialFolder, filetypes=filetypes) # show the 'get file' dialog box + # elif _mac_allow_filetypes(): + # file_name = tk.filedialog.askopenfilename(initialdir=self.InitialFolder, filetypes=filetypes) # show the 'get file' dialog box + # else: + # file_name = tk.filedialog.askopenfilename(initialdir=self.InitialFolder) # show the 'get file' dialog box + else: + file_name = tk.filedialog.askopenfilename(filetypes=filetypes, initialdir=self.InitialFolder, parent=self.ParentForm.TKroot) # show the 'get file' dialog box + + if file_name: + strvar.set(file_name) + self.TKStringVar.set(file_name) + else: # if "cancel" button clicked, don't generate an event + should_submit_window = False + elif self.BType == BUTTON_TYPE_COLOR_CHOOSER: + color = tk.colorchooser.askcolor(parent=self.ParentForm.TKroot, color=self.default_color) # show the 'get file' dialog box + color = color[1] # save only the #RRGGBB portion + if color is not None: + strvar.set(color) + self.TKStringVar.set(color) + elif self.BType == BUTTON_TYPE_BROWSE_FILES: + if running_mac(): + # Workaround for the "*.*" issue on Mac + is_all = [(x, y) for (x, y) in filetypes if all(ch in '* .' for ch in y)] + if not len(set(filetypes)) > 1 and (len(is_all) != 0 or filetypes == FILE_TYPES_ALL_FILES): + file_name = tk.filedialog.askopenfilenames(initialdir=self.InitialFolder) + else: + file_name = tk.filedialog.askopenfilenames(filetypes=filetypes, initialdir=self.InitialFolder) + else: + file_name = tk.filedialog.askopenfilenames(filetypes=filetypes, initialdir=self.InitialFolder, parent=self.ParentForm.TKroot) + + if file_name: + file_name = self._files_delimiter.join(file_name) # normally a ';' + strvar.set(file_name) + self.TKStringVar.set(file_name) + else: # if "cancel" button clicked, don't generate an event + should_submit_window = False + elif self.BType == BUTTON_TYPE_SAVEAS_FILE: + # show the 'get file' dialog box + if running_mac(): + # Workaround for the "*.*" issue on Mac + is_all = [(x, y) for (x, y) in filetypes if all(ch in '* .' for ch in y)] + if not len(set(filetypes)) > 1 and (len(is_all) != 0 or filetypes == FILE_TYPES_ALL_FILES): + file_name = tk.filedialog.asksaveasfilename(defaultextension=self.DefaultExtension, initialdir=self.InitialFolder) + else: + file_name = tk.filedialog.asksaveasfilename(filetypes=filetypes, defaultextension=self.DefaultExtension, initialdir=self.InitialFolder) + else: + file_name = tk.filedialog.asksaveasfilename(filetypes=filetypes, defaultextension=self.DefaultExtension, initialdir=self.InitialFolder, + parent=self.ParentForm.TKroot) + + if file_name: + strvar.set(file_name) + self.TKStringVar.set(file_name) + else: # if "cancel" button clicked, don't generate an event + should_submit_window = False + elif self.BType == BUTTON_TYPE_CLOSES_WIN: # this is a return type button so GET RESULTS and destroy window + # first, get the results table built + # modify the Results table in the parent FlexForm object + if self.Key is not None: + self.ParentForm.LastButtonClicked = self.Key + else: + self.ParentForm.LastButtonClicked = self.ButtonText + self.ParentForm.FormRemainedOpen = False + self.ParentForm._Close() + _exit_mainloop(self.ParentForm) + + if self.ParentForm.NonBlocking: + self.ParentForm.TKroot.destroy() + Window._DecrementOpenCount() + elif self.BType == BUTTON_TYPE_READ_FORM: # LEAVE THE WINDOW OPEN!! DO NOT CLOSE + # This is a PLAIN BUTTON + # first, get the results table built + # modify the Results table in the parent FlexForm object + if self.Key is not None: + self.ParentForm.LastButtonClicked = self.Key + else: + self.ParentForm.LastButtonClicked = self.ButtonText + self.ParentForm.FormRemainedOpen = True + _exit_mainloop(self.ParentForm) + elif self.BType == BUTTON_TYPE_CLOSES_WIN_ONLY: # special kind of button that does not exit main loop + self.ParentForm._Close(without_event=True) + self.ParentForm.TKroot.destroy() # close the window with tkinter + Window._DecrementOpenCount() + elif self.BType == BUTTON_TYPE_CALENDAR_CHOOSER: # this is a return type button so GET RESULTS and destroy window + # ------------ new chooser code ------------- + self.ParentForm.LastButtonClicked = self.Key # key should have been generated already if not set by user + self.ParentForm.FormRemainedOpen = True + should_submit_window = False + _exit_mainloop(self.ParentForm) + + if should_submit_window: + self.ParentForm.LastButtonClicked = target_element.Key + self.ParentForm.FormRemainedOpen = True + _exit_mainloop(self.ParentForm) + + return + + def update(self, text=None, button_color=(None, None), disabled=None, image_source=None, image_data=None, image_filename=None, + visible=None, image_subsample=None, image_zoom=None, disabled_button_color=(None, None), image_size=None): + """ + Changes some of the settings for the Button Element. Must call `Window.Read` or `Window.Finalize` prior + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param text: sets button text + :type text: (str) + :param button_color: Color of button. default is from theme or the window. Easy to remember which is which if you say "ON" between colors. "red" on "green". Normally a tuple, but can be a simplified-button-color-string "foreground on background". Can be a single color if want to set only the background. + :type button_color: (str, str) | str + :param disabled: True/False to enable/disable at the GUI level. Use BUTTON_DISABLED_MEANS_IGNORE to ignore clicks (won't change colors) + :type disabled: (bool | str) + :param image_source: Image to place on button. Use INSTEAD of the image_filename and image_data. Unifies these into 1 easier to use parm + :type image_source: (str | bytes) + :param image_data: Raw or Base64 representation of the image to put on button. Choose either filename or data + :type image_data: bytes | str + :param image_filename: image filename if there is a button image. GIFs and PNGs only. + :type image_filename: (str) + :param disabled_button_color: colors to use when button is disabled (text, background). Use None for a color if don't want to change. Only ttk buttons support both text and background colors. tk buttons only support changing text color + :type disabled_button_color: (str, str) + :param visible: control visibility of element + :type visible: (bool) + :param image_subsample: amount to reduce the size of the image. Divides the size by this number. 2=1/2, 3=1/3, 4=1/4, etc + :type image_subsample: (int) + :param image_zoom: amount to increase the size of the image. 2=twice size, 3=3 times, etc + :type image_zoom: (int) + :param image_size: Size of the image in pixels (width, height) + :type image_size: (int, int) + """ + + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Button.update - The window was closed') + return + + if image_source is not None: + if isinstance(image_source, bytes): + image_data = image_source + elif isinstance(image_source, str): + image_filename = image_source + + if self.UseTtkButtons: + style_name = self.ttk_style_name # created when made initial window (in the pack) + # style_name = str(self.Key) + 'custombutton.TButton' + button_style = ttk.Style() + if text is not None: + btext = text + if DEFAULT_USE_BUTTON_SHORTCUTS is True: + pos = btext.find(MENU_SHORTCUT_CHARACTER) + if pos != -1: + if pos < len(MENU_SHORTCUT_CHARACTER) or btext[pos - len(MENU_SHORTCUT_CHARACTER)] != "\\": + btext = btext[:pos] + btext[pos + len(MENU_SHORTCUT_CHARACTER):] + else: + btext = btext.replace('\\'+MENU_SHORTCUT_CHARACTER, MENU_SHORTCUT_CHARACTER) + pos = -1 + if pos != -1: + self.TKButton.config(underline=pos) + self.TKButton.configure(text=btext) + self.ButtonText = text + if button_color != (None, None) and button_color != COLOR_SYSTEM_DEFAULT: + bc = button_color_to_tuple(button_color, self.ButtonColor) + # if isinstance(button_color, str): + # try: + # button_color = button_color.split(' on ') + # except Exception as e: + # print('** Error in formatting your button color **', button_color, e) + if self.UseTtkButtons: + if bc[0] not in (None, COLOR_SYSTEM_DEFAULT): + button_style.configure(style_name, foreground=bc[0]) + if bc[1] not in (None, COLOR_SYSTEM_DEFAULT): + button_style.configure(style_name, background=bc[1]) + else: + if bc[0] not in (None, COLOR_SYSTEM_DEFAULT): + self.TKButton.config(foreground=bc[0], activebackground=bc[0]) + if bc[1] not in (None, COLOR_SYSTEM_DEFAULT): + self.TKButton.config(background=bc[1], activeforeground=bc[1]) + self.ButtonColor = bc + if disabled is True: + self.TKButton['state'] = 'disabled' + elif disabled is False: + self.TKButton['state'] = 'normal' + elif disabled == BUTTON_DISABLED_MEANS_IGNORE: + self.TKButton['state'] = 'normal' + self.Disabled = disabled if disabled is not None else self.Disabled + + if image_data is not None: + image = tk.PhotoImage(data=image_data) + if image_subsample: + image = image.subsample(image_subsample) + if image_zoom is not None: + image = image.zoom(int(image_zoom)) + if image_size is not None: + width, height = image_size + else: + width, height = image.width(), image.height() + if self.UseTtkButtons: + button_style.configure(style_name, image=image, width=width, height=height) + else: + self.TKButton.config(image=image, width=width, height=height) + self.TKButton.image = image + if image_filename is not None: + image = tk.PhotoImage(file=image_filename) + if image_subsample: + image = image.subsample(image_subsample) + if image_zoom is not None: + image = image.zoom(int(image_zoom)) + if image_size is not None: + width, height = image_size + else: + width, height = image.width(), image.height() + if self.UseTtkButtons: + button_style.configure(style_name, image=image, width=width, height=height) + else: + self.TKButton.config(highlightthickness=0, image=image, width=width, height=height) + self.TKButton.image = image + if visible is False: + self._pack_forget_save_settings() + elif visible is True: + self._pack_restore_settings() + if disabled_button_color != (None, None) and disabled_button_color != COLOR_SYSTEM_DEFAULT: + if not self.UseTtkButtons: + self.TKButton['disabledforeground'] = disabled_button_color[0] + else: + if disabled_button_color[0] is not None: + button_style.map(style_name, foreground=[('disabled', disabled_button_color[0])]) + if disabled_button_color[1] is not None: + button_style.map(style_name, background=[('disabled', disabled_button_color[1])]) + self.DisabledButtonColor = (disabled_button_color[0] if disabled_button_color[0] is not None else self.DisabledButtonColor[0], + disabled_button_color[1] if disabled_button_color[1] is not None else self.DisabledButtonColor[1]) + + if visible is not None: + self._visible = visible + + def get_text(self): + """ + Returns the current text shown on a button + + :return: The text currently displayed on the button + :rtype: (str) + """ + return self.ButtonText + + def click(self): + """ + Generates a click of the button as if the user clicked the button + Calls the tkinter invoke method for the button + """ + try: + self.TKButton.invoke() + except: + print('Exception clicking button') + + Click = click + GetText = get_text + Update = update + + +# ------------------------- Button lazy functions ------------------------- # +B = Button +Btn = Button + + +# ---------------------------------------------------------------------- # +# ButtonMenu Class # +# ---------------------------------------------------------------------- # +class ButtonMenu(Element): + """ + The Button Menu Element. Creates a button that when clicked will show a menu similar to right click menu + """ + + def __init__(self, button_text, menu_def, tooltip=None, disabled=False, image_source=None, + image_filename=None, image_data=None, image_size=(None, None), image_subsample=None, image_zoom=None, border_width=None, + size=(None, None), s=(None, None), auto_size_button=None, button_color=None, text_color=None, background_color=None, disabled_text_color=None, + font=None, item_font=None, pad=None, p=None, expand_x=False, expand_y=False, key=None, k=None, tearoff=False, visible=True, + metadata=None): + """ + :param button_text: Text to be displayed on the button + :type button_text: (str) + :param menu_def: A list of lists of Menu items to show when this element is clicked. See docs for format as they are the same for all menu types + :type menu_def: List[List[str]] + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param disabled: If True button will be created disabled + :type disabled: (bool) + :param image_source: Image to place on button. Use INSTEAD of the image_filename and image_data. Unifies these into 1 easier to use parm + :type image_source: (str | bytes) + :param image_filename: image filename if there is a button image. GIFs and PNGs only. + :type image_filename: (str) + :param image_data: Raw or Base64 representation of the image to put on button. Choose either filename or data + :type image_data: bytes | str + :param image_size: Size of the image in pixels (width, height) + :type image_size: (int, int) + :param image_subsample: amount to reduce the size of the image. Divides the size by this number. 2=1/2, 3=1/3, 4=1/4, etc + :type image_subsample: (int) + :param image_zoom: amount to increase the size of the image. 2=twice size, 3=3 times, etc + :type image_zoom: (int) + :param border_width: width of border around button in pixels + :type border_width: (int) + :param size: (w, h) w=characters-wide, h=rows-high. If an int instead of a tuple is supplied, then height is auto-set to 1 + :type size: (int, int) | (None, None) | int + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: if True the button size is sized to fit the text + :type auto_size_button: (bool) + :param button_color: of button. Easy to remember which is which if you say "ON" between colors. "red" on "green" + :type button_color: (str, str) | str + :param background_color: color of the background + :type background_color: (str) + :param text_color: element's text color. Can be in #RRGGBB format or a color name "black" + :type text_color: (str) + :param disabled_text_color: color to use for text when item is disabled. Can be in #RRGGBB format or a color name "black" + :type disabled_text_color: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param item_font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike, for the menu items + :type item_font: (str or (str, int[, str]) or None) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param key: Used with window.find_element and with return values to uniquely identify this element to uniquely identify this element + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param tearoff: Determines if menus should allow them to be torn off + :type tearoff: (bool) + :param visible: set visibility state of the element + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.MenuDefinition = copy.deepcopy(menu_def) + + self.AutoSizeButton = auto_size_button + self.ButtonText = button_text + self.ButtonColor = button_color_to_tuple(button_color) + # self.TextColor = self.ButtonColor[0] + # self.BackgroundColor = self.ButtonColor[1] + self.BackgroundColor = background_color if background_color is not None else theme_input_background_color() + self.TextColor = text_color if text_color is not None else theme_input_text_color() + self.DisabledTextColor = disabled_text_color if disabled_text_color is not None else COLOR_SYSTEM_DEFAULT + self.ItemFont = item_font + self.BorderWidth = border_width if border_width is not None else DEFAULT_BORDER_WIDTH + if image_source is not None: + if isinstance(image_source, str): + image_filename = image_source + elif isinstance(image_source, bytes): + image_data = image_source + else: + warnings.warn('ButtonMenu element - image_source is not a valid type: {}'.format(type(image_source)), UserWarning) + + self.ImageFilename = image_filename + self.ImageData = image_data + self.ImageSize = image_size + self.ImageSubsample = image_subsample + self.zoom = int(image_zoom) if image_zoom is not None else None + self.Disabled = disabled + self.IsButtonMenu = True + self.MenuItemChosen = None + self.Widget = self.TKButtonMenu = None # type: tk.Menubutton + self.TKMenu = None # type: tk.Menu + self.part_of_custom_menubar = False + self.custom_menubar_key = None + # self.temp_size = size if size != (NONE, NONE) else + key = key if key is not None else k + sz = size if size != (None, None) else s + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + + super().__init__(ELEM_TYPE_BUTTONMENU, size=sz, font=font, pad=pad, key=key, tooltip=tooltip, + text_color=self.TextColor, background_color=self.BackgroundColor, visible=visible, metadata=metadata) + self.Tearoff = tearoff + + def _MenuItemChosenCallback(self, item_chosen): # ButtonMenu Menu Item Chosen Callback + """ + Not a user callable function. Called by tkinter when an item is chosen from the menu. + + :param item_chosen: The menu item chosen. + :type item_chosen: (str) + """ + # print('IN MENU ITEM CALLBACK', item_chosen) + self.MenuItemChosen = item_chosen + self.ParentForm.LastButtonClicked = self.Key + self.ParentForm.FormRemainedOpen = True + # if self.ParentForm.CurrentlyRunningMainloop: + # self.ParentForm.TKroot.quit() # kick the users out of the mainloop + _exit_mainloop(self.ParentForm) + + def update(self, menu_definition=None, visible=None, image_source=None, image_size=(None, None), image_subsample=None, image_zoom=None, button_text=None, button_color=None): + """ + Changes some of the settings for the ButtonMenu Element. Must call `Window.Read` or `Window.Finalize` prior + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param menu_definition: (New menu definition (in menu definition format) + :type menu_definition: List[List] + :param visible: control visibility of element + :type visible: (bool) + :param image_source: new image if image is to be changed. Can be a filename or a base64 encoded byte-string + :type image_source: (str | bytes) + :param image_size: Size of the image in pixels (width, height) + :type image_size: (int, int) + :param image_subsample: amount to reduce the size of the image. Divides the size by this number. 2=1/2, 3=1/3, 4=1/4, etc + :type image_subsample: (int) + :param image_zoom: amount to increase the size of the image. 2=twice size, 3=3 times, etc + :type image_zoom: (int) + :param button_text: Text to be shown on the button + :type button_text: (str) + :param button_color: Normally a tuple, but can be a simplified-button-color-string "foreground on background". Can be a single color if want to set only the background. + :type button_color: (str, str) | str + """ + + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in ButtonMenu.update - The window was closed') + return + + if menu_definition is not None: + self.MenuDefinition = copy.deepcopy(menu_definition) + top_menu = self.TKMenu = tk.Menu(self.TKButtonMenu, tearoff=self.Tearoff, font=self.ItemFont, tearoffcommand=self._tearoff_menu_callback) + + if self.BackgroundColor not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(bg=self.BackgroundColor) + if self.TextColor not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(fg=self.TextColor) + if self.DisabledTextColor not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(disabledforeground=self.DisabledTextColor) + if self.ItemFont is not None: + top_menu.config(font=self.ItemFont) + AddMenuItem(self.TKMenu, self.MenuDefinition[1], self) + self.TKButtonMenu.configure(menu=self.TKMenu) + if image_source is not None: + filename = data = None + if image_source is not None: + if isinstance(image_source, bytes): + data = image_source + elif isinstance(image_source, str): + filename = image_source + else: + warnings.warn('ButtonMenu element - image_source is not a valid type: {}'.format(type(image_source)), UserWarning) + image = None + if filename is not None: + image = tk.PhotoImage(file=filename) + if image_subsample is not None: + image = image.subsample(image_subsample) + if image_zoom is not None: + image = image.zoom(int(image_zoom)) + elif data is not None: + # if type(data) is bytes: + try: + image = tk.PhotoImage(data=data) + if image_subsample is not None: + image = image.subsample(image_subsample) + if image_zoom is not None: + image = image.zoom(int(image_zoom)) + except Exception as e: + image = data + + if image is not None: + if type(image) is not bytes: + width, height = image_size[0] if image_size[0] is not None else image.width(), image_size[1] if image_size[1] is not None else image.height() + else: + width, height = image_size + + self.TKButtonMenu.config(image=image, compound=tk.CENTER, width=width, height=height) + self.TKButtonMenu.image = image + if button_text is not None: + self.TKButtonMenu.configure(text=button_text) + self.ButtonText = button_text + if visible is False: + self._pack_forget_save_settings() + elif visible is True: + self._pack_restore_settings() + if visible is not None: + self._visible = visible + if button_color != (None, None) and button_color != COLOR_SYSTEM_DEFAULT: + bc = button_color_to_tuple(button_color, self.ButtonColor) + if bc[0] not in (None, COLOR_SYSTEM_DEFAULT): + self.TKButtonMenu.config(foreground=bc[0], activeforeground=bc[0]) + if bc[1] not in (None, COLOR_SYSTEM_DEFAULT): + self.TKButtonMenu.config(background=bc[1], activebackground=bc[1]) + self.ButtonColor = bc + + def click(self): + """ + Generates a click of the button as if the user clicked the button + Calls the tkinter invoke method for the button + """ + try: + self.TKMenu.invoke(1) + except: + print('Exception clicking button') + + Update = update + Click = click + + +BMenu = ButtonMenu +BM = ButtonMenu + + +# ---------------------------------------------------------------------- # +# ProgreessBar # +# ---------------------------------------------------------------------- # +class ProgressBar(Element): + """ + Progress Bar Element - Displays a colored bar that is shaded as progress of some operation is made + """ + + def __init__(self, max_value, orientation=None, size=(None, None), s=(None, None), size_px=(None, None), auto_size_text=None, bar_color=None, style=None, border_width=None, + relief=None, key=None, k=None, pad=None, p=None, right_click_menu=None, expand_x=False, expand_y=False, visible=True, metadata=None): + """ + :param max_value: max value of progressbar + :type max_value: (int) + :param orientation: 'horizontal' or 'vertical' + :type orientation: (str) + :param size: Size of the bar. If horizontal (chars long, pixels wide), vert (chars high, pixels wide). Vert height measured using horizontal chars units. + :type size: (int, int) | (int, None) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) + :param size_px: Size in pixels (length, width). Will be used in place of size parm if specified + :type size_px: (int, int) | (None, None) + :param auto_size_text: Not sure why this is here + :type auto_size_text: (bool) + :param bar_color: The 2 colors that make up a progress bar. Either a tuple of 2 strings or a string. Tuple - (bar, background). A string with 1 color changes the background of the bar only. A string with 2 colors separated by "on" like "red on blue" specifies a red bar on a blue background. + :type bar_color: (str, str) or str + :param style: Progress bar style defined as one of these 'default', 'winnative', 'clam', 'alt', 'classic', 'vista', 'xpnative' + :type style: (str) + :param border_width: The amount of pixels that go around the outside of the bar + :type border_width: (int) + :param relief: relief style. Values are same as progress meter relief values. Can be a constant or a string: `RELIEF_RAISED RELIEF_SUNKEN RELIEF_FLAT RELIEF_RIDGE RELIEF_GROOVE RELIEF_SOLID` (Default value = DEFAULT_PROGRESS_BAR_RELIEF) + :type relief: (str) + :param key: Used with window.find_element and with return values to uniquely identify this element to uniquely identify this element + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param visible: set visibility state of the element + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.MaxValue = max_value + self.TKProgressBar = None # type: TKProgressBar + self.Cancelled = False + self.NotRunning = True + self.Orientation = orientation if orientation else DEFAULT_METER_ORIENTATION + self.RightClickMenu = right_click_menu + # Progress Bar colors can be a tuple (text, background) or a string with format "bar on background" - examples "red on white" or ("red", "white") + if bar_color is None: + bar_color = DEFAULT_PROGRESS_BAR_COLOR + else: + bar_color = _simplified_dual_color_to_tuple(bar_color, default=DEFAULT_PROGRESS_BAR_COLOR) + + self.BarColor = bar_color # should be a tuple at this point + self.BarStyle = style if style else DEFAULT_TTK_THEME + self.BorderWidth = border_width if border_width else DEFAULT_PROGRESS_BAR_BORDER_WIDTH + self.Relief = relief if relief else DEFAULT_PROGRESS_BAR_RELIEF + self.BarExpired = False + key = key if key is not None else k + sz = size if size != (None, None) else s + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + self.size_px = size_px + + super().__init__(ELEM_TYPE_PROGRESS_BAR, size=sz, auto_size_text=auto_size_text, key=key, pad=pad, + visible=visible, metadata=metadata) + + # returns False if update failed + def update_bar(self, current_count, max=None): + """ + DEPRECATED BUT STILL USABLE - has been combined with the normal ProgressBar.update method. + Change what the bar shows by changing the current count and optionally the max count + + :param current_count: sets the current value + :type current_count: (int) + :param max: changes the max value + :type max: (int) + """ + + if self.ParentForm.TKrootDestroyed: + return False + self.TKProgressBar.Update(current_count, max=max) + try: + self.ParentForm.TKroot.update() + except: + Window._DecrementOpenCount() + # _my_windows.Decrement() + return False + return True + + def update(self, current_count=None, max=None, bar_color=None, visible=None): + """ + Changes some of the settings for the ProgressBar Element. Must call `Window.Read` or `Window.Finalize` prior + Now has the ability to modify the count so that the update_bar method is not longer needed separately + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param current_count: sets the current value + :type current_count: (int) + :param max: changes the max value + :type max: (int) + :param bar_color: The 2 colors that make up a progress bar. Easy to remember which is which if you say "ON" between colors. "red" on "green". + :type bar_color: (str, str) or str + :param visible: control visibility of element + :type visible: (bool) + :return: Returns True if update was OK. False means something wrong with window or it was closed + :rtype: (bool) + """ + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return False + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in ProgressBar.update - The window was closed') + return + + if self.ParentForm.TKrootDestroyed: + return False + + if visible is False: + self._pack_forget_save_settings() + elif visible is True: + self._pack_restore_settings() + + if visible is not None: + self._visible = visible + if bar_color is not None: + bar_color = _simplified_dual_color_to_tuple(bar_color, default=DEFAULT_PROGRESS_BAR_COLOR) + self.BarColor = bar_color + style = ttk.Style() + style.configure(self.ttk_style_name, background=bar_color[0], troughcolor=bar_color[1]) + if current_count is not None: + self.TKProgressBar.Update(current_count, max=max) + + try: + self.ParentForm.TKroot.update() + except: + # Window._DecrementOpenCount() + # _my_windows.Decrement() + return False + return True + + Update = update + UpdateBar = update_bar + + +PBar = ProgressBar +Prog = ProgressBar +Progress = ProgressBar + + +# ---------------------------------------------------------------------- # +# Image # +# ---------------------------------------------------------------------- # +class Image(Element): + """ + Image Element - show an image in the window. Should be a GIF or a PNG only + """ + + def __init__(self, source=None, filename=None, data=None, background_color=None, size=(None, None), s=(None, None), pad=None, p=None, key=None, k=None, tooltip=None, + subsample=None, zoom=None, right_click_menu=None, expand_x=False, expand_y=False, visible=True, enable_events=False, metadata=None): + """ + :param source: A filename or a base64 bytes. Will automatically detect the type and fill in filename or data for you. + :type source: str | bytes | None + :param filename: image filename if there is a button image. GIFs and PNGs only. + :type filename: str | None + :param data: Raw or Base64 representation of the image to put on button. Choose either filename or data + :type data: bytes | str | None + :param background_color: color of background + :type background_color: + :param size: (width, height) size of image in pixels + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: Used with window.find_element and with return values to uniquely identify this element to uniquely identify this element + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param subsample: amount to reduce the size of the image. Divides the size by this number. 2=1/2, 3=1/3, 4=1/4, etc + :type subsample: (int) + :param zoom: amount to increase the size of the image. + :type zoom: (int) + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param visible: set visibility state of the element + :type visible: (bool) + :param enable_events: Turns on the element specific events. For an Image element, the event is "image clicked" + :type enable_events: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + if source is not None: + if isinstance(source, bytes): + data = source + elif isinstance(source, str): + filename = source + else: + warnings.warn('Image element - source is not a valid type: {}'.format(type(source)), UserWarning) + + self.Filename = filename + self.Data = data + self.Widget = self.tktext_label = None # type: tk.Label + self.BackgroundColor = background_color + if data is None and filename is None: + self.Filename = '' + self.EnableEvents = enable_events + self.RightClickMenu = right_click_menu + self.AnimatedFrames = None + self.CurrentFrameNumber = 0 + self.TotalAnimatedFrames = 0 + self.LastFrameTime = 0 + self.ImageSubsample = subsample + self.zoom = int(zoom) if zoom is not None else None + self.frame_num = 0 + self.Source = filename if filename is not None else data + key = key if key is not None else k + sz = size if size != (None, None) else s + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + + super().__init__(ELEM_TYPE_IMAGE, size=sz, background_color=background_color, pad=pad, key=key, + tooltip=tooltip, visible=visible, metadata=metadata) + return + + def update(self, source=None, filename=None, data=None, size=(None, None), subsample=None, zoom=None, visible=None): + """ + Changes some of the settings for the Image Element. Must call `Window.Read` or `Window.Finalize` prior. + To clear an image that's been displayed, call with NONE of the options set. A blank update call will + delete the previously shown image. + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param source: A filename or a base64 bytes. Will automatically detect the type and fill in filename or data for you. + :type source: str | bytes | None + :param filename: filename to the new image to display. + :type filename: (str) + :param data: Base64 encoded string OR a tk.PhotoImage object + :type data: str | tkPhotoImage + :param size: (width, height) size of image in pixels + :type size: Tuple[int,int] + :param subsample: amount to reduce the size of the image. Divides the size by this number. 2=1/2, 3=1/3, 4=1/4, etc + :type subsample: (int) + :param zoom: amount to increase the size of the image + :type zoom: (int) + :param visible: control visibility of element + :type visible: (bool) + """ + + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Image.update - The window was closed') + return + + if source is not None: + if isinstance(source, bytes): + data = source + elif isinstance(source, str): + filename = source + else: + warnings.warn('Image element - source is not a valid type: {}'.format(type(source)), UserWarning) + + image = None + if filename is not None: + try: + image = tk.PhotoImage(file=filename) + if subsample is not None: + image = image.subsample(subsample) + if zoom is not None: + image = image.zoom(int(zoom)) + except Exception as e: + _error_popup_with_traceback('Exception updating Image element', e) + + elif data is not None: + # if type(data) is bytes: + try: + image = tk.PhotoImage(data=data) + if subsample is not None: + image = image.subsample(subsample) + if zoom is not None: + image = image.zoom(int(zoom)) + except Exception as e: + image = data + # return # an error likely means the window has closed so exit + + if image is not None: + self.tktext_label.configure(image='') # clear previous image + if self.tktext_label.image is not None: + del self.tktext_label.image + if type(image) is not bytes: + width, height = size[0] if size[0] is not None else image.width(), size[1] if size[1] is not None else image.height() + else: + width, height = size + try: # sometimes crashes if user closed with X + self.tktext_label.configure(image=image, width=width, height=height) + except Exception as e: + _error_popup_with_traceback('Exception updating Image element', e) + self.tktext_label.image = image + if visible is False: + self._pack_forget_save_settings() + elif visible is True: + self._pack_restore_settings() + + # if everything is set to None, then delete the image + if filename is None and image is None and visible is None and size == (None, None): + # Using a try because the image may have been previously deleted and don't want an error if that's happened + try: + self.tktext_label.configure(image='', width=1, height=1, bd=0) + self.tktext_label.image = None + except: + pass + + if visible is not None: + self._visible = visible + + def update_animation(self, source, time_between_frames=0): + """ + Show an Animated GIF. Call the function as often as you like. The function will determine when to show the next frame and will automatically advance to the next frame at the right time. + NOTE - does NOT perform a sleep call to delay + :param source: Filename or Base64 encoded string containing Animated GIF + :type source: str | bytes | None + :param time_between_frames: Number of milliseconds to wait between showing frames + :type time_between_frames: (int) + :return: True if worked OK, False if out of frames, None is window was closed + :rtype: True | False | None + """ + + if self.Source != source: + self.AnimatedFrames = None + self.Source = source + + done = False + + if self.AnimatedFrames is None: + self.TotalAnimatedFrames = 0 + self.AnimatedFrames = [] + # Load up to 1000 frames of animation. stops when a bad frame is returns by tkinter + for i in range(1000): + if type(source) is not bytes: + try: + self.AnimatedFrames.append(tk.PhotoImage(file=source, format='gif -index %i' % (i))) + except Exception as e: + break + else: + try: + self.AnimatedFrames.append(tk.PhotoImage(data=source, format='gif -index %i' % (i))) + except Exception as e: + break + self.TotalAnimatedFrames = len(self.AnimatedFrames) + self.LastFrameTime = time.time() + self.CurrentFrameNumber = -1 # start at -1 because it is incremented before every frame is shown + # show the frame + + now = time.time() + + if time_between_frames: + if self.CurrentFrameNumber+1 == self.TotalAnimatedFrames: + done = True + if (now - self.LastFrameTime) * 1000 > time_between_frames: + self.LastFrameTime = now + self.CurrentFrameNumber = (self.CurrentFrameNumber + 1) % self.TotalAnimatedFrames + else: # don't reshow the frame again if not time for new frame + return True + else: + self.CurrentFrameNumber = (self.CurrentFrameNumber + 1) % self.TotalAnimatedFrames + image = self.AnimatedFrames[self.CurrentFrameNumber] + try: # needed in case the window was closed with an "X" + self.tktext_label.configure(image=image, width=image.width(), heigh=image.height()) + except Exception as e: + print('Exception in update_animation', e) + done = None + return not done + + + def update_animation_no_buffering(self, source, time_between_frames=0): + """ + Show an Animated GIF. Call the function as often as you like. The function will determine when to show the next frame and will automatically advance to the next frame at the right time. + NOTE - does NOT perform a sleep call to delay + + :param source: Filename or Base64 encoded string containing Animated GIF + :type source: str | bytes + :param time_between_frames: Number of milliseconds to wait between showing frames + :type time_between_frames: (int) + :return: True if worked OK, False if out of frames, None is window was closed + :rtype: True | False | None + """ + + if self.Source != source: + self.AnimatedFrames = None + self.Source = source + self.frame_num = 0 + + now = time.time() + + if time_between_frames: + if (now - self.LastFrameTime) * 1000 > time_between_frames: + self.LastFrameTime = now + else: # don't reshow the frame again if not time for new frame + return True + + # read a frame + done = False + while True: + if type(source) is not bytes: + try: + self.image = tk.PhotoImage(file=source, format='gif -index %i' % (self.frame_num)) + self.frame_num += 1 + except Exception as e: + self.frame_num = 0 + done = True + else: + try: + self.image = tk.PhotoImage(data=source, format='gif -index %i' % (self.frame_num)) + self.frame_num += 1 + except: + self.frame_num = 0 + done = True + + if self.frame_num: + break + + try: # needed in case the window was closed with an "X" + self.tktext_label.configure(image=self.image, width=self.image.width(), heigh=self.image.height()) + except: + done = None + return not done + + Update = update + UpdateAnimation = update_animation + + +Im = Image + + +# ---------------------------------------------------------------------- # +# Canvas # +# ---------------------------------------------------------------------- # +class Canvas(Element): + + def __init__(self, canvas=None, background_color=None, size=(None, None), s=(None, None), pad=None, p=None, key=None, k=None, tooltip=None, + right_click_menu=None, expand_x=False, expand_y=False, visible=True, border_width=0, metadata=None): + """ + :param canvas: Your own tk.Canvas if you already created it. Leave blank to create a Canvas + :type canvas: (tk.Canvas) + :param background_color: color of background + :type background_color: (str) + :param size: (width in char, height in rows) size in pixels to make canvas + :type size: (int,int) | (None, None) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: Used with window.find_element and with return values to uniquely identify this element + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param visible: set visibility state of the element + :type visible: (bool) + :param border_width: width of border around element in pixels. Not normally used with Canvas element + :type border_width: (int) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.BackgroundColor = background_color if background_color is not None else DEFAULT_BACKGROUND_COLOR + self._TKCanvas = self.Widget = canvas + self.RightClickMenu = right_click_menu + self.BorderWidth = border_width + key = key if key is not None else k + sz = size if size != (None, None) else s + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + + super().__init__(ELEM_TYPE_CANVAS, background_color=background_color, size=sz, pad=pad, key=key, + tooltip=tooltip, visible=visible, metadata=metadata) + return + + def update(self, background_color=None, visible=None): + """ + + :param background_color: color of background + :type background_color: (str) + :param visible: set visibility state of the element + :type visible: (bool) + """ + + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Canvas.update - The window was closed') + return + + if background_color not in (None, COLOR_SYSTEM_DEFAULT): + self._TKCanvas.configure(background=background_color) + if visible is False: + self._pack_forget_save_settings() + elif visible is True: + self._pack_restore_settings() + if visible is not None: + self._visible = visible + + @property + def tk_canvas(self): + """ + Returns the underlying tkiner Canvas widget + + :return: The tkinter canvas widget + :rtype: (tk.Canvas) + """ + if self._TKCanvas is None: + print('*** Did you forget to call Finalize()? Your code should look something like: ***') + print('*** window = sg.Window("My Form", layout, finalize=True) ***') + return self._TKCanvas + + TKCanvas = tk_canvas + + +# ---------------------------------------------------------------------- # +# Graph # +# ---------------------------------------------------------------------- # +class Graph(Element): + """ + Creates an area for you to draw on. The MAGICAL property this Element has is that you interact + with the element using your own coordinate system. This is an important point!! YOU define where the location + is for (0,0). Want (0,0) to be in the middle of the graph like a math 4-quadrant graph? No problem! Set your + lower left corner to be (-100,-100) and your upper right to be (100,100) and you've got yourself a graph with + (0,0) at the center. + One of THE coolest of the Elements. + You can also use float values. To do so, be sure and set the float_values parameter. + Mouse click and drag events are possible and return the (x,y) coordinates of the mouse + Drawing primitives return an "id" that is referenced when you want to operation on that item (e.g. to erase it) + """ + + def __init__(self, canvas_size, graph_bottom_left, graph_top_right, background_color=None, pad=None, p=None, + change_submits=False, drag_submits=False, enable_events=False, motion_events=False, key=None, k=None, tooltip=None, + right_click_menu=None, expand_x=False, expand_y=False, visible=True, float_values=False, border_width=0, metadata=None): + """ + :param canvas_size: size of the canvas area in pixels + :type canvas_size: (int, int) + :param graph_bottom_left: (x,y) The bottoms left corner of your coordinate system + :type graph_bottom_left: (int, int) + :param graph_top_right: (x,y) The top right corner of your coordinate system + :type graph_top_right: (int, int) + :param background_color: background color of the drawing area + :type background_color: (str) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param change_submits: * DEPRICATED DO NOT USE. Use `enable_events` instead + :type change_submits: (bool) + :param drag_submits: if True and Events are enabled for the Graph, will report Events any time the mouse moves while button down. When the mouse button is released, you'll get an event = graph key + '+UP' (if key is a string.. if not a string, it'll be made into a tuple) + :type drag_submits: (bool) + :param enable_events: If True then clicks on the Graph are immediately reported as an event. Use this instead of change_submits + :type enable_events: (bool) + :param motion_events: If True then if no button is down and the mouse is moved, an event is generated with key = graph key + '+MOVE' (if key is a string, it not a string then a tuple is returned) + :type motion_events: (bool) + :param key: Value that uniquely identifies this element from all other elements. Used when Finding an element or in return values. Must be unique to the window + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param visible: set visibility state of the element (Default = True) + :type visible: (bool) + :param float_values: If True x,y coordinates are returned as floats, not ints + :type float_values: (bool) + :param border_width: width of border around element in pixels. Not normally used for Graph Elements + :type border_width: (int) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.CanvasSize = canvas_size + self.BottomLeft = graph_bottom_left + self.TopRight = graph_top_right + # self._TKCanvas = None # type: tk.Canvas + self._TKCanvas2 = self.Widget = None # type: tk.Canvas + self.ChangeSubmits = change_submits or enable_events + self.DragSubmits = drag_submits + self.ClickPosition = (None, None) + self.MouseButtonDown = False + self.Images = {} + self.RightClickMenu = right_click_menu + self.FloatValues = float_values + self.BorderWidth = border_width + key = key if key is not None else k + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + self.motion_events = motion_events + + super().__init__(ELEM_TYPE_GRAPH, background_color=background_color, size=canvas_size, pad=pad, key=key, + tooltip=tooltip, visible=visible, metadata=metadata) + return + + def _convert_xy_to_canvas_xy(self, x_in, y_in): + """ + Not user callable. Used to convert user's coordinates into the ones used by tkinter + :param x_in: The x coordinate to convert + :type x_in: int | float + :param y_in: The y coordinate to convert + :type y_in: int | float + :return: (int, int) The converted canvas coordinates + :rtype: (int, int) + """ + if None in (x_in, y_in): + return None, None + try: + scale_x = (self.CanvasSize[0] - 0) / (self.TopRight[0] - self.BottomLeft[0]) + scale_y = (0 - self.CanvasSize[1]) / (self.TopRight[1] - self.BottomLeft[1]) + except: + scale_x = scale_y = 0 + + new_x = 0 + scale_x * (x_in - self.BottomLeft[0]) + new_y = self.CanvasSize[1] + scale_y * (y_in - self.BottomLeft[1]) + return new_x, new_y + + def _convert_canvas_xy_to_xy(self, x_in, y_in): + """ + Not user callable. Used to convert tkinter Canvas coords into user's coordinates + + :param x_in: The x coordinate in canvas coordinates + :type x_in: (int) + :param y_in: (int) The y coordinate in canvas coordinates + :type y_in: + :return: The converted USER coordinates + :rtype: (int, int) | Tuple[float, float] + """ + if None in (x_in, y_in): + return None, None + scale_x = (self.CanvasSize[0] - 0) / (self.TopRight[0] - self.BottomLeft[0]) + scale_y = (0 - self.CanvasSize[1]) / (self.TopRight[1] - self.BottomLeft[1]) + + new_x = x_in / scale_x + self.BottomLeft[0] + new_y = (y_in - self.CanvasSize[1]) / scale_y + self.BottomLeft[1] + if self.FloatValues: + return new_x, new_y + else: + return floor(new_x), floor(new_y) + + def draw_line(self, point_from, point_to, color='black', width=1, arrow=None, arrow_shape=None): + """ + Draws a line from one point to another point using USER'S coordinates. Can set the color and width of line + :param point_from: Starting point for line + :type point_from: (int, int) | Tuple[float, float] + :param point_to: Ending point for line + :type point_to: (int, int) | Tuple[float, float] + :param color: Color of the line + :type color: (str) + :param width: width of line in pixels + :type width: (int) + :param arrow: Determines if an arrowhead will be added to the line. Literal string "first", "last", "both" + :type arrow: (str) + :param arrow_shape: Defines the shape of the arrowhead using a tuple with (length, width, thickness) + :type arrow_shape: Tuple[float, float, float] + :return: id returned from tktiner or None if user closed the window. id is used when you + :rtype: int | None + """ + if point_from == (None, None): + return + converted_point_from = self._convert_xy_to_canvas_xy(point_from[0], point_from[1]) + converted_point_to = self._convert_xy_to_canvas_xy(point_to[0], point_to[1]) + if self._TKCanvas2 is None: + print('*** WARNING - The Graph element has not been finalized and cannot be drawn upon ***') + print('Call Window.Finalize() prior to this operation') + return None + try: # in case window was closed with an X + id = self._TKCanvas2.create_line(converted_point_from, converted_point_to, width=width, fill=color, arrow=arrow, arrowshape=arrow_shape) + except Exception as e: + # print(e) + id = None + return id + + + def draw_lines(self, points, color='black', width=1): + """ + Draw a series of lines given list of points + + :param points: list of points that define the polygon + :type points: List[(int, int) | Tuple[float, float]] + :param color: Color of the line + :type color: (str) + :param width: width of line in pixels + :type width: (int) + :return: id returned from tktiner or None if user closed the window. id is used when you + :rtype: int | None + """ + converted_points = [self._convert_xy_to_canvas_xy(point[0], point[1]) for point in points] + + try: # in case window was closed with an X + id = self._TKCanvas2.create_line(*converted_points, width=width, fill=color) + except: + if self._TKCanvas2 is None: + print('*** WARNING - The Graph element has not been finalized and cannot be drawn upon ***') + print('Call Window.Finalize() prior to this operation') + id = None + return id + + def draw_point(self, point, size=2, color='black'): + """ + Draws a "dot" at the point you specify using the USER'S coordinate system + :param point: Center location using USER'S coordinate system + :type point: (int, int) | Tuple[float, float] + :param size: Radius? (Or is it the diameter?) in user's coordinate values. + :type size: int | float + :param color: color of the point to draw + :type color: (str) + :return: id returned from tkinter that you'll need if you want to manipulate the point + :rtype: int | None + """ + if point == (None, None): + return + converted_point = self._convert_xy_to_canvas_xy(point[0], point[1]) + size_converted = self._convert_xy_to_canvas_xy(point[0] + size, point[1]) + size = size_converted[0] - converted_point[0] + if self._TKCanvas2 is None: + print('*** WARNING - The Graph element has not been finalized and cannot be drawn upon ***') + print('Call Window.Finalize() prior to this operation') + return None + try: # needed in case window was closed with an X + point1 = converted_point[0] - size // 2, converted_point[1] - size // 2 + point2 = converted_point[0] + size // 2, converted_point[1] + size // 2 + id = self._TKCanvas2.create_oval(point1[0], point1[1], + point2[0], point2[1], + width=0, + fill=color, + outline=color) + except: + id = None + return id + + def draw_circle(self, center_location, radius, fill_color=None, line_color='black', line_width=1): + """ + Draws a circle, cenetered at the location provided. Can set the fill and outline colors + :param center_location: Center location using USER'S coordinate system + :type center_location: (int, int) | Tuple[float, float] + :param radius: Radius in user's coordinate values. + :type radius: int | float + :param fill_color: color of the point to draw + :type fill_color: (str) + :param line_color: color of the outer line that goes around the circle (sorry, can't set thickness) + :type line_color: (str) + :param line_width: width of the line around the circle, the outline, in pixels + :type line_width: (int) + :return: id returned from tkinter that you'll need if you want to manipulate the circle + :rtype: int | None + """ + if center_location == (None, None): + return + converted_point = self._convert_xy_to_canvas_xy(center_location[0], center_location[1]) + radius_converted = self._convert_xy_to_canvas_xy(center_location[0] + radius, center_location[1]) + radius = radius_converted[0] - converted_point[0] + # radius = radius_converted[1]-5 + if self._TKCanvas2 is None: + print('*** WARNING - The Graph element has not been finalized and cannot be drawn upon ***') + print('Call Window.Finalize() prior to this operation') + return None + # print('Oval parms', int(converted_point[0]) - int(radius), int(converted_point[1]) - int(radius), + # int(converted_point[0]) + int(radius), int(converted_point[1]) + int(radius)) + try: # needed in case the window was closed with an X + id = self._TKCanvas2.create_oval(int(converted_point[0]) - int(radius), int(converted_point[1]) - int(radius), + int(converted_point[0]) + int(radius), int(converted_point[1]) + int(radius), fill=fill_color, + outline=line_color, width=line_width) + except: + id = None + return id + + def draw_oval(self, top_left, bottom_right, fill_color=None, line_color=None, line_width=1): + """ + Draws an oval based on coordinates in user coordinate system. Provide the location of a "bounding rectangle" + :param top_left: the top left point of bounding rectangle + :type top_left: (int, int) | Tuple[float, float] + :param bottom_right: the bottom right point of bounding rectangle + :type bottom_right: (int, int) | Tuple[float, float] + :param fill_color: color of the interrior + :type fill_color: (str) + :param line_color: color of outline of oval + :type line_color: (str) + :param line_width: width of the line around the oval, the outline, in pixels + :type line_width: (int) + :return: id returned from tkinter that you'll need if you want to manipulate the oval + :rtype: int | None + """ + converted_top_left = self._convert_xy_to_canvas_xy(top_left[0], top_left[1]) + converted_bottom_right = self._convert_xy_to_canvas_xy(bottom_right[0], bottom_right[1]) + if self._TKCanvas2 is None: + print('*** WARNING - The Graph element has not been finalized and cannot be drawn upon ***') + print('Call Window.Finalize() prior to this operation') + return None + try: # in case windows close with X + id = self._TKCanvas2.create_oval(converted_top_left[0], converted_top_left[1], converted_bottom_right[0], + converted_bottom_right[1], fill=fill_color, outline=line_color, width=line_width) + except: + id = None + + return id + + def draw_arc(self, top_left, bottom_right, extent, start_angle, style=None, arc_color='black', line_width=1, fill_color=None): + """ + Draws different types of arcs. Uses a "bounding box" to define location + :param top_left: the top left point of bounding rectangle + :type top_left: (int, int) | Tuple[float, float] + :param bottom_right: the bottom right point of bounding rectangle + :type bottom_right: (int, int) | Tuple[float, float] + :param extent: Andle to end drawing. Used in conjunction with start_angle + :type extent: (float) + :param start_angle: Angle to begin drawing. Used in conjunction with extent + :type start_angle: (float) + :param style: Valid choices are One of these Style strings- 'pieslice', 'chord', 'arc', 'first', 'last', 'butt', 'projecting', 'round', 'bevel', 'miter' + :type style: (str) + :param arc_color: color to draw arc with + :type arc_color: (str) + :param fill_color: color to fill the area + :type fill_color: (str) + :return: id returned from tkinter that you'll need if you want to manipulate the arc + :rtype: int | None + """ + converted_top_left = self._convert_xy_to_canvas_xy(top_left[0], top_left[1]) + converted_bottom_right = self._convert_xy_to_canvas_xy(bottom_right[0], bottom_right[1]) + tkstyle = tk.PIESLICE if style is None else style + if self._TKCanvas2 is None: + print('*** WARNING - The Graph element has not been finalized and cannot be drawn upon ***') + print('Call Window.Finalize() prior to this operation') + return None + try: # in case closed with X + id = self._TKCanvas2.create_arc(converted_top_left[0], converted_top_left[1], converted_bottom_right[0], + converted_bottom_right[1], extent=extent, start=start_angle, style=tkstyle, + outline=arc_color, width=line_width, fill=fill_color) + except Exception as e: + print('Error encountered drawing arc.', e) + id = None + return id + + def draw_rectangle(self, top_left, bottom_right, fill_color=None, line_color=None, line_width=None): + """ + Draw a rectangle given 2 points. Can control the line and fill colors + + :param top_left: the top left point of rectangle + :type top_left: (int, int) | Tuple[float, float] + :param bottom_right: the bottom right point of rectangle + :type bottom_right: (int, int) | Tuple[float, float] + :param fill_color: color of the interior + :type fill_color: (str) + :param line_color: color of outline + :type line_color: (str) + :param line_width: width of the line in pixels + :type line_width: (int) + :return: int | None id returned from tkinter that you'll need if you want to manipulate the rectangle + :rtype: int | None + """ + + converted_top_left = self._convert_xy_to_canvas_xy(top_left[0], top_left[1]) + converted_bottom_right = self._convert_xy_to_canvas_xy(bottom_right[0], bottom_right[1]) + if self._TKCanvas2 is None: + print('*** WARNING - The Graph element has not been finalized and cannot be drawn upon ***') + print('Call Window.Finalize() prior to this operation') + return None + if line_width is None: + line_width = 1 + try: # in case closed with X + id = self._TKCanvas2.create_rectangle(converted_top_left[0], converted_top_left[1], + converted_bottom_right[0], + converted_bottom_right[1], fill=fill_color, outline=line_color, width=line_width) + except: + id = None + return id + + def draw_polygon(self, points, fill_color=None, line_color=None, line_width=None): + """ + Draw a polygon given list of points + + :param points: list of points that define the polygon + :type points: List[(int, int) | Tuple[float, float]] + :param fill_color: color of the interior + :type fill_color: (str) + :param line_color: color of outline + :type line_color: (str) + :param line_width: width of the line in pixels + :type line_width: (int) + :return: id returned from tkinter that you'll need if you want to manipulate the rectangle + :rtype: int | None + """ + + converted_points = [self._convert_xy_to_canvas_xy(point[0], point[1]) for point in points] + if self._TKCanvas2 is None: + print('*** WARNING - The Graph element has not been finalized and cannot be drawn upon ***') + print('Call Window.Finalize() prior to this operation') + return None + try: # in case closed with X + id = self._TKCanvas2.create_polygon(converted_points, fill=fill_color, outline=line_color, width=line_width) + except: + id = None + return id + + def draw_text(self, text, location, color='black', font=None, angle=0, text_location=TEXT_LOCATION_CENTER): + """ + Draw some text on your graph. This is how you label graph number lines for example + + :param text: text to display + :type text: (Any) + :param location: location to place first letter + :type location: (int, int) | Tuple[float, float] + :param color: text color + :type color: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param angle: Angle 0 to 360 to draw the text. Zero represents horizontal text + :type angle: (float) + :param text_location: "anchor" location for the text. Values start with TEXT_LOCATION_ + :type text_location: (str) + :return: id returned from tkinter that you'll need if you want to manipulate the text + :rtype: int | None + """ + text = str(text) + if location == (None, None): + return + converted_point = self._convert_xy_to_canvas_xy(location[0], location[1]) + if self._TKCanvas2 is None: + print('*** WARNING - The Graph element has not been finalized and cannot be drawn upon ***') + print('Call Window.Finalize() prior to this operation') + return None + try: # in case closed with X + id = self._TKCanvas2.create_text(converted_point[0], converted_point[1], text=text, font=font, fill=color, angle=angle, anchor=text_location) + except: + id = None + return id + + def draw_image(self, filename=None, data=None, location=(None, None)): + """ + Places an image onto your canvas. It's a really important method for this element as it enables so much + + :param filename: if image is in a file, path and filename for the image. (GIF and PNG only!) + :type filename: (str) + :param data: if image is in Base64 format or raw? format then use instead of filename + :type data: str | bytes + :param location: the (x,y) location to place image's top left corner + :type location: (int, int) | Tuple[float, float] + :return: id returned from tkinter that you'll need if you want to manipulate the image + :rtype: int | None + """ + if location == (None, None): + return + if filename is not None: + image = tk.PhotoImage(file=filename) + elif data is not None: + # if type(data) is bytes: + try: + image = tk.PhotoImage(data=data) + except: + return None # an error likely means the window has closed so exit + converted_point = self._convert_xy_to_canvas_xy(location[0], location[1]) + if self._TKCanvas2 is None: + print('*** WARNING - The Graph element has not been finalized and cannot be drawn upon ***') + print('Call Window.Finalize() prior to this operation') + return None + try: # in case closed with X + id = self._TKCanvas2.create_image(converted_point, image=image, anchor=tk.NW) + self.Images[id] = image + except: + id = None + return id + + def erase(self): + """ + Erase the Graph - Removes all figures previously "drawn" using the Graph methods (e.g. DrawText) + """ + if self._TKCanvas2 is None: + print('*** WARNING - The Graph element has not been finalized and cannot be drawn upon ***') + print('Call Window.Finalize() prior to this operation') + return None + self.Images = {} + try: # in case window was closed with X + self._TKCanvas2.delete('all') + except: + pass + + def delete_figure(self, id): + """ + Remove from the Graph the figure represented by id. The id is given to you anytime you call a drawing primitive + + :param id: the id returned to you when calling one of the drawing methods + :type id: (int) + """ + try: + self._TKCanvas2.delete(id) + except: + print('DeleteFigure - bad ID {}'.format(id)) + try: + del self.Images[id] # in case was an image. If wasn't an image, then will get exception + except: + pass + + def update(self, background_color=None, visible=None): + """ + Changes some of the settings for the Graph Element. Must call `Window.Read` or `Window.Finalize` prior + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param background_color: color of background + :type background_color: ??? + :param visible: control visibility of element + :type visible: (bool) + """ + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Graph.update - The window was closed') + return + + if background_color is not None and background_color != COLOR_SYSTEM_DEFAULT: + self._TKCanvas2.configure(background=background_color) + + if visible is False: + self._pack_forget_save_settings() + elif visible is True: + self._pack_restore_settings() + + if visible is not None: + self._visible = visible + + def move(self, x_direction, y_direction): + """ + Moves the entire drawing area (the canvas) by some delta from the current position. Units are indicated in your coordinate system indicated number of ticks in your coordinate system + + :param x_direction: how far to move in the "X" direction in your coordinates + :type x_direction: int | float + :param y_direction: how far to move in the "Y" direction in your coordinates + :type y_direction: int | float + """ + zero_converted = self._convert_xy_to_canvas_xy(0, 0) + shift_converted = self._convert_xy_to_canvas_xy(x_direction, y_direction) + shift_amount = (shift_converted[0] - zero_converted[0], shift_converted[1] - zero_converted[1]) + if self._TKCanvas2 is None: + print('*** WARNING - The Graph element has not been finalized and cannot be drawn upon ***') + print('Call Window.Finalize() prior to this operation') + return None + self._TKCanvas2.move('all', shift_amount[0], shift_amount[1]) + + def move_figure(self, figure, x_direction, y_direction): + """ + Moves a previously drawn figure using a "delta" from current position + + :param figure: Previously obtained figure-id. These are returned from all Draw methods + :type figure: (id) + :param x_direction: delta to apply to position in the X direction + :type x_direction: int | float + :param y_direction: delta to apply to position in the Y direction + :type y_direction: int | float + """ + zero_converted = self._convert_xy_to_canvas_xy(0, 0) + shift_converted = self._convert_xy_to_canvas_xy(x_direction, y_direction) + shift_amount = (shift_converted[0] - zero_converted[0], shift_converted[1] - zero_converted[1]) + if figure is None: + print('* move_figure warning - your figure is None *') + return None + self._TKCanvas2.move(figure, shift_amount[0], shift_amount[1]) + + def relocate_figure(self, figure, x, y): + """ + Move a previously made figure to an arbitrary (x,y) location. This differs from the Move methods because it + uses absolute coordinates versus relative for Move + + :param figure: Previously obtained figure-id. These are returned from all Draw methods + :type figure: (id) + :param x: location on X axis (in user coords) to move the upper left corner of the figure + :type x: int | float + :param y: location on Y axis (in user coords) to move the upper left corner of the figure + :type y: int | float + """ + + zero_converted = self._convert_xy_to_canvas_xy(0, 0) + shift_converted = self._convert_xy_to_canvas_xy(x, y) + shift_amount = (shift_converted[0] - zero_converted[0], shift_converted[1] - zero_converted[1]) + if figure is None: + print('*** WARNING - Your figure is None. It most likely means your did not Finalize your Window ***') + print('Call Window.Finalize() prior to all graph operations') + return None + xy = self._TKCanvas2.coords(figure) + self._TKCanvas2.move(figure, shift_converted[0] - xy[0], shift_converted[1] - xy[1]) + + def send_figure_to_back(self, figure): + """ + Changes Z-order of figures on the Graph. Sends the indicated figure to the back of all other drawn figures + + :param figure: value returned by tkinter when creating the figure / drawing + :type figure: (int) + """ + self.TKCanvas.tag_lower(figure) # move figure to the "bottom" of all other figure + + def bring_figure_to_front(self, figure): + """ + Changes Z-order of figures on the Graph. Brings the indicated figure to the front of all other drawn figures + + :param figure: value returned by tkinter when creating the figure / drawing + :type figure: (int) + """ + self.TKCanvas.tag_raise(figure) # move figure to the "top" of all other figures + + def get_figures_at_location(self, location): + """ + Returns a list of figures located at a particular x,y location within the Graph + + :param location: point to check + :type location: (int, int) | Tuple[float, float] + :return: a list of previously drawn "Figures" (returned from the drawing primitives) + :rtype: List[int] + """ + x, y = self._convert_xy_to_canvas_xy(location[0], location[1]) + ids = self.TKCanvas.find_overlapping(x, y, x, y) + return ids + + def get_bounding_box(self, figure): + """ + Given a figure, returns the upper left and lower right bounding box coordinates + + :param figure: a previously drawing figure + :type figure: object + :return: upper left x, upper left y, lower right x, lower right y + :rtype: Tuple[int, int, int, int] | Tuple[float, float, float, float] + """ + box = self.TKCanvas.bbox(figure) + top_left = self._convert_canvas_xy_to_xy(box[0], box[1]) + bottom_right = self._convert_canvas_xy_to_xy(box[2], box[3]) + return top_left, bottom_right + + def change_coordinates(self, graph_bottom_left, graph_top_right): + """ + Changes the corrdinate system to a new one. The same 2 points in space are used to define the coorinate + system - the bottom left and the top right values of your graph. + + :param graph_bottom_left: The bottoms left corner of your coordinate system + :type graph_bottom_left: (int, int) (x,y) + :param graph_top_right: The top right corner of your coordinate system + :type graph_top_right: (int, int) (x,y) + """ + self.BottomLeft = graph_bottom_left + self.TopRight = graph_top_right + + @property + def tk_canvas(self): + """ + Returns the underlying tkiner Canvas widget + + :return: The tkinter canvas widget + :rtype: (tk.Canvas) + """ + if self._TKCanvas2 is None: + print('*** Did you forget to call Finalize()? Your code should look something like: ***') + print('*** form = sg.Window("My Form").Layout(layout).Finalize() ***') + return self._TKCanvas2 + + # button release callback + def button_release_call_back(self, event): + """ + Not a user callable method. Used to get Graph click events. Called by tkinter when button is released + + :param event: (event) event info from tkinter. Note not used in this method + :type event: + """ + if not self.DragSubmits: + return # only report mouse up for drag operations + self.ClickPosition = self._convert_canvas_xy_to_xy(event.x, event.y) + self.ParentForm.LastButtonClickedWasRealtime = False + if self.Key is not None: + self.ParentForm.LastButtonClicked = self.Key + else: + self.ParentForm.LastButtonClicked = '__GRAPH__' # need to put something rather than None + _exit_mainloop(self.ParentForm) + if isinstance(self.ParentForm.LastButtonClicked, str): + self.ParentForm.LastButtonClicked = self.ParentForm.LastButtonClicked + '+UP' + else: + self.ParentForm.LastButtonClicked = (self.ParentForm.LastButtonClicked, '+UP') + self.MouseButtonDown = False + + # button callback + def button_press_call_back(self, event): + """ + Not a user callable method. Used to get Graph click events. Called by tkinter when button is released + + :param event: (event) event info from tkinter. Contains the x and y coordinates of a click + :type event: + """ + + self.ClickPosition = self._convert_canvas_xy_to_xy(event.x, event.y) + self.ParentForm.LastButtonClickedWasRealtime = self.DragSubmits + if self.Key is not None: + self.ParentForm.LastButtonClicked = self.Key + else: + self.ParentForm.LastButtonClicked = '__GRAPH__' # need to put something rather than None + # if self.ParentForm.CurrentlyRunningMainloop: + # self.ParentForm.TKroot.quit() # kick out of loop if read was called + _exit_mainloop(self.ParentForm) + self.MouseButtonDown = True + + def _update_position_for_returned_values(self, event): + """ + Updates the variable that's used when the values dictionary is returned from a window read. + + Not called by the user. It's called from another method/function that tkinter calledback + + :param event: (event) event info from tkinter. Contains the x and y coordinates of a click + :type event: + """ + """ + Updates the variable that's used when the values dictionary is returned from a window read. + + Not called by the user. It's called from another method/function that tkinter calledback + + :param event: (event) event info from tkinter. Contains the x and y coordinates of a click + :type event: + """ + + self.ClickPosition = self._convert_canvas_xy_to_xy(event.x, event.y) + + # button callback + def motion_call_back(self, event): + """ + Not a user callable method. Used to get Graph mouse motion events. Called by tkinter when mouse moved + + :param event: (event) event info from tkinter. Contains the x and y coordinates of a mouse + :type event: + """ + + if not self.MouseButtonDown and not self.motion_events: + return + self.ClickPosition = self._convert_canvas_xy_to_xy(event.x, event.y) + self.ParentForm.LastButtonClickedWasRealtime = self.DragSubmits + if self.Key is not None: + self.ParentForm.LastButtonClicked = self.Key + else: + self.ParentForm.LastButtonClicked = '__GRAPH__' # need to put something rather than None + # if self.ParentForm.CurrentlyRunningMainloop: + # self.ParentForm.TKroot.quit() # kick out of loop if read was called + if self.motion_events and not self.MouseButtonDown: + if isinstance(self.ParentForm.LastButtonClicked, str): + self.ParentForm.LastButtonClicked = self.ParentForm.LastButtonClicked + '+MOVE' + else: + self.ParentForm.LastButtonClicked = (self.ParentForm.LastButtonClicked, '+MOVE') + _exit_mainloop(self.ParentForm) + + BringFigureToFront = bring_figure_to_front + ButtonPressCallBack = button_press_call_back + ButtonReleaseCallBack = button_release_call_back + DeleteFigure = delete_figure + DrawArc = draw_arc + DrawCircle = draw_circle + DrawImage = draw_image + DrawLine = draw_line + DrawOval = draw_oval + DrawPoint = draw_point + DrawPolygon = draw_polygon + DrawLines = draw_lines + DrawRectangle = draw_rectangle + DrawText = draw_text + GetFiguresAtLocation = get_figures_at_location + GetBoundingBox = get_bounding_box + Erase = erase + MotionCallBack = motion_call_back + Move = move + MoveFigure = move_figure + RelocateFigure = relocate_figure + SendFigureToBack = send_figure_to_back + TKCanvas = tk_canvas + Update = update + + +G = Graph + + +# ---------------------------------------------------------------------- # +# Frame # +# ---------------------------------------------------------------------- # +class Frame(Element): + """ + A Frame Element that contains other Elements. Encloses with a line around elements and a text label. + """ + + def __init__(self, title, layout, title_color=None, background_color=None, title_location=None, + relief=DEFAULT_FRAME_RELIEF, size=(None, None), s=(None, None), font=None, pad=None, p=None, border_width=None, key=None, k=None, + tooltip=None, right_click_menu=None, expand_x=False, expand_y=False, grab=None, visible=True, element_justification='left', vertical_alignment=None, + metadata=None): + """ + :param title: text that is displayed as the Frame's "label" or title + :type title: (str) + :param layout: The layout to put inside the Frame + :type layout: List[List[Elements]] + :param title_color: color of the title text + :type title_color: (str) + :param background_color: background color of the Frame + :type background_color: (str) + :param title_location: location to place the text title. Choices include: TITLE_LOCATION_TOP TITLE_LOCATION_BOTTOM TITLE_LOCATION_LEFT TITLE_LOCATION_RIGHT TITLE_LOCATION_TOP_LEFT TITLE_LOCATION_TOP_RIGHT TITLE_LOCATION_BOTTOM_LEFT TITLE_LOCATION_BOTTOM_RIGHT + :type title_location: (str) + :param relief: relief style. Values are same as other elements with reliefs. Choices include RELIEF_RAISED RELIEF_SUNKEN RELIEF_FLAT RELIEF_RIDGE RELIEF_GROOVE RELIEF_SOLID + :type relief: (str) + :param size: (width, height) Sets an initial hard-coded size for the Frame. This used to be a problem, but was fixed in 4.53.0 and works better than Columns when using the size paramter + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param font: specifies the font family, size, etc. for the TITLE. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param border_width: width of border around element in pixels + :type border_width: (int) + :param key: Value that uniquely identifies this element from all other elements. Used when Finding an element or in return values. Must be unique to the window + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param grab: If True can grab this element and move the window around. Default is False + :type grab: (bool) + :param visible: set visibility state of the element + :type visible: (bool) + :param element_justification: All elements inside the Frame will have this justification 'left', 'right', 'center' are valid values + :type element_justification: (str) + :param vertical_alignment: Place the Frame at the 'top', 'center', 'bottom' of the row (can also use t,c,r). Defaults to no setting (tkinter decides) + :type vertical_alignment: (str) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.UseDictionary = False + self.ReturnValues = None + self.ReturnValuesList = [] + self.ReturnValuesDictionary = {} + self.DictionaryKeyCounter = 0 + self.ParentWindow = None + self.Rows = [] + # self.ParentForm = None + self.TKFrame = None + self.Title = title + self.Relief = relief + self.TitleLocation = title_location + self.BorderWidth = border_width + self.BackgroundColor = background_color if background_color is not None else DEFAULT_BACKGROUND_COLOR + self.RightClickMenu = right_click_menu + self.ContainerElemementNumber = Window._GetAContainerNumber() + self.ElementJustification = element_justification + self.VerticalAlignment = vertical_alignment + self.Widget = None # type: tk.LabelFrame + self.Grab = grab + self.Layout(layout) + key = key if key is not None else k + sz = size if size != (None, None) else s + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + + super().__init__(ELEM_TYPE_FRAME, background_color=background_color, text_color=title_color, size=sz, + font=font, pad=pad, key=key, tooltip=tooltip, visible=visible, metadata=metadata) + return + + def add_row(self, *args): + """ + Not recommended user call. Used to add rows of Elements to the Frame Element. + + :param *args: The list of elements for this row + :type *args: List[Element] + """ + NumRows = len(self.Rows) # number of existing rows is our row number + CurrentRowNumber = NumRows # this row's number + CurrentRow = [] # start with a blank row and build up + # ------------------------- Add the elements to a row ------------------------- # + for i, element in enumerate(args): # Loop through list of elements and add them to the row + if isinstance(element, tuple) or isinstance(element, list): + self.add_row(*element) + continue + + if type(element) == list: + PopupError('Error creating Frame layout', + 'Layout has a LIST instead of an ELEMENT', + 'This sometimes means you have a badly placed ]', + 'The offensive list is:', + element, + 'This list will be stripped from your layout', + keep_on_top=True + ) + continue + elif callable(element) and not isinstance(element, Element): + PopupError('Error creating Frame layout', + 'Layout has a FUNCTION instead of an ELEMENT', + 'This likely means you are missing () from your layout', + 'The offensive list is:', + element, + 'This item will be stripped from your layout', + keep_on_top=True) + continue + if element.ParentContainer is not None: + warnings.warn( + '*** YOU ARE ATTEMPTING TO REUSE AN ELEMENT IN YOUR LAYOUT! Once placed in a layout, an element cannot be used in another layout. ***', + UserWarning) + _error_popup_with_traceback('Error creating Frame layout', + 'The layout specified has already been used', + 'You MUST start witha "clean", unused layout every time you create a window', + 'The offensive Element = ', + element, + 'and has a key = ', element.Key, + 'This item will be stripped from your layout', + 'Hint - try printing your layout and matching the IDs "print(layout)"', + ) + continue + element.Position = (CurrentRowNumber, i) + element.ParentContainer = self + CurrentRow.append(element) + if element.Key is not None: + self.UseDictionary = True + # ------------------------- Append the row to list of Rows ------------------------- # + self.Rows.append(CurrentRow) + + def layout(self, rows): + """ + Can use like the Window.Layout method, but it's better to use the layout parameter when creating + + :param rows: The rows of Elements + :type rows: List[List[Element]] + :return: Used for chaining + :rtype: (Frame) + """ + + for row in rows: + try: + iter(row) + except TypeError: + PopupError('Error creating Frame layout', + 'Your row is not an iterable (e.g. a list)', + 'Instead of a list, the type found was {}'.format(type(row)), + 'The offensive row = ', + row, + 'This item will be stripped from your layout', keep_on_top=True, image=_random_error_emoji()) + continue + self.AddRow(*row) + return self + + def _GetElementAtLocation(self, location): + """ + Not user callable. Used to find the Element at a row, col position within the layout + + :param location: (row, column) position of the element to find in layout + :type location: (int, int) + :return: (Element) The element found at the location + :rtype: (Element) + """ + + (row_num, col_num) = location + row = self.Rows[row_num] + element = row[col_num] + return element + + def update(self, value=None, visible=None): + """ + Changes some of the settings for the Frame Element. Must call `Window.Read` or `Window.Finalize` prior + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param value: New text value (Title) to show on frame + :type value: (Any) + :param visible: control visibility of element + :type visible: (bool) + """ + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Frame.update - The window was closed') + return + + if visible is False: + self._pack_forget_save_settings() + # self.TKFrame.pack_forget() + elif visible is True: + self._pack_restore_settings() + # self.TKFrame.pack(padx=self.pad_used[0], pady=self.pad_used[1]) + if value is not None: + self.TKFrame.config(text=str(value)) + if visible is not None: + self._visible = visible + + AddRow = add_row + Layout = layout + Update = update + + +Fr = Frame + + +# ---------------------------------------------------------------------- # +# Vertical Separator # +# ---------------------------------------------------------------------- # +class VerticalSeparator(Element): + """ + Vertical Separator Element draws a vertical line at the given location. It will span 1 "row". Usually paired with + Column Element if extra height is needed + """ + + def __init__(self, color=None, pad=None, p=None, key=None, k=None): + """ + :param color: Color of the line. Defaults to theme's text color. Can be name or #RRGGBB format + :type color: (str) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: Value that uniquely identifies this element from all other elements. Used when Finding an element or in return values. Must be unique to the window + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + """ + key = key if key is not None else k + pad = pad if pad is not None else p + self.expand_x = None + self.expand_y = None + self.Orientation = 'vertical' # for now only vertical works + self.color = color if color is not None else theme_text_color() + super().__init__(ELEM_TYPE_SEPARATOR, pad=pad, key=key) + + +VSeperator = VerticalSeparator +VSeparator = VerticalSeparator +VSep = VerticalSeparator +VLine = VerticalSeparator +VerticalLine = VerticalSeparator + + +# ---------------------------------------------------------------------- # +# Horizontal Separator # +# ---------------------------------------------------------------------- # +class HorizontalSeparator(Element): + """ + Horizontal Separator Element draws a Horizontal line at the given location. + """ + + def __init__(self, color=None, pad=None, p=None, key=None, k=None): + """ + :param color: Color of the line. Defaults to theme's text color. Can be name or #RRGGBB format + :type color: (str) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: Value that uniquely identifies this element from all other elements. Used when Finding an element or in return values. Must be unique to the window + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + """ + + self.Orientation = 'horizontal' # for now only vertical works + self.color = color if color is not None else theme_text_color() + self.expand_x = True + self.expand_y = None + key = key if key is not None else k + pad = pad if pad is not None else p + + super().__init__(ELEM_TYPE_SEPARATOR, pad=pad, key=key) + + +HSeparator = HorizontalSeparator +HSep = HorizontalSeparator +HorizontalLine = HorizontalSeparator +HLine = HorizontalSeparator +Line = HorizontalSeparator + + +# ---------------------------------------------------------------------- # +# Sizegrip # +# ---------------------------------------------------------------------- # +class Sizegrip(Element): + """ + Sizegrip element will be added to the bottom right corner of your window. + It should be placed on the last row of your window along with any other elements on that row. + The color will match the theme's background color. + """ + + def __init__(self, background_color=None, pad=None, p=(0, 0), key=None, k=None): + """ + Sizegrip Element + :param background_color: color to use for the background of the grip + :type background_color: str + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: Value that uniquely identifies this element from all other elements. Used when Finding an element or in return values. Must be unique to the window + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + """ + + bg = background_color if background_color is not None else theme_background_color() + pad = pad if pad is not None else p + key = key if key is not None else k + + super().__init__(ELEM_TYPE_SIZEGRIP, background_color=bg, key=key, pad=pad) + + +SGrip = Sizegrip + + +# ---------------------------------------------------------------------- # +# Tab # +# ---------------------------------------------------------------------- # +class Tab(Element): + """ + Tab Element is another "Container" element that holds a layout and displays a tab with text. Used with TabGroup only + Tabs are never placed directly into a layout. They are always "Contained" in a TabGroup layout + """ + + def __init__(self, title, layout, title_color=None, background_color=None, font=None, pad=None, p=None, disabled=False, + border_width=None, key=None, k=None, tooltip=None, right_click_menu=None, expand_x=False, expand_y=False, visible=True, element_justification='left', + image_source=None, image_subsample=None, image_zoom=None, metadata=None): + """ + :param title: text to show on the tab + :type title: (str) + :param layout: The element layout that will be shown in the tab + :type layout: List[List[Element]] + :param title_color: color of the tab text (note not currently working on tkinter) + :type title_color: (str) + :param background_color: color of background of the entire layout + :type background_color: (str) + :param font: NOT USED in the tkinter port + :type font: (str or (str, int[, str]) or None) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param disabled: If True button will be created disabled + :type disabled: (bool) + :param border_width: NOT USED in tkinter port + :type border_width: (int) + :param key: Value that uniquely identifies this element from all other elements. Used when Finding an element or in return values. Must be unique to the window + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param visible: set visibility state of the element + :type visible: (bool) + :param element_justification: All elements inside the Tab will have this justification 'left', 'right', 'center' are valid values + :type element_justification: (str) + :param image_source: A filename or a base64 bytes of an image to place on the Tab + :type image_source: str | bytes | None + :param image_subsample: amount to reduce the size of the image. Divides the size by this number. 2=1/2, 3=1/3, 4=1/4, etc + :type image_subsample: (int) + :param image_zoom: amount to increase the size of the image. 2=twice size, 3=3 times, etc + :type image_zoom: (int) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + filename = data = None + if image_source is not None: + if isinstance(image_source, bytes): + data = image_source + elif isinstance(image_source, str): + filename = image_source + else: + warnings.warn('Image element - source is not a valid type: {}'.format(type(image_source)), UserWarning) + + self.Filename = filename + self.Data = data + self.ImageSubsample = image_subsample + self.zoom = int(image_zoom) if image_zoom is not None else None + self.UseDictionary = False + self.ReturnValues = None + self.ReturnValuesList = [] + self.ReturnValuesDictionary = {} + self.DictionaryKeyCounter = 0 + self.ParentWindow = None + self.Rows = [] + self.TKFrame = None + self.Widget = None # type: tk.Frame + self.Title = title + self.BorderWidth = border_width + self.Disabled = disabled + self.ParentNotebook = None + self.TabID = None + self.BackgroundColor = background_color if background_color is not None else DEFAULT_BACKGROUND_COLOR + self.RightClickMenu = right_click_menu + self.ContainerElemementNumber = Window._GetAContainerNumber() + self.ElementJustification = element_justification + key = key if key is not None else k + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + + self.Layout(layout) + + super().__init__(ELEM_TYPE_TAB, background_color=background_color, text_color=title_color, font=font, pad=pad, key=key, tooltip=tooltip, + visible=visible, metadata=metadata) + return + + def add_row(self, *args): + """ + Not recommended use call. Used to add rows of Elements to the Frame Element. + + :param *args: The list of elements for this row + :type *args: List[Element] + """ + NumRows = len(self.Rows) # number of existing rows is our row number + CurrentRowNumber = NumRows # this row's number + CurrentRow = [] # start with a blank row and build up + # ------------------------- Add the elements to a row ------------------------- # + for i, element in enumerate(args): # Loop through list of elements and add them to the row + if type(element) == list: + popup_error_with_traceback('Error creating Tab layout', + 'Layout has a LIST instead of an ELEMENT', + 'This sometimes means you have a badly placed ]', + 'The offensive list is:', + element, + 'This list will be stripped from your layout') + continue + elif callable(element) and not isinstance(element, Element): + popup_error_with_traceback('Error creating Tab layout', + 'Layout has a FUNCTION instead of an ELEMENT', + 'This likely means you are missing () from your layout', + 'The offensive list is:', + element, + 'This item will be stripped from your layout') + continue + if element.ParentContainer is not None: + warnings.warn( + '*** YOU ARE ATTEMPTING TO REUSE AN ELEMENT IN YOUR LAYOUT! Once placed in a layout, an element cannot be used in another layout. ***', + UserWarning) + popup_error_with_traceback('Error creating Tab layout', + 'The layout specified has already been used', + 'You MUST start witha "clean", unused layout every time you create a window', + 'The offensive Element = ', + element, + 'and has a key = ', element.Key, + 'This item will be stripped from your layout', + 'Hint - try printing your layout and matching the IDs "print(layout)"') + continue + element.Position = (CurrentRowNumber, i) + element.ParentContainer = self + CurrentRow.append(element) + if element.Key is not None: + self.UseDictionary = True + # ------------------------- Append the row to list of Rows ------------------------- # + self.Rows.append(CurrentRow) + + def layout(self, rows): + """ + Not user callable. Use layout parameter instead. Creates the layout using the supplied rows of Elements + + :param rows: List[List[Element]] The list of rows + :type rows: List[List[Element]] + :return: (Tab) used for chaining + :rtype: + """ + + for row in rows: + try: + iter(row) + except TypeError: + PopupError('Error creating Tab layout', + 'Your row is not an iterable (e.g. a list)', + 'Instead of a list, the type found was {}'.format(type(row)), + 'The offensive row = ', + row, + 'This item will be stripped from your layout', keep_on_top=True, image=_random_error_emoji()) + continue + self.AddRow(*row) + return self + + def update(self, title=None, disabled=None, visible=None): + """ + Changes some of the settings for the Tab Element. Must call `Window.Read` or `Window.Finalize` prior + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param title: tab title + :type title: (str) + :param disabled: disable or enable state of the element + :type disabled: (bool) + :param visible: control visibility of element + :type visible: (bool) + """ + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Tab.update - The window was closed') + return + + state = 'normal' + if disabled is not None: + self.Disabled = disabled + if disabled: + state = 'disabled' + if visible is False: + state = 'hidden' + if visible is not None: + self._visible = visible + + self.ParentNotebook.tab(self.TabID, state=state) + + if title is not None: + self.Title = str(title) + self.ParentNotebook.tab(self.TabID, text=self.Title) + # self.ParentNotebook.tab(self.ContainerElemementNumber-1, text=self.Title) + + # if visible is False: + # self.ParentNotebook.pack_forget() + # elif visible is True: + # self.ParentNotebook.pack() + return self + + def _GetElementAtLocation(self, location): + """ + Not user callable. Used to find the Element at a row, col position within the layout + + :param location: (row, column) position of the element to find in layout + :type location: (int, int) + :return: The element found at the location + :rtype: (Element) + """ + + (row_num, col_num) = location + row = self.Rows[row_num] + element = row[col_num] + return element + + def select(self): + """ + Create a tkinter event that mimics user clicking on a tab. Must have called window.Finalize / Read first! + + """ + # Use a try in case the window has been destoyed + try: + self.ParentNotebook.select(self.TabID) + except Exception as e: + print('Exception Selecting Tab {}'.format(e)) + + AddRow = add_row + Layout = layout + Select = select + Update = update + + +# ---------------------------------------------------------------------- # +# TabGroup # +# ---------------------------------------------------------------------- # +class TabGroup(Element): + """ + TabGroup Element groups together your tabs into the group of tabs you see displayed in your window + """ + + def __init__(self, layout, tab_location=None, title_color=None, tab_background_color=None, selected_title_color=None, selected_background_color=None, + background_color=None, focus_color=None, font=None, change_submits=False, enable_events=False, pad=None, p=None, border_width=None, tab_border_width=None, + theme=None, key=None, k=None, + size=(None, None), s=(None, None), tooltip=None, right_click_menu=None, expand_x=False, expand_y=False, visible=True, metadata=None): + """ + :param layout: Layout of Tabs. Different than normal layouts. ALL Tabs should be on first row + :type layout: List[List[Tab]] + :param tab_location: location that tabs will be displayed. Choices are left, right, top, bottom, lefttop, leftbottom, righttop, rightbottom, bottomleft, bottomright, topleft, topright + :type tab_location: (str) + :param title_color: color of text on tabs + :type title_color: (str) + :param tab_background_color: color of all tabs that are not selected + :type tab_background_color: (str) + :param selected_title_color: color of tab text when it is selected + :type selected_title_color: (str) + :param selected_background_color: color of tab when it is selected + :type selected_background_color: (str) + :param background_color: color of background area that tabs are located on + :type background_color: (str) + :param focus_color: color of focus indicator on the tabs + :type focus_color: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param change_submits: * DEPRICATED DO NOT USE. Use `enable_events` instead + :type change_submits: (bool) + :param enable_events: If True then switching tabs will generate an Event + :type enable_events: (bool) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param border_width: width of border around element in pixels + :type border_width: (int) + :param tab_border_width: width of border around the tabs + :type tab_border_width: (int) + :param theme: DEPRICATED - You can only specify themes using set options or when window is created. It's not possible to do it on an element basis + :type theme: (str) + :param key: Value that uniquely identifies this element from all other elements. Used when Finding an element or in return values. Must be unique to the window + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param size: (width, height) w=pixels-wide, h=pixels-high. Either item in tuple can be None to indicate use the computed value and set only 1 direction + :type size: (int|None, int|None) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int|None, int|None) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param visible: DEPRECATED - Should you need to control visiblity for the TabGroup as a whole, place it into a Column element + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.UseDictionary = False + self.ReturnValues = None + self.ReturnValuesList = [] + self.ReturnValuesDictionary = {} + self.DictionaryKeyCounter = 0 + self.ParentWindow = None + self.SelectedTitleColor = selected_title_color if selected_title_color is not None else LOOK_AND_FEEL_TABLE[CURRENT_LOOK_AND_FEEL]['TEXT'] + self.SelectedBackgroundColor = selected_background_color if selected_background_color is not None else LOOK_AND_FEEL_TABLE[CURRENT_LOOK_AND_FEEL][ + 'BACKGROUND'] + title_color = title_color if title_color is not None else LOOK_AND_FEEL_TABLE[CURRENT_LOOK_AND_FEEL]['TEXT_INPUT'] + self.TabBackgroundColor = tab_background_color if tab_background_color is not None else LOOK_AND_FEEL_TABLE[CURRENT_LOOK_AND_FEEL]['INPUT'] + self.Rows = [] + self.TKNotebook = None # type: ttk.Notebook + self.Widget = None # type: ttk.Notebook + self.tab_index_to_key = {} # has a list of the tabs in the notebook and their associated key + self.TabCount = 0 + self.BorderWidth = border_width + self.BackgroundColor = background_color if background_color is not None else DEFAULT_BACKGROUND_COLOR + self.ChangeSubmits = change_submits or enable_events + self.TabLocation = tab_location + self.ElementJustification = 'left' + self.RightClickMenu = right_click_menu + self.TabBorderWidth = tab_border_width + self.FocusColor = focus_color + + key = key if key is not None else k + sz = size if size != (None, None) else s + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + + self.Layout(layout) + + super().__init__(ELEM_TYPE_TAB_GROUP, size=sz, background_color=background_color, text_color=title_color, font=font, + pad=pad, key=key, tooltip=tooltip, visible=visible, metadata=metadata) + return + + def add_row(self, *args): + """ + Not recommended user call. Used to add rows of Elements to the Frame Element. + + :param *args: The list of elements for this row + :type *args: List[Element] + """ + + NumRows = len(self.Rows) # number of existing rows is our row number + CurrentRowNumber = NumRows # this row's number + CurrentRow = [] # start with a blank row and build up + # ------------------------- Add the elements to a row ------------------------- # + for i, element in enumerate(args): # Loop through list of elements and add them to the row + if type(element) == list: + PopupError('Error creating Tab layout', + 'Layout has a LIST instead of an ELEMENT', + 'This sometimes means you have a badly placed ]', + 'The offensive list is:', + element, + 'This list will be stripped from your layout', keep_on_top=True, image=_random_error_emoji() + ) + continue + elif callable(element) and not isinstance(element, Element): + PopupError('Error creating Tab layout', + 'Layout has a FUNCTION instead of an ELEMENT', + 'This likely means you are missing () from your layout', + 'The offensive list is:', + element, + 'This item will be stripped from your layout', keep_on_top=True, image=_random_error_emoji()) + continue + if element.ParentContainer is not None: + warnings.warn( + '*** YOU ARE ATTEMPTING TO REUSE AN ELEMENT IN YOUR LAYOUT! Once placed in a layout, an element cannot be used in another layout. ***', + UserWarning) + PopupError('Error creating Tab layout', + 'The layout specified has already been used', + 'You MUST start witha "clean", unused layout every time you create a window', + 'The offensive Element = ', + element, + 'and has a key = ', element.Key, + 'This item will be stripped from your layout', + 'Hint - try printing your layout and matching the IDs "print(layout)"', keep_on_top=True, image=_random_error_emoji()) + continue + element.Position = (CurrentRowNumber, i) + element.ParentContainer = self + CurrentRow.append(element) + if element.Key is not None: + self.UseDictionary = True + # ------------------------- Append the row to list of Rows ------------------------- # + self.Rows.append(CurrentRow) + + def layout(self, rows): + """ + Can use like the Window.Layout method, but it's better to use the layout parameter when creating + + :param rows: The rows of Elements + :type rows: List[List[Element]] + :return: Used for chaining + :rtype: (Frame) + """ + for row in rows: + try: + iter(row) + except TypeError: + PopupError('Error creating Tab layout', + 'Your row is not an iterable (e.g. a list)', + 'Instead of a list, the type found was {}'.format(type(row)), + 'The offensive row = ', + row, + 'This item will be stripped from your layout', keep_on_top=True, image=_random_error_emoji()) + continue + self.AddRow(*row) + return self + + def _GetElementAtLocation(self, location): + """ + Not user callable. Used to find the Element at a row, col position within the layout + + :param location: (row, column) position of the element to find in layout + :type location: (int, int) + :return: The element found at the location + :rtype: (Element) + """ + + (row_num, col_num) = location + row = self.Rows[row_num] + element = row[col_num] + return element + + def find_key_from_tab_name(self, tab_name): + """ + Searches through the layout to find the key that matches the text on the tab. Implies names should be unique + + :param tab_name: name of a tab + :type tab_name: str + :return: Returns the key or None if no key found + :rtype: key | None + """ + for row in self.Rows: + for element in row: + if element.Title == tab_name: + return element.Key + return None + + + def find_currently_active_tab_key(self): + """ + Returns the key for the currently active tab in this TabGroup + :return: Returns the key or None of no key found + :rtype: key | None + """ + try: + current_index = self.TKNotebook.index('current') + key = self.tab_index_to_key.get(current_index, None) + except: + key = None + + return key + + def get(self): + """ + Returns the current value for the Tab Group, which will be the currently selected tab's KEY or the text on + the tab if no key is defined. Returns None if an error occurs. + Note that this is exactly the same data that would be returned from a call to Window.read. Are you sure you + are using this method correctly? + + :return: The key of the currently selected tab or None if there is an error + :rtype: Any | None + """ + + try: + current_index = self.TKNotebook.index('current') + key = self.tab_index_to_key.get(current_index, None) + except: + key = None + + return key + + def add_tab(self, tab_element): + """ + Add a new tab to an existing TabGroup + This call was written so that tabs can be added at runtime as your user performs operations. + Your Window should already be created and finalized. + + :param tab_element: A Tab Element that has a layout in it + :type tab_element: Tab + """ + + self.add_row(tab_element) + tab_element.TKFrame = tab_element.Widget = tk.Frame(self.TKNotebook) + form = self.ParentForm + form._BuildKeyDictForWindow(form, tab_element, form.AllKeysDict) + form.AllKeysDict[tab_element.Key] = tab_element + # Pack the tab's layout into the tab. NOTE - This does NOT pack the Tab itself... for that see below... + PackFormIntoFrame(tab_element, tab_element.TKFrame, self.ParentForm) + + # - This is below - Perform the same operation that is performed when a Tab is packed into the window. + # If there's an image in the tab, then do the imagey-stuff + # ------------------- start of imagey-stuff ------------------- + try: + if tab_element.Filename is not None: + photo = tk.PhotoImage(file=tab_element.Filename) + elif tab_element.Data is not None: + photo = tk.PhotoImage(data=tab_element.Data) + else: + photo = None + + if tab_element.ImageSubsample and photo is not None: + photo = photo.subsample(tab_element.ImageSubsample) + # print('*ERROR laying out form.... Image Element has no image specified*') + except Exception as e: + photo = None + _error_popup_with_traceback('Your Window has an Tab Element with an IMAGE problem', + 'The traceback will show you the Window with the problem layout', + 'Look in this Window\'s layout for an Image tab_element that has a key of {}'.format(tab_element.Key), + 'The error occuring is:', e) + + tab_element.photo = photo + # add the label + if photo is not None: + width, height = photo.width(), photo.height() + tab_element.tktext_label = tk.Label(tab_element.ParentRowFrame, image=photo, width=width, height=height, bd=0) + else: + tab_element.tktext_label = tk.Label(tab_element.ParentRowFrame, bd=0) + # ------------------- end of imagey-stuff ------------------- + + state = 'normal' + if tab_element.Disabled: + state = 'disabled' + if tab_element.visible is False: + state = 'hidden' + if photo is not None: + self.TKNotebook.add(tab_element.TKFrame, text=tab_element.Title, compound=tk.LEFT, state=state, image=photo) + else: + self.TKNotebook.add(tab_element.TKFrame, text=tab_element.Title, state=state) + tab_element.ParentNotebook = self.TKNotebook + tab_element.TabID = self.TabCount + tab_element.ParentForm = self.ParentForm + self.TabCount += 1 + if tab_element.BackgroundColor != COLOR_SYSTEM_DEFAULT and tab_element.BackgroundColor is not None: + tab_element.TKFrame.configure(background=tab_element.BackgroundColor, highlightbackground=tab_element.BackgroundColor, + highlightcolor=tab_element.BackgroundColor) + if tab_element.BorderWidth is not None: + tab_element.TKFrame.configure(borderwidth=tab_element.BorderWidth) + if tab_element.Tooltip is not None: + tab_element.TooltipObject = ToolTip(tab_element.TKFrame, text=tab_element.Tooltip, timeout=DEFAULT_TOOLTIP_TIME) + _add_right_click_menu(tab_element, form) + + def update(self, visible=None): + """ + Enables changing the visibility + + :param visible: control visibility of element + :type visible: (bool) + """ + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in TabGroup.update - The window was closed') + return + + if visible is False: + self._pack_forget_save_settings() + elif visible is True: + self._pack_restore_settings() + + if visible is not None: + self._visible = visible + + AddRow = add_row + FindKeyFromTabName = find_key_from_tab_name + Get = get + Layout = layout + + +# ---------------------------------------------------------------------- # +# Slider # +# ---------------------------------------------------------------------- # +class Slider(Element): + """ + A slider, horizontal or vertical + """ + + def __init__(self, range=(None, None), default_value=None, resolution=None, tick_interval=None, orientation=None, + disable_number_display=False, setting=None, border_width=None, relief=None, change_submits=False, + enable_events=False, disabled=False, size=(None, None), s=(None, None), font=None, background_color=None, + text_color=None, trough_color=None, key=None, k=None, pad=None, p=None, expand_x=False, expand_y=False, tooltip=None, visible=True, metadata=None): + """ + :param range: slider's range (min value, max value) + :type range: (int, int) | Tuple[float, float] + :param default_value: starting value for the slider + :type default_value: int | float + :param resolution: the smallest amount the slider can be moved + :type resolution: int | float + :param tick_interval: how often a visible tick should be shown next to slider + :type tick_interval: int | float + :param orientation: 'horizontal' or 'vertical' ('h' or 'v' also work) + :type orientation: (str) + :param disable_number_display: if True no number will be displayed by the Slider Element + :type disable_number_display: (bool) + :param setting: If not None, then this element will be saved in a settings file using the key for the element + :type setting: (Any) + :param border_width: width of border around element in pixels + :type border_width: (int) + :param relief: relief style. Use constants - RELIEF_RAISED RELIEF_SUNKEN RELIEF_FLAT RELIEF_RIDGE RELIEF_GROOVE RELIEF_SOLID + :type relief: str | None + :param change_submits: * DEPRICATED DO NOT USE. Use `enable_events` instead + :type change_submits: (bool) + :param enable_events: If True then moving the slider will generate an Event + :type enable_events: (bool) + :param disabled: set disable state for element + :type disabled: (bool) + :param size: (l=length chars/rows, w=width pixels) + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param background_color: color of slider's background + :type background_color: (str) + :param text_color: color of the slider's text + :type text_color: (str) + :param trough_color: color of the slider's trough + :type trough_color: (str) + :param key: Value that uniquely identifies this element from all other elements. Used when Finding an element or in return values. Must be unique to the window + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param visible: set visibility state of the element + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.TKScale = self.Widget = None # type: tk.Scale + self.Range = (1, 10) if range == (None, None) else range + self.DefaultValue = self.Range[0] if default_value is None else default_value + self.Orientation = orientation if orientation else DEFAULT_SLIDER_ORIENTATION + self.BorderWidth = border_width if border_width else DEFAULT_SLIDER_BORDER_WIDTH + self.Relief = relief if relief else DEFAULT_SLIDER_RELIEF + self.Resolution = 1 if resolution is None else resolution + self.ChangeSubmits = change_submits or enable_events + self.Disabled = disabled + self.TickInterval = tick_interval + self.DisableNumericDisplay = disable_number_display + self.TroughColor = trough_color or DEFAULT_SCROLLBAR_COLOR + sz = size if size != (None, None) else s + temp_size = sz + if temp_size == (None, None): + temp_size = (20, 20) if self.Orientation.startswith('h') else (8, 20) + key = key if key is not None else k + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + if setting is not None: + self.setting = setting + self.DefaultValue = user_settings_get_entry(key, setting) + + super().__init__(ELEM_TYPE_INPUT_SLIDER, size=temp_size, font=font, background_color=background_color, + text_color=text_color, key=key, pad=pad, tooltip=tooltip, visible=visible, metadata=metadata) + return + + def update(self, value=None, range=(None, None), disabled=None, visible=None): + """ + Changes some of the settings for the Slider Element. Must call `Window.Read` or `Window.Finalize` prior + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param value: sets current slider value + :type value: int | float + :param range: Sets a new range for slider + :type range: (int, int) | Tuple[float, float + :param disabled: disable or enable state of the element + :type disabled: (bool) + :param visible: control visibility of element + :type visible: (bool) + """ + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Slider.update - The window was closed') + return + + if range != (None, None): + self.TKScale.config(from_=range[0], to_=range[1]) + if value is not None: + try: + self.TKIntVar.set(value) + except: + pass + self.DefaultValue = value + if disabled is True: + self.TKScale['state'] = 'disabled' + elif disabled is False: + self.TKScale['state'] = 'normal' + self.Disabled = disabled if disabled is not None else self.Disabled + + if visible is False: + self._pack_forget_save_settings() + elif visible is True: + self._pack_restore_settings() + + if visible is not None: + self._visible = visible + + def _SliderChangedHandler(self, event): + """ + Not user callable. Callback function for when slider is moved. + + :param event: (event) the event data provided by tkinter. Unknown format. Not used. + :type event: + """ + + if self.Key is not None: + self.ParentForm.LastButtonClicked = self.Key + else: + self.ParentForm.LastButtonClicked = '' + self.ParentForm.FormRemainedOpen = True + # if self.ParentForm.CurrentlyRunningMainloop: + # self.ParentForm.TKroot.quit() # kick the users out of the mainloop + _exit_mainloop(self.ParentForm) + + Update = update + + +Sl = Slider + + +# ---------------------------------------------------------------------- # +# TkFixedFrame (Used by Column) # +# ---------------------------------------------------------------------- # +class TkFixedFrame(tk.Frame): + """ + A tkinter frame that is used with Column Elements that do not have a scrollbar + """ + + def __init__(self, master, **kwargs): + """ + :param master: The parent widget + :type master: (tk.Widget) + :param **kwargs: The keyword args + :type **kwargs: + """ + tk.Frame.__init__(self, master, **kwargs) + + self.canvas = tk.Canvas(self) + + self.canvas.pack(side="left", fill="both", expand=True) + + # reset the view + self.canvas.xview_moveto(0) + self.canvas.yview_moveto(0) + + # create a frame inside the canvas which will be scrolled with it + self.TKFrame = tk.Frame(self.canvas, **kwargs) + self.frame_id = self.canvas.create_window(0, 0, window=self.TKFrame, anchor="nw") + self.canvas.config(borderwidth=0, highlightthickness=0) + self.TKFrame.config(borderwidth=0, highlightthickness=0) + self.config(borderwidth=0, highlightthickness=0) + + +# ---------------------------------------------------------------------- # +# TkScrollableFrame (Used by Column) # +# ---------------------------------------------------------------------- # +class TkScrollableFrame(tk.Frame): + """ + A frame with one or two scrollbars. Used to make Columns with scrollbars + """ + + def __init__(self, master, vertical_only, element, window, **kwargs): + """ + :param master: The parent widget + :type master: (tk.Widget) + :param vertical_only: if True the only a vertical scrollbar will be shown + :type vertical_only: (bool) + :param element: The element containing this object + :type element: (Column) + """ + tk.Frame.__init__(self, master, **kwargs) + # create a canvas object and a vertical scrollbar for scrolling it + + self.canvas = tk.Canvas(self) + element.Widget = self.canvas + # Okay, we're gonna make a list. Containing the y-min, x-min, y-max, and x-max of the frame + element.element_frame = self + _make_ttk_scrollbar(element, 'v', window) + # element.vsb = tk.Scrollbar(self, orient=tk.VERTICAL) + element.vsb.pack(side='right', fill="y", expand="false") + + if not vertical_only: + _make_ttk_scrollbar(element, 'h', window) + # self.hscrollbar = tk.Scrollbar(self, orient=tk.HORIZONTAL) + element.hsb.pack(side='bottom', fill="x", expand="false") + self.canvas.config(xscrollcommand=element.hsb.set) + # self.canvas = tk.Canvas(self, ) + # else: + # self.canvas = tk.Canvas(self) + + self.canvas.config(yscrollcommand=element.vsb.set) + self.canvas.pack(side="left", fill="both", expand=True) + # element.vsb.config(command=self.canvas.yview) + element.vsb.config(command=self.yview_override) + if not vertical_only: + # element.hsb.config(command=self.canvas.xview) + element.hsb.config(command=self.xview_override) + + # reset the view + self.canvas.xview_moveto(0) + self.canvas.yview_moveto(0) + + # create a frame inside the canvas which will be scrolled with it + self.TKFrame = tk.Frame(self.canvas, **kwargs) + self.frame_id = self.canvas.create_window(0, 0, window=self.TKFrame, anchor="nw") + self.canvas.config(borderwidth=0, highlightthickness=0) + self.TKFrame.config(borderwidth=0, highlightthickness=0) + self.config(borderwidth=0, highlightthickness=0) + + # Canvas can be: master, canvas, TKFrame + + # Chr0nic + + # self.unhookMouseWheel(None) + # self.TKFrame.bind("", self.hookMouseWheel) + # self.TKFrame.bind("", self.unhookMouseWheel) + # self.bind('', self.set_scrollregion) + + self.unhookMouseWheel(None) + self.canvas.bind("", self.hookMouseWheel) + self.canvas.bind("", self.unhookMouseWheel) + self.bind('', self.set_scrollregion) + + # Chr0nic + def hookMouseWheel(self, e): + # print("enter") + VarHolder.canvas_holder = self.canvas + self.canvas.bind_all('<4>', self.yscroll, add='+') + self.canvas.bind_all('<5>', self.yscroll, add='+') + self.canvas.bind_all("", self.yscroll, add='+') + self.canvas.bind_all("", self.xscroll, add='+') + + # Chr0nic + def unhookMouseWheel(self, e): + # print("leave") + VarHolder.canvas_holder = None + self.canvas.unbind_all('<4>') + self.canvas.unbind_all('<5>') + self.canvas.unbind_all("") + self.canvas.unbind_all("") + + def resize_frame(self, e): + self.canvas.itemconfig(self.frame_id, height=e.height, width=e.width) + + def yview_override(self, *args, **kwargs): + if self.canvas.yview() == (0.0, 1.0): + return + self.canvas.yview(*args, **kwargs) + + def xview_override(self, *args, **kwargs): + if self.canvas.xview() == (0.0, 1.0): + return + self.canvas.xview(*args, **kwargs) + + + def yscroll(self, event): + if self.canvas.yview() == (0.0, 1.0): + return + if event.num == 5 or event.delta < 0: + self.canvas.yview_scroll(1, "unit") + elif event.num == 4 or event.delta > 0: + self.canvas.yview_scroll(-1, "unit") + + def xscroll(self, event): + if self.canvas.xview() == (0.0, 1.0): + return + if event.num == 5 or event.delta < 0: + self.canvas.xview_scroll(1, "unit") + elif event.num == 4 or event.delta > 0: + self.canvas.xview_scroll(-1, "unit") + + def bind_mouse_scroll(self, parent, mode): + # ~~ Windows only + parent.bind("", mode) + # ~~ Unix only + parent.bind("", mode) + parent.bind("", mode) + + def set_scrollregion(self, event=None): + """ Set the scroll region on the canvas """ + self.canvas.configure(scrollregion=self.canvas.bbox('all')) + + +# ---------------------------------------------------------------------- # +# Column # +# ---------------------------------------------------------------------- # +class Column(Element): + """ + A container element that is used to create a layout within your window's layout + """ + + def __init__(self, layout, background_color=None, size=(None, None), s=(None, None), size_subsample_width=1, size_subsample_height=2, pad=None, p=None, scrollable=False, + vertical_scroll_only=False, right_click_menu=None, key=None, k=None, visible=True, justification=None, element_justification=None, + vertical_alignment=None, grab=None, expand_x=None, expand_y=None, metadata=None, + sbar_trough_color=None, sbar_background_color=None, sbar_arrow_color=None, sbar_width=None, sbar_arrow_width=None, + sbar_frame_color=None, sbar_relief=None): + """ + :param layout: Layout that will be shown in the Column container + :type layout: List[List[Element]] + :param background_color: color of background of entire Column + :type background_color: (str) + :param size: (width, height) size in pixels (doesn't work quite right, sometimes only 1 dimension is set by tkinter. Use a Sizer Element to help set sizes + :type size: (int | None, int | None) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int | None, int | None) + :param size_subsample_width: Determines the size of a scrollable column width based on 1/size_subsample * required size. 1 = match the contents exactly, 2 = 1/2 contents size, 3 = 1/3. Can be a fraction to make larger than required. + :type size_subsample_width: (float) + :param size_subsample_height: Determines the size of a scrollable height based on 1/size_subsample * required size. 1 = match the contents exactly, 2 = 1/2 contents size, 3 = 1/3. Can be a fraction to make larger than required.. + :type size_subsample_height: (float) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param scrollable: if True then scrollbars will be added to the column. If you update the contents of a scrollable column, be sure and call Column.contents_changed also + :type scrollable: (bool) + :param vertical_scroll_only: if True then no horizontal scrollbar will be shown if a scrollable column + :type vertical_scroll_only: (bool) + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param key: Value that uniquely identifies this element from all other elements. Used when Finding an element or in return values. Must be unique to the window + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set visibility state of the element + :type visible: (bool) + :param justification: set justification for the Column itself. Note entire row containing the Column will be affected + :type justification: (str) + :param element_justification: All elements inside the Column will have this justification 'left', 'right', 'center' are valid values + :type element_justification: (str) + :param vertical_alignment: Place the column at the 'top', 'center', 'bottom' of the row (can also use t,c,r). Defaults to no setting (tkinter decides) + :type vertical_alignment: (str) + :param grab: If True can grab this element and move the window around. Default is False + :type grab: (bool) + :param expand_x: If True the column will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the column will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + :param sbar_trough_color: Scrollbar color of the trough + :type sbar_trough_color: (str) + :param sbar_background_color: Scrollbar color of the background of the arrow buttons at the ends AND the color of the "thumb" (the thing you grab and slide). Switches to arrow color when mouse is over + :type sbar_background_color: (str) + :param sbar_arrow_color: Scrollbar color of the arrow at the ends of the scrollbar (it looks like a button). Switches to background color when mouse is over + :type sbar_arrow_color: (str) + :param sbar_width: Scrollbar width in pixels + :type sbar_width: (int) + :param sbar_arrow_width: Scrollbar width of the arrow on the scrollbar. It will potentially impact the overall width of the scrollbar + :type sbar_arrow_width: (int) + :param sbar_frame_color: Scrollbar Color of frame around scrollbar (available only on some ttk themes) + :type sbar_frame_color: (str) + :param sbar_relief: Scrollbar relief that will be used for the "thumb" of the scrollbar (the thing you grab that slides). Should be a constant that is defined at starting with "RELIEF_" - RELIEF_RAISED, RELIEF_SUNKEN, RELIEF_FLAT, RELIEF_RIDGE, RELIEF_GROOVE, RELIEF_SOLID + :type sbar_relief: (str) + """ + + self.UseDictionary = False + self.ReturnValues = None + self.ReturnValuesList = [] + self.ReturnValuesDictionary = {} + self.DictionaryKeyCounter = 0 + self.ParentWindow = None + self.ParentPanedWindow = None + self.Rows = [] + self.TKFrame = None + self.TKColFrame = None # type: tk.Frame + self.Scrollable = scrollable + self.VerticalScrollOnly = vertical_scroll_only + + self.RightClickMenu = right_click_menu + bg = background_color if background_color is not None else DEFAULT_BACKGROUND_COLOR + self.ContainerElemementNumber = Window._GetAContainerNumber() + self.ElementJustification = element_justification + self.Justification = justification + self.VerticalAlignment = vertical_alignment + key = key if key is not None else k + self.Grab = grab + self.expand_x = expand_x + self.expand_y = expand_y + self.Layout(layout) + sz = size if size != (None, None) else s + pad = pad if pad is not None else p + self.size_subsample_width = size_subsample_width + self.size_subsample_height = size_subsample_height + + super().__init__(ELEM_TYPE_COLUMN, background_color=bg, size=sz, pad=pad, key=key, visible=visible, metadata=metadata, + sbar_trough_color=sbar_trough_color, sbar_background_color=sbar_background_color, sbar_arrow_color=sbar_arrow_color, sbar_width=sbar_width, + sbar_arrow_width=sbar_arrow_width, sbar_frame_color=sbar_frame_color, sbar_relief=sbar_relief) + return + + def add_row(self, *args): + """ + Not recommended user call. Used to add rows of Elements to the Column Element. + + :param *args: The list of elements for this row + :type *args: List[Element] + """ + + NumRows = len(self.Rows) # number of existing rows is our row number + CurrentRowNumber = NumRows # this row's number + CurrentRow = [] # start with a blank row and build up + # ------------------------- Add the elements to a row ------------------------- # + for i, element in enumerate(args): # Loop through list of elements and add them to the row + if type(element) == list: + PopupError('Error creating Column layout', + 'Layout has a LIST instead of an ELEMENT', + 'This sometimes means you have a badly placed ]', + 'The offensive list is:', + element, + 'This list will be stripped from your layout', keep_on_top=True, image=_random_error_emoji() + ) + continue + elif callable(element) and not isinstance(element, Element): + PopupError('Error creating Column layout', + 'Layout has a FUNCTION instead of an ELEMENT', + 'This likely means you are missing () from your layout', + 'The offensive list is:', + element, + 'This item will be stripped from your layout', keep_on_top=True, image=_random_error_emoji()) + continue + if element.ParentContainer is not None: + warnings.warn( + '*** YOU ARE ATTEMPTING TO REUSE AN ELEMENT IN YOUR LAYOUT! Once placed in a layout, an element cannot be used in another layout. ***', + UserWarning) + PopupError('Error creating Column layout', + 'The layout specified has already been used', + 'You MUST start witha "clean", unused layout every time you create a window', + 'The offensive Element = ', + element, + 'and has a key = ', element.Key, + 'This item will be stripped from your layout', + 'Hint - try printing your layout and matching the IDs "print(layout)"', keep_on_top=True, image=_random_error_emoji()) + continue + element.Position = (CurrentRowNumber, i) + element.ParentContainer = self + CurrentRow.append(element) + if element.Key is not None: + self.UseDictionary = True + # ------------------------- Append the row to list of Rows ------------------------- # + self.Rows.append(CurrentRow) + + def layout(self, rows): + """ + Can use like the Window.Layout method, but it's better to use the layout parameter when creating + + :param rows: The rows of Elements + :type rows: List[List[Element]] + :return: Used for chaining + :rtype: (Column) + """ + + for row in rows: + try: + iter(row) + except TypeError: + PopupError('Error creating Column layout', + 'Your row is not an iterable (e.g. a list)', + 'Instead of a list, the type found was {}'.format(type(row)), + 'The offensive row = ', + row, + 'This item will be stripped from your layout', keep_on_top=True, image=_random_error_emoji()) + continue + self.AddRow(*row) + return self + + def _GetElementAtLocation(self, location): + """ + Not user callable. Used to find the Element at a row, col position within the layout + + :param location: (row, column) position of the element to find in layout + :type location: (int, int) + :return: The element found at the location + :rtype: (Element) + """ + + (row_num, col_num) = location + row = self.Rows[row_num] + element = row[col_num] + return element + + def update(self, visible=None): + """ + Changes some of the settings for the Column Element. Must call `Window.Read` or `Window.Finalize` prior + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param visible: control visibility of element + :type visible: (bool) + """ + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Column.update - The window was closed') + return + + if self.expand_x and self.expand_y: + expand = tk.BOTH + elif self.expand_x: + expand = tk.X + elif self.expand_y: + expand = tk.Y + else: + expand = None + + if visible is False: + if self.TKColFrame: + self._pack_forget_save_settings() + # self.TKColFrame.pack_forget() + if self.ParentPanedWindow: + self.ParentPanedWindow.remove(self.TKColFrame) + elif visible is True: + if self.TKColFrame: + self._pack_restore_settings() + # self.TKColFrame.pack(padx=self.pad_used[0], pady=self.pad_used[1], fill=expand) + if self.ParentPanedWindow: + self.ParentPanedWindow.add(self.TKColFrame) + if visible is not None: + self._visible = visible + + def contents_changed(self): + """ + When a scrollable column has part of its layout changed by making elements visible or invisible or the + layout is extended for the Column, then this method needs to be called so that the new scroll area + is computed to match the new contents. + """ + self.TKColFrame.canvas.config(scrollregion=self.TKColFrame.canvas.bbox('all')) + + AddRow = add_row + Layout = layout + Update = update + + +Col = Column + + +# ---------------------------------------------------------------------- # +# Pane # +# ---------------------------------------------------------------------- # +class Pane(Element): + """ + A sliding Pane that is unique to tkinter. Uses Columns to create individual panes + """ + + def __init__(self, pane_list, background_color=None, size=(None, None), s=(None, None), pad=None, p=None, orientation='vertical', + show_handle=True, relief=RELIEF_RAISED, handle_size=None, border_width=None, key=None, k=None, expand_x=None, expand_y=None, visible=True, metadata=None): + """ + :param pane_list: Must be a list of Column Elements. Each Column supplied becomes one pane that's shown + :type pane_list: List[Column] | Tuple[Column] + :param background_color: color of background + :type background_color: (str) + :param size: (width, height) w=characters-wide, h=rows-high How much room to reserve for the Pane + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param orientation: 'horizontal' or 'vertical' or ('h' or 'v'). Direction the Pane should slide + :type orientation: (str) + :param show_handle: if True, the handle is drawn that makes it easier to grab and slide + :type show_handle: (bool) + :param relief: relief style. Values are same as other elements that use relief values. RELIEF_RAISED RELIEF_SUNKEN RELIEF_FLAT RELIEF_RIDGE RELIEF_GROOVE RELIEF_SOLID + :type relief: (str) + :param handle_size: Size of the handle in pixels + :type handle_size: (int) + :param border_width: width of border around element in pixels + :type border_width: (int) + :param key: Value that uniquely identifies this element from all other elements. Used when Finding an element or in return values. Must be unique to the window + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param expand_x: If True the column will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the column will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param visible: set visibility state of the element + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.UseDictionary = False + self.ReturnValues = None + self.ReturnValuesList = [] + self.ReturnValuesDictionary = {} + self.DictionaryKeyCounter = 0 + self.ParentWindow = None + self.Rows = [] + self.TKFrame = None + self.PanedWindow = None + self.Orientation = orientation + self.PaneList = pane_list + self.ShowHandle = show_handle + self.Relief = relief + self.HandleSize = handle_size or 8 + self.BorderDepth = border_width + bg = background_color if background_color is not None else DEFAULT_BACKGROUND_COLOR + + self.Rows = [pane_list] + key = key if key is not None else k + sz = size if size != (None, None) else s + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + + super().__init__(ELEM_TYPE_PANE, background_color=bg, size=sz, pad=pad, key=key, visible=visible, metadata=metadata) + return + + def update(self, visible=None): + """ + Changes some of the settings for the Pane Element. Must call `Window.Read` or `Window.Finalize` prior + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param visible: control visibility of element + :type visible: (bool) + """ + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Pane.update - The window was closed') + return + + if visible is False: + self._pack_forget_save_settings() + elif visible is True: + self._pack_restore_settings() + + if visible is not None: + self._visible = visible + + Update = update + + +# ---------------------------------------------------------------------- # +# Menu # +# ---------------------------------------------------------------------- # +class Menu(Element): + """ + Menu Element is the Element that provides a Menu Bar that goes across the top of the window, just below titlebar. + Here is an example layout. The "&" are shortcut keys ALT+key. + Is a List of - "Item String" + List + Where Item String is what will be displayed on the Menubar itself. + The List that follows the item represents the items that are shown then Menu item is clicked + Notice how an "entry" in a mennu can be a list which means it branches out and shows another menu, etc. (resursive) + menu_def = [['&File', ['!&Open', '&Save::savekey', '---', '&Properties', 'E&xit']], + ['!&Edit', ['!&Paste', ['Special', 'Normal', ], 'Undo'], ], + ['&Debugger', ['Popout', 'Launch Debugger']], + ['&Toolbar', ['Command &1', 'Command &2', 'Command &3', 'Command &4']], + ['&Help', '&About...'], ] + Important Note! The colors, font, look of the Menubar itself cannot be changed, only the menus shown AFTER clicking the menubar + can be changed. If you want to change the style/colors the Menubar, then you will have to use the MenubarCustom element. + Finally, "keys" can be added to entries so make them unique. The "Save" entry has a key associated with it. You + can see it has a "::" which signifies the beginning of a key. The user will not see the key portion when the + menu is shown. The key portion is returned as part of the event. + """ + + def __init__(self, menu_definition, background_color=None, text_color=None, disabled_text_color=None, size=(None, None), s=(None, None), tearoff=False, + font=None, pad=None, p=None, key=None, k=None, visible=True, metadata=None): + """ + :param menu_definition: The Menu definition specified using lists (docs explain the format) + :type menu_definition: List[List[Tuple[str, List[str]]] + :param background_color: color of the background of menus, NOT the Menubar + :type background_color: (str) + :param text_color: text color for menus, NOT the Menubar. Can be in #RRGGBB format or a color name "black". + :type text_color: (str) + :param disabled_text_color: color to use for text when item in submenu, not the menubar itself, is disabled. Can be in #RRGGBB format or a color name "black" + :type disabled_text_color: (str) + :param size: Not used in the tkinter port + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) + :param tearoff: if True, then can tear the menu off from the window ans use as a floating window. Very cool effect + :type tearoff: (bool) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param font: specifies the font family, size, etc. of submenus. Does NOT apply to the Menubar itself. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param key: Value that uniquely identifies this element from all other elements. Used when Finding an element or in return values. Must be unique to the window + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set visibility state of the element + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.BackgroundColor = background_color if background_color is not None else theme_input_background_color() + self.TextColor = text_color if text_color is not None else theme_input_text_color() + + self.DisabledTextColor = disabled_text_color if disabled_text_color is not None else COLOR_SYSTEM_DEFAULT + self.MenuDefinition = copy.deepcopy(menu_definition) + self.Widget = self.TKMenu = None # type: tk.Menu + self.MenuItemChosen = None + key = key if key is not None else k + sz = size if size != (None, None) else s + pad = pad if pad is not None else p + + super().__init__(ELEM_TYPE_MENUBAR, background_color=self.BackgroundColor, text_color=self.TextColor, size=sz, pad=pad, key=key, visible=visible, + font=font, metadata=metadata) + # super().__init__(ELEM_TYPE_MENUBAR, background_color=COLOR_SYSTEM_DEFAULT, text_color=COLOR_SYSTEM_DEFAULT, size=sz, pad=pad, key=key, visible=visible, font=None, metadata=metadata) + + self.Tearoff = tearoff + + return + + def _MenuItemChosenCallback(self, item_chosen): # Menu Menu Item Chosen Callback + """ + Not user callable. Called when some end-point on the menu (an item) has been clicked. Send the information back to the application as an event. Before event can be sent + + :param item_chosen: the text that was clicked on / chosen from the menu + :type item_chosen: (str) + """ + # print('IN MENU ITEM CALLBACK', item_chosen) + self.MenuItemChosen = item_chosen + self.ParentForm.LastButtonClicked = item_chosen + self.ParentForm.FormRemainedOpen = True + # if self.ParentForm.CurrentlyRunningMainloop: + # self.ParentForm.TKroot.quit() # kick the users out of the mainloop + _exit_mainloop(self.ParentForm) + + def update(self, menu_definition=None, visible=None): + """ + Update a menubar - can change the menu definition and visibility. The entire menu has to be specified + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param menu_definition: The menu definition list + :type menu_definition: List[List[Tuple[str, List[str]]] + :param visible: control visibility of element + :type visible: (bool) + """ + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Menu.update - The window was closed') + return + + if menu_definition is not None: + self.MenuDefinition = copy.deepcopy(menu_definition) + if self.TKMenu is None: # if no menu exists, make one + self.TKMenu = tk.Menu(self.ParentForm.TKroot, tearoff=self.Tearoff, tearoffcommand=self._tearoff_menu_callback) # create the menubar + menubar = self.TKMenu + # Delete all the menu items (assuming 10000 should be a high enough number to cover them all) + menubar.delete(0, 10000) + self.Widget = self.TKMenu # same the new menu so user can access to extend PySimpleGUI + for menu_entry in self.MenuDefinition: + baritem = tk.Menu(menubar, tearoff=self.Tearoff, tearoffcommand=self._tearoff_menu_callback) + + if self.BackgroundColor not in (COLOR_SYSTEM_DEFAULT, None): + baritem.config(bg=self.BackgroundColor) + if self.TextColor not in (COLOR_SYSTEM_DEFAULT, None): + baritem.config(fg=self.TextColor) + if self.DisabledTextColor not in (COLOR_SYSTEM_DEFAULT, None): + baritem.config(disabledforeground=self.DisabledTextColor) + if self.Font is not None: + baritem.config(font=self.Font) + + if self.Font is not None: + baritem.config(font=self.Font) + pos = menu_entry[0].find(MENU_SHORTCUT_CHARACTER) + # print(pos) + if pos != -1: + if pos == 0 or menu_entry[0][pos - len(MENU_SHORTCUT_CHARACTER)] != "\\": + menu_entry[0] = menu_entry[0][:pos] + menu_entry[0][pos + len(MENU_SHORTCUT_CHARACTER):] + if menu_entry[0][0] == MENU_DISABLED_CHARACTER: + menubar.add_cascade(label=menu_entry[0][len(MENU_DISABLED_CHARACTER):], menu=baritem, underline=pos) + menubar.entryconfig(menu_entry[0][len(MENU_DISABLED_CHARACTER):], state='disabled') + else: + menubar.add_cascade(label=menu_entry[0], menu=baritem, underline=pos) + + if len(menu_entry) > 1: + AddMenuItem(baritem, menu_entry[1], self) + + if visible is False: + self.ParentForm.TKroot.configure(menu=[]) # this will cause the menubar to disappear + elif self.TKMenu is not None: + self.ParentForm.TKroot.configure(menu=self.TKMenu) + if visible is not None: + self._visible = visible + + Update = update + + +MenuBar = Menu # another name for Menu to make it clear it's the Menu Bar +Menubar = Menu # another name for Menu to make it clear it's the Menu Bar + + +# ---------------------------------------------------------------------- # +# Table # +# ---------------------------------------------------------------------- # +class Table(Element): + + def __init__(self, values, headings=None, visible_column_map=None, col_widths=None, cols_justification=None, def_col_width=10, + auto_size_columns=True, max_col_width=20, select_mode=None, display_row_numbers=False, starting_row_number=0, num_rows=None, + row_height=None, font=None, justification='right', text_color=None, background_color=None, + alternating_row_color=None, selected_row_colors=(None, None), header_text_color=None, header_background_color=None, header_font=None, header_border_width=None, + header_relief=None, enable_cell_editing=False, cell_edit_colors=(None, None), cell_edit_select_colors=(None, None), + row_colors=None, vertical_scroll_only=True, hide_vertical_scroll=False, border_width=None, + sbar_trough_color=None, sbar_background_color=None, sbar_arrow_color=None, sbar_width=None, sbar_arrow_width=None, sbar_frame_color=None, sbar_relief=None, + size=(None, None), s=(None, None), change_submits=False, enable_events=False, enable_click_events=False, right_click_selects=False, bind_return_key=False, + pad=None, p=None, + key=None, k=None, tooltip=None, right_click_menu=None, expand_x=False, expand_y=False, visible=True, metadata=None): + """ + :param values: Your table data represented as a 2-dimensions table... a list of rows, with each row representing a row in your table. + :type values: List[List[str | int | float]] + :param headings: The headings to show on the top line + :type headings: List[str] + :param visible_column_map: One entry for each column. False indicates the column is not shown + :type visible_column_map: List[bool] + :param col_widths: Number of characters that each column will occupy + :type col_widths: List[int] + :param cols_justification: Justification for EACH column. Is a list of strings with the value 'l', 'r', 'c' that indicates how the column will be justified. Either no columns should be set, or have to have one for every colun + :type cols_justification: List[str] or Tuple[str] or None + :param def_col_width: Default column width in characters + :type def_col_width: (int) + :param auto_size_columns: if True columns will be sized automatically + :type auto_size_columns: (bool) + :param max_col_width: Maximum width for all columns in characters + :type max_col_width: (int) + :param select_mode: Select Mode. Valid values start with "TABLE_SELECT_MODE_". Valid values are: TABLE_SELECT_MODE_NONE TABLE_SELECT_MODE_BROWSE TABLE_SELECT_MODE_EXTENDED + :type select_mode: (str) + :param display_row_numbers: if True, the first column of the table will be the row # + :type display_row_numbers: (bool) + :param starting_row_number: The row number to use for the first row. All following rows will be based on this starting value. Default is 0. + :type starting_row_number: (int) + :param num_rows: The number of rows of the table to display at a time + :type num_rows: (int) + :param row_height: height of a single row in pixels + :type row_height: (int) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param justification: 'left', 'right', 'center' are valid choices + :type justification: (str) + :param text_color: color of the text + :type text_color: (str) + :param background_color: color of background + :type background_color: (str) + :param alternating_row_color: if set then every other row will have this color in the background. + :type alternating_row_color: (str) + :param selected_row_colors: Sets the text color and background color for a selected row. Same format as button colors - tuple ('red', 'yellow') or string 'red on yellow'. Defaults to theme's button color + :type selected_row_colors: str or (str, str) + :param header_text_color: sets the text color for the header + :type header_text_color: (str) + :param header_background_color: sets the background color for the header + :type header_background_color: (str) + :param header_font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type header_font: (str or (str, int[, str]) or None) + :param header_border_width: Border width for the header portion + :type header_border_width: (int | None) + :param header_relief: Relief style for the header. Values are same as other elements that use relief. RELIEF_RAISED RELIEF_SUNKEN RELIEF_FLAT RELIEF_RIDGE RELIEF_GROOVE RELIEF_SOLID + :type header_relief: (str | None) + :param enable_cell_editing: If true, then if the cell is double-clicked, the value can be edited + :type enable_cell_editing: (bool) + :param cell_edit_colors: Sets the colors to use when editing a cell. Can be color string "foreground on background" or tuple (foreground, background). Defaults to swapping of table text and background colors + :type cell_edit_colors: (str | (str, str)) + :param cell_edit_select_colors: Sets the select colors to use when editing a cell. Can be color string "foreground on background" or tuple (foreground, background). Uses system default if none are set + :type cell_edit_select_colors: (str | (str, str)) + :param row_colors: list of tuples of (row, background color) OR (row, foreground color, background color). Sets the colors of listed rows to the color(s) provided (note the optional foreground color) + :type row_colors: List[Tuple[int, str] | Tuple[Int, str, str]] + :param vertical_scroll_only: if True only the vertical scrollbar will be visible + :type vertical_scroll_only: (bool) + :param hide_vertical_scroll: if True vertical scrollbar will be hidden + :type hide_vertical_scroll: (bool) + :param border_width: Border width/depth in pixels + :type border_width: (int) + :param sbar_trough_color: Scrollbar color of the trough + :type sbar_trough_color: (str) + :param sbar_background_color: Scrollbar color of the background of the arrow buttons at the ends AND the color of the "thumb" (the thing you grab and slide). Switches to arrow color when mouse is over + :type sbar_background_color: (str) + :param sbar_arrow_color: Scrollbar color of the arrow at the ends of the scrollbar (it looks like a button). Switches to background color when mouse is over + :type sbar_arrow_color: (str) + :param sbar_width: Scrollbar width in pixels + :type sbar_width: (int) + :param sbar_arrow_width: Scrollbar width of the arrow on the scrollbar. It will potentially impact the overall width of the scrollbar + :type sbar_arrow_width: (int) + :param sbar_frame_color: Scrollbar Color of frame around scrollbar (available only on some ttk themes) + :type sbar_frame_color: (str) + :param sbar_relief: Scrollbar relief that will be used for the "thumb" of the scrollbar (the thing you grab that slides). Should be a constant that is defined at starting with "RELIEF_" - RELIEF_RAISED, RELIEF_SUNKEN, RELIEF_FLAT, RELIEF_RIDGE, RELIEF_GROOVE, RELIEF_SOLID + :type sbar_relief: (str) + :param size: DO NOT USE! Use num_rows instead + :type size: (int, int) + :param change_submits: DO NOT USE. Only listed for backwards compat - Use enable_events instead + :type change_submits: (bool) + :param enable_events: Turns on the element specific events. Table events happen when row is clicked + :type enable_events: (bool) + :param enable_click_events: Turns on the element click events that will give you (row, col) click data when the table is clicked + :type enable_click_events: (bool) + :param right_click_selects: If True, then right clicking a row will select that row if multiple rows are not currently selected + :type right_click_selects: (bool) + :param bind_return_key: if True, pressing return key will cause event coming from Table, ALSO a left button double click will generate an event if this parameter is True + :type bind_return_key: (bool) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: Used with window.find_element and with return values to uniquely identify this element to uniquely identify this element + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param visible: set visibility state of the element + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.Values = values + self.ColumnHeadings = headings + self.ColumnsToDisplay = visible_column_map + self.ColumnWidths = col_widths + self.cols_justification = cols_justification + self.MaxColumnWidth = max_col_width + self.DefaultColumnWidth = def_col_width + self.AutoSizeColumns = auto_size_columns + self.BackgroundColor = background_color if background_color is not None else DEFAULT_BACKGROUND_COLOR + # self.TextColor = text_color + self.TextColor = text_color if text_color is not None else DEFAULT_ELEMENT_TEXT_COLOR + self.HeaderTextColor = header_text_color if header_text_color is not None else LOOK_AND_FEEL_TABLE[CURRENT_LOOK_AND_FEEL]['TEXT_INPUT'] + self.HeaderBackgroundColor = header_background_color if header_background_color is not None else LOOK_AND_FEEL_TABLE[CURRENT_LOOK_AND_FEEL]['INPUT'] + self.HeaderFont = header_font + self.Justification = justification + self.InitialState = None + self.SelectMode = select_mode + self.DisplayRowNumbers = display_row_numbers + self.NumRows = num_rows if num_rows is not None else size[1] + self.RowHeight = row_height + self.Widget = self.TKTreeview = None # type: ttk.Treeview + self.AlternatingRowColor = alternating_row_color + self.VerticalScrollOnly = vertical_scroll_only + self.HideVerticalScroll = hide_vertical_scroll + self.SelectedRows = [] + self.ChangeSubmits = change_submits or enable_events + self.BindReturnKey = bind_return_key + self.StartingRowNumber = starting_row_number # When displaying row numbers, where to start + self.RowHeaderText = 'Row' + self.enable_click_events = enable_click_events + self.right_click_selects = right_click_selects + self.last_clicked_position = (None, None) + self.HeaderBorderWidth = header_border_width + self.BorderWidth = border_width + self.HeaderRelief = header_relief + self.table_ttk_style_name = None # the ttk style name for the Table itself + self.enable_cell_editing = enable_cell_editing + self.cell_edit_select_colors = cell_edit_select_colors + if cell_edit_select_colors != (None, None): + if isinstance(cell_edit_select_colors, str): + try: + self.cell_edit_select_colors = cell_edit_select_colors.split(' on ') + except Exception as e: + print('* Table Element Warning * you messed up with color formatting of Cell Edit Select Colors', e) + + self.cell_edit_colors = cell_edit_colors + if cell_edit_colors != (None, None): + if isinstance(cell_edit_colors, str): + try: + self.cell_edit_colors = cell_edit_colors.split(' on ') + except Exception as e: + print('* Table Element Warning * you messed up with color formatting of Cell Edit Colors', e) + else: + self.cell_edit_colors = (self.BackgroundColor, self.TextColor) + + if selected_row_colors == (None, None): + # selected_row_colors = DEFAULT_TABLE_AND_TREE_SELECTED_ROW_COLORS + selected_row_colors = theme_button_color() + else: + try: + if isinstance(selected_row_colors, str): + selected_row_colors = selected_row_colors.split(' on ') + except Exception as e: + print('* Table Element Warning * you messed up with color formatting of Selected Row Color', e) + self.SelectedRowColors = selected_row_colors + + self.RightClickMenu = right_click_menu + self.RowColors = row_colors + self.tree_ids = [] # ids returned when inserting items into table - will use to delete colors + key = key if key is not None else k + sz = size if size != (None, None) else s + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + + super().__init__(ELEM_TYPE_TABLE, text_color=text_color, background_color=background_color, font=font, + size=sz, pad=pad, key=key, tooltip=tooltip, visible=visible, metadata=metadata, + sbar_trough_color=sbar_trough_color, sbar_background_color=sbar_background_color, sbar_arrow_color=sbar_arrow_color, sbar_width=sbar_width, + sbar_arrow_width=sbar_arrow_width, sbar_frame_color=sbar_frame_color, sbar_relief=sbar_relief) + return + + def update(self, values=None, num_rows=None, visible=None, select_rows=None, alternating_row_color=None, row_colors=None): + """ + Changes some of the settings for the Table Element. Must call `Window.Read` or `Window.Finalize` prior + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param values: A new 2-dimensional table to show + :type values: List[List[str | int | float]] + :param num_rows: How many rows to display at a time + :type num_rows: (int) + :param visible: if True then will be visible + :type visible: (bool) + :param select_rows: List of rows to select as if user did + :type select_rows: List[int] + :param alternating_row_color: the color to make every other row + :type alternating_row_color: (str) + :param row_colors: list of tuples of (row, background color) OR (row, foreground color, background color). Changes the colors of listed rows to the color(s) provided (note the optional foreground color) + :type row_colors: List[Tuple[int, str] | Tuple[Int, str, str]] + """ + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Table.update - The window was closed') + return + + if values is not None: + for id in self.tree_ids: + self.TKTreeview.item(id, tags=()) + if self.BackgroundColor is not None and self.BackgroundColor != COLOR_SYSTEM_DEFAULT: + self.TKTreeview.tag_configure(id, background=self.BackgroundColor) + else: + self.TKTreeview.tag_configure(id, background='#FFFFFF', foreground='#000000') + if self.TextColor is not None and self.TextColor != COLOR_SYSTEM_DEFAULT: + self.TKTreeview.tag_configure(id, foreground=self.TextColor) + else: + self.TKTreeview.tag_configure(id, foreground='#000000') + + children = self.TKTreeview.get_children() + for i in children: + self.TKTreeview.detach(i) + self.TKTreeview.delete(i) + children = self.TKTreeview.get_children() + + self.tree_ids = [] + for i, value in enumerate(values): + if self.DisplayRowNumbers: + value = [i + self.StartingRowNumber] + value + id = self.TKTreeview.insert('', 'end', text=value, iid=i + 1, values=value, tag=i) + if self.BackgroundColor is not None and self.BackgroundColor != COLOR_SYSTEM_DEFAULT: + self.TKTreeview.tag_configure(id, background=self.BackgroundColor) + else: + self.TKTreeview.tag_configure(id, background='#FFFFFF') + self.tree_ids.append(id) + self.Values = values + self.SelectedRows = [] + if visible is False: + self._pack_forget_save_settings(self.element_frame) + elif visible is True: + self._pack_restore_settings(self.element_frame) + + if num_rows is not None: + self.TKTreeview.config(height=num_rows) + if select_rows is not None: + rows_to_select = [i + 1 for i in select_rows] + self.TKTreeview.selection_set(rows_to_select) + + if alternating_row_color is not None: # alternating colors + self.AlternatingRowColor = alternating_row_color + + if self.AlternatingRowColor is not None: + for row in range(0, len(self.Values), 2): + self.TKTreeview.tag_configure(row, background=self.AlternatingRowColor) + if row_colors is not None: # individual row colors + self.RowColors = row_colors + for row_def in self.RowColors: + if len(row_def) == 2: # only background is specified + self.TKTreeview.tag_configure(row_def[0], background=row_def[1]) + else: + self.TKTreeview.tag_configure(row_def[0], background=row_def[2], foreground=row_def[1]) + if visible is not None: + self._visible = visible + + def _treeview_selected(self, event): + """ + Not user callable. Callback function that is called when something is selected from Table. + Stores the selected rows in Element as they are being selected. If events enabled, then returns from Read + + :param event: event information from tkinter + :type event: (unknown) + """ + # print('**-- in treeview selected --**') + selections = self.TKTreeview.selection() + self.SelectedRows = [int(x) - 1 for x in selections] + if self.ChangeSubmits: + if self.Key is not None: + self.ParentForm.LastButtonClicked = self.Key + else: + self.ParentForm.LastButtonClicked = '' + self.ParentForm.FormRemainedOpen = True + # if self.ParentForm.CurrentlyRunningMainloop: + # self.ParentForm.TKroot.quit() + _exit_mainloop(self.ParentForm) + + def _treeview_double_click(self, event): + """ + Not user callable. Callback function that is called when something is double-clicked to edit cell in table. + + :param event: event information from tkinter + :type event: (unknown) + """ + + def on_focus_out(table, widget, event, item, column, value_type): + # Update the Treeview with the new value + # Make sure the value type matches what was previously there + table_row = int(item) - 1 + table_col = int(column[1:]) - 1 + new_value = value_type(widget.entry.get()) + col_index = int(column[1:]) - 1 + current_values = list(widget.item(item, "values")) + current_values[col_index] = new_value + widget.item(item, values=current_values) + table.Values[table_row][table_col] = new_value + # Destroy the Entry widget + if widget.entry: + widget.entry.destroy() + widget.entry = None + if self.Key is not None: + self.ParentForm.LastButtonClicked = (self.Key, TABLE_EDITED_INDICATOR, (table_row, table_col)) + else: + self.ParentForm.LastButtonClicked = '' + self.ParentForm.FormRemainedOpen = True + _exit_mainloop(self.ParentForm) + + def on_escape(table, widget, event, item, column, value_type): + if widget.entry: + widget.entry.destroy() + widget.entry = None + + if self.enable_cell_editing and not self.widget.entry: # if can edit and not already editing another cell + region = self.widget.identify("region", event.x, event.y) + if region == "cell": + column = self.widget.identify_column(event.x) + item = self.widget.identify_row(event.y) + row = int(item) - 1 + col = int(column[1:]) - 1 + cell_box = self.widget.bbox(item, column) + + if cell_box: + self.widget.entry = tk.Entry(self.widget) + self.widget.entry.config(justify=tk.RIGHT, font=self.font_used) + if self.cell_edit_colors[0] not in (None, COLOR_SYSTEM_DEFAULT): + self.widget.entry.config(foreground=self.cell_edit_colors[0]) + if self.cell_edit_colors[1] not in (None, COLOR_SYSTEM_DEFAULT): + self.widget.entry.config(background=self.cell_edit_colors[1]) + if self.cell_edit_select_colors != (None, None): + self.widget.entry.config(selectforeground=self.cell_edit_select_colors[0], selectbackground=self.cell_edit_select_colors[1]) + + self.widget.entry.place(x=cell_box[0], y=cell_box[1], width=cell_box[2], height=cell_box[3]) + # Populate the entry with the current value + value = self.widget.item(item, "values")[col] + value_type = type(self.values[row][col]) + self.widget.entry.insert(0, value) + self.widget.entry.select_range(0, tk.END) + self.widget.entry.focus() + # Bind events that end the edit. Either focus out or return key signals end of editing (may want to consider adding escape?) + self.widget.entry.bind('', lambda e: on_focus_out(self, self.widget, e, item, column, value_type)) + self.widget.entry.bind('', lambda e: on_focus_out(self, self.widget, e, item, column, value_type)) + self.widget.entry.bind('', lambda e: on_escape(self, self.widget, e, item, column, value_type)) + selections = self.TKTreeview.selection() + self.SelectedRows = [int(x) - 1 for x in selections] + if self.BindReturnKey: # Signifies BOTH a return key AND a double click + if self.Key is not None: + self.ParentForm.LastButtonClicked = self.Key + else: + self.ParentForm.LastButtonClicked = '' + self.ParentForm.FormRemainedOpen = True + _exit_mainloop(self.ParentForm) + + def _table_clicked(self, event): + """ + Not user callable. Callback function that is called a click happens on a table. + Stores the selected rows in Element as they are being selected. If events enabled, then returns from Read + + :param event: event information from tkinter + :type event: (unknown) + """ + self.last_table_event = event + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + # popup(obj_to_string_single_obj(event)) + try: + region = self.Widget.identify('region', event.x, event.y) + if region == 'heading': + row = -1 + elif region == 'cell': + row = int(self.Widget.identify_row(event.y))-1 + elif region == 'separator': + row = None + else: + row = None + col_identified = self.Widget.identify_column(event.x) + if col_identified: # Sometimes tkinter returns a value of '' which would cause an error if cast to an int + column = int(self.Widget.identify_column(event.x)[1:])-1-int(self.DisplayRowNumbers is True) + else: + column = None + except Exception as e: + warnings.warn('Error getting table click data for table with key= {}\nError: {}'.format(self.Key, e), UserWarning) + if not SUPPRESS_ERROR_POPUPS: + _error_popup_with_traceback('Unable to complete operation getting the clicked event for table with key {}'.format(self.Key), _create_error_message(), e, 'Event data:', obj_to_string_single_obj(event)) + row = column = None + + self.last_clicked_position = (row, column) + + # update the rows being selected if appropriate + self.ParentForm.TKroot.update() + # self.TKTreeview.() + selections = self.TKTreeview.selection() + if self.right_click_selects and len(selections) <= 1: + if (event.num == 3 and not running_mac()) or (event.num == 2 and running_mac()): + if row != -1 and row is not None: + selections = [row+1] + self.TKTreeview.selection_set(selections) + # print(selections) + self.SelectedRows = [int(x) - 1 for x in selections] + # print('The new selected rows = ', self.SelectedRows) + if self.enable_click_events is True: + if self.Key is not None: + self.ParentForm.LastButtonClicked = (self.Key, TABLE_CLICKED_INDICATOR, (row, column)) + else: + self.ParentForm.LastButtonClicked = '' + self.ParentForm.FormRemainedOpen = True + _exit_mainloop(self.ParentForm) + + def get(self): + """ + Get the selected rows using tktiner's selection method. Returns a list of the selected rows. + + :return: a list of the index of the selected rows (a list of ints) + :rtype: List[int] + """ + + selections = self.TKTreeview.selection() + selected_rows = [int(x) - 1 for x in selections] + return selected_rows + + def get_last_clicked_position(self): + """ + Returns a tuple with the row and column of the cell that was last clicked. + Headers will have a row == -1 and the Row Number Column (if present) will have a column == -1 + :return: The (row,col) position of the last cell clicked in the table + :rtype: (int | None, int | None) + """ + return self.last_clicked_position + + + @property + def values(self): + """ + Returns the table values as a list of lists + + :return: List of lists of table items + :rtype: List[List[Any]] + """ + return self.Values + + + Update = update + Get = get + + +# ---------------------------------------------------------------------- # +# Tree # +# ---------------------------------------------------------------------- # +class Tree(Element): + """ + Tree Element - Presents data in a tree-like manner, much like a file/folder browser. Uses the TreeData class + to hold the user's data and pass to the element for display. + """ + + def __init__(self, data=None, headings=None, visible_column_map=None, col_widths=None, col0_width=10, col0_heading='', + def_col_width=10, auto_size_columns=True, max_col_width=20, select_mode=None, show_expanded=False, + change_submits=False, enable_events=False, click_toggles_select=None, font=None, justification='right', text_color=None, border_width=None, + background_color=None, selected_row_colors=(None, None), header_text_color=None, header_background_color=None, header_font=None, header_border_width=None, + header_relief=None, num_rows=None, + sbar_trough_color=None, sbar_background_color=None, sbar_arrow_color=None, sbar_width=None, sbar_arrow_width=None, sbar_frame_color=None, sbar_relief=None, + row_height=None, vertical_scroll_only=True, hide_vertical_scroll=False, pad=None, p=None, key=None, k=None, tooltip=None, + right_click_menu=None, expand_x=False, expand_y=False, visible=True, metadata=None): + """ + :param data: The data represented using a PySimpleGUI provided TreeData class + :type data: (TreeData) + :param headings: List of individual headings for each column + :type headings: List[str] + :param visible_column_map: Determines if a column should be visible. If left empty, all columns will be shown + :type visible_column_map: List[bool] + :param col_widths: List of column widths so that individual column widths can be controlled + :type col_widths: List[int] + :param col0_width: Size of Column 0 which is where the row numbers will be optionally shown + :type col0_width: (int) + :param col0_heading: Text to be shown in the header for the left-most column + :type col0_heading: (str) + :param def_col_width: default column width + :type def_col_width: (int) + :param auto_size_columns: if True, the size of a column is determined using the contents of the column + :type auto_size_columns: (bool) + :param max_col_width: the maximum size a column can be + :type max_col_width: (int) + :param select_mode: Use same values as found on Table Element. Valid values include: TABLE_SELECT_MODE_NONE TABLE_SELECT_MODE_BROWSE TABLE_SELECT_MODE_EXTENDED + :type select_mode: (str) + :param show_expanded: if True then the tree will be initially shown with all nodes completely expanded + :type show_expanded: (bool) + :param change_submits: DO NOT USE. Only listed for backwards compat - Use enable_events instead + :type change_submits: (bool) + :param enable_events: Turns on the element specific events. Tree events happen when row is clicked + :type enable_events: (bool) + :param click_toggles_select: If True then clicking a row will cause the selection for that row to toggle between selected and deselected + :type click_toggles_select: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param justification: 'left', 'right', 'center' are valid choices + :type justification: (str) + :param text_color: color of the text + :type text_color: (str) + :param border_width: Border width/depth in pixels + :type border_width: (int) + :param background_color: color of background + :type background_color: (str) + :param selected_row_colors: Sets the text color and background color for a selected row. Same format as button colors - tuple ('red', 'yellow') or string 'red on yellow'. Defaults to theme's button color + :type selected_row_colors: str or (str, str) + :param header_text_color: sets the text color for the header + :type header_text_color: (str) + :param header_background_color: sets the background color for the header + :type header_background_color: (str) + :param header_font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type header_font: (str or (str, int[, str]) or None) + :param header_border_width: Border width for the header portion + :type header_border_width: (int | None) + :param header_relief: Relief style for the header. Values are same as other elements that use relief. RELIEF_RAISED RELIEF_SUNKEN RELIEF_FLAT RELIEF_RIDGE RELIEF_GROOVE RELIEF_SOLID + :type header_relief: (str | None) + :param num_rows: The number of rows of the table to display at a time + :type num_rows: (int) + :param row_height: height of a single row in pixels + :type row_height: (int) + :param vertical_scroll_only: if True only the vertical scrollbar will be visible + :type vertical_scroll_only: (bool) + :param hide_vertical_scroll: if True vertical scrollbar will be hidden + :type hide_vertical_scroll: (bool) + :param sbar_trough_color: Scrollbar color of the trough + :type sbar_trough_color: (str) + :param sbar_background_color: Scrollbar color of the background of the arrow buttons at the ends AND the color of the "thumb" (the thing you grab and slide). Switches to arrow color when mouse is over + :type sbar_background_color: (str) + :param sbar_arrow_color: Scrollbar color of the arrow at the ends of the scrollbar (it looks like a button). Switches to background color when mouse is over + :type sbar_arrow_color: (str) + :param sbar_width: Scrollbar width in pixels + :type sbar_width: (int) + :param sbar_arrow_width: Scrollbar width of the arrow on the scrollbar. It will potentially impact the overall width of the scrollbar + :type sbar_arrow_width: (int) + :param sbar_frame_color: Scrollbar Color of frame around scrollbar (available only on some ttk themes) + :type sbar_frame_color: (str) + :param sbar_relief: Scrollbar relief that will be used for the "thumb" of the scrollbar (the thing you grab that slides). Should be a constant that is defined at starting with "RELIEF_" - RELIEF_RAISED, RELIEF_SUNKEN, RELIEF_FLAT, RELIEF_RIDGE, RELIEF_GROOVE, RELIEF_SOLID + :type sbar_relief: (str) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: Used with window.find_element and with return values to uniquely identify this element to uniquely identify this element + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[str] | str]] + :param expand_x: If True the element will automatically expand in the X direction to fill available space + :type expand_x: (bool) + :param expand_y: If True the element will automatically expand in the Y direction to fill available space + :type expand_y: (bool) + :param visible: set visibility state of the element + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self.image_dict = {} + + self.TreeData = data + self.ColumnHeadings = headings + self.ColumnsToDisplay = visible_column_map + self.ColumnWidths = col_widths + self.MaxColumnWidth = max_col_width + self.DefaultColumnWidth = def_col_width + self.AutoSizeColumns = auto_size_columns + self.BackgroundColor = background_color if background_color is not None else DEFAULT_BACKGROUND_COLOR + self.TextColor = text_color + self.HeaderTextColor = header_text_color if header_text_color is not None else LOOK_AND_FEEL_TABLE[CURRENT_LOOK_AND_FEEL]['TEXT_INPUT'] + self.HeaderBackgroundColor = header_background_color if header_background_color is not None else LOOK_AND_FEEL_TABLE[CURRENT_LOOK_AND_FEEL]['INPUT'] + self.HeaderBorderWidth = header_border_width + self.BorderWidth = border_width + self.HeaderRelief = header_relief + self.click_toggles_select = click_toggles_select + if selected_row_colors == (None, None): + # selected_row_colors = DEFAULT_TABLE_AND_TREE_SELECTED_ROW_COLORS + selected_row_colors = theme_button_color() + else: + try: + if isinstance(selected_row_colors, str): + selected_row_colors = selected_row_colors.split(' on ') + except Exception as e: + print('* Table Element Warning * you messed up with color formatting of Selected Row Color', e) + self.SelectedRowColors = selected_row_colors + + self.HeaderFont = header_font + self.Justification = justification + self.InitialState = None + self.SelectMode = select_mode + self.ShowExpanded = show_expanded + self.NumRows = num_rows + self.Col0Width = col0_width + self.col0_heading = col0_heading + self.TKTreeview = None # type: ttk.Treeview + self.element_frame = None # type: tk.Frame + self.VerticalScrollOnly = vertical_scroll_only + self.HideVerticalScroll = hide_vertical_scroll + self.SelectedRows = [] + self.ChangeSubmits = change_submits or enable_events + self.RightClickMenu = right_click_menu + self.RowHeight = row_height + self.IconList = {} + self.IdToKey = {'': ''} + self.KeyToID = {'': ''} + key = key if key is not None else k + pad = pad if pad is not None else p + self.expand_x = expand_x + self.expand_y = expand_y + + super().__init__(ELEM_TYPE_TREE, text_color=text_color, background_color=background_color, font=font, pad=pad, key=key, tooltip=tooltip, + visible=visible, metadata=metadata, + sbar_trough_color=sbar_trough_color, sbar_background_color=sbar_background_color, sbar_arrow_color=sbar_arrow_color, sbar_width=sbar_width, + sbar_arrow_width=sbar_arrow_width, sbar_frame_color=sbar_frame_color, sbar_relief=sbar_relief) + return + + def _treeview_selected(self, event): + """ + Not a user function. Callback function that happens when an item is selected from the tree. In this + method, it saves away the reported selections so they can be properly returned. + + :param event: An event parameter passed in by tkinter. Not used + :type event: (Any) + """ + + selections = self.TKTreeview.selection() + selected_rows = [self.IdToKey[x] for x in selections] + if self.click_toggles_select: + if set(self.SelectedRows) == set(selected_rows): + for item in selections: + self.TKTreeview.selection_remove(item) + selections = [] + self.SelectedRows = [self.IdToKey[x] for x in selections] + + if self.ChangeSubmits: + MyForm = self.ParentForm + if self.Key is not None: + self.ParentForm.LastButtonClicked = self.Key + else: + self.ParentForm.LastButtonClicked = '' + self.ParentForm.FormRemainedOpen = True + # if self.ParentForm.CurrentlyRunningMainloop: + # self.ParentForm.TKroot.quit() + _exit_mainloop(self.ParentForm) + + def add_treeview_data(self, node): + """ + Not a user function. Recursive method that inserts tree data into the tkinter treeview widget. + + :param node: The node to insert. Will insert all nodes from starting point downward, recursively + :type node: (TreeData) + """ + if node.key != '': + if node.icon: + try: + if node.icon not in self.image_dict: + if type(node.icon) is bytes: + photo = tk.PhotoImage(data=node.icon) + else: + photo = tk.PhotoImage(file=node.icon) + self.image_dict[node.icon] = photo + else: + photo = self.image_dict.get(node.icon) + + node.photo = photo + id = self.TKTreeview.insert(self.KeyToID[node.parent], 'end', iid=None, text=node.text, + values=node.values, open=self.ShowExpanded, image=node.photo) + self.IdToKey[id] = node.key + self.KeyToID[node.key] = id + except: + self.photo = None + else: + id = self.TKTreeview.insert(self.KeyToID[node.parent], 'end', iid=None, text=node.text, + values=node.values, open=self.ShowExpanded) + self.IdToKey[id] = node.key + self.KeyToID[node.key] = id + + for node in node.children: + self.add_treeview_data(node) + + def update(self, values=None, key=None, value=None, text=None, icon=None, visible=None, expand_node=None): + """ + Changes some of the settings for the Tree Element. Must call `Window.Read` or `Window.Finalize` prior + + Changes will not be visible in your window until you call window.read or window.refresh. + + If you change visibility, your element may MOVE. If you want it to remain stationary, use the "layout helper" + function "pin" to ensure your element is "pinned" to that location in your layout so that it returns there + when made visible. + + :param values: Representation of the tree + :type values: (TreeData) + :param key: identifies a particular item in tree to update + :type key: str | int | tuple | object + :param value: sets the node identified by key to a particular value + :type value: (Any) + :param text: sets the node identified by key to this string + :type text: (str) + :param icon: can be either a base64 icon or a filename for the icon + :type icon: bytes | str + :param visible: control visibility of element + :type visible: (bool) + :param expand_node: if True the node specified by key parameter will be expanded + :type expand_node: (bool) + """ + + if not self._widget_was_created(): # if widget hasn't been created yet, then don't allow + return + + if self._this_elements_window_closed(): + _error_popup_with_traceback('Error in Tree.update - The window was closed') + return + + if values is not None: + children = self.TKTreeview.get_children() + for i in children: + self.TKTreeview.detach(i) + self.TKTreeview.delete(i) + children = self.TKTreeview.get_children() + self.TreeData = values + self.IdToKey = {'': ''} + self.KeyToID = {'': ''} + self.add_treeview_data(self.TreeData.root_node) + self.SelectedRows = [] + if key is not None: + for id in self.IdToKey.keys(): + if key == self.IdToKey[id]: + break + else: + id = None + print('** Key not found **') + else: + id = None + if id: + # item = self.TKTreeview.item(id) + if value is not None: + self.TKTreeview.item(id, values=value) + if text is not None: + self.TKTreeview.item(id, text=text) + if icon is not None: + try: + if type(icon) is bytes: + photo = tk.PhotoImage(data=icon) + else: + photo = tk.PhotoImage(file=icon) + self.TKTreeview.item(id, image=photo) + self.IconList[key] = photo # save so that it's not deleted (save reference) + except: + pass + # item = self.TKTreeview.item(id) + if visible is False: + self._pack_forget_save_settings(self.element_frame) + elif visible is True: + self._pack_restore_settings(self.element_frame) + + if visible is not None: + self._visible = visible + if expand_node is not None: + if id: + self.TKTreeview.item(id, open=True if expand_node else False) + return self + + Update = update + + +class TreeData(object): + """ + Class that user fills in to represent their tree data. It's a very simple tree representation with a root "Node" + with possibly one or more children "Nodes". Each Node contains a key, text to display, list of values to display + and an icon. The entire tree is built using a single method, Insert. Nothing else is required to make the tree. + """ + + class Node(object): + """ + Contains information about the individual node in the tree + """ + + def __init__(self, parent, key, text, values, icon=None): + """ + Represents a node within the TreeData class + + :param parent: The parent Node + :type parent: (TreeData.Node) + :param key: Used to uniquely identify this node + :type key: str | int | tuple | object + :param text: The text that is displayed at this node's location + :type text: (str) + :param values: The list of values that are displayed at this node + :type values: List[Any] + :param icon: just a icon + :type icon: str | bytes + """ + + self.parent = parent # type: TreeData.Node + self.children = [] # type: List[TreeData.Node] + self.key = key # type: str + self.text = text # type: str + self.values = values # type: List[Any] + self.icon = icon # type: str | bytes + + def _Add(self, node): + self.children.append(node) + + def __init__(self): + """ + Instantiate the object, initializes the Tree Data, creates a root node for you + """ + self.tree_dict = {} # type: Dict[str, TreeData.Node] + self.root_node = self.Node("", "", 'root', [], None) # The root node + self.tree_dict[""] = self.root_node # Start the tree out with the root node + + def _AddNode(self, key, node): + """ + Adds a node to tree dictionary (not user callable) + + :param key: Uniquely identifies this Node + :type key: (str) + :param node: Node being added + :type node: (TreeData.Node) + """ + self.tree_dict[key] = node + + def insert(self, parent, key, text, values, icon=None): + """ + Inserts a node into the tree. This is how user builds their tree, by Inserting Nodes + This is the ONLY user callable method in the TreeData class + + :param parent: the parent Node + :type parent: (Node) + :param key: Used to uniquely identify this node + :type key: str | int | tuple | object + :param text: The text that is displayed at this node's location + :type text: (str) + :param values: The list of values that are displayed at this node + :type values: List[Any] + :param icon: icon + :type icon: str | bytes + """ + + node = self.Node(parent, key, text, values, icon) + self.tree_dict[key] = node + parent_node = self.tree_dict[parent] + parent_node._Add(node) + + def __repr__(self): + """ + Converts the TreeData into a printable version, nicely formatted + + :return: (str) A formatted, text version of the TreeData + :rtype: + """ + return self._NodeStr(self.root_node, 1) + + def _NodeStr(self, node, level): + """ + Does the magic of converting the TreeData into a nicely formatted string version + + :param node: The node to begin printing the tree + :type node: (TreeData.Node) + :param level: The indentation level for string formatting + :type level: (int) + """ + return '\n'.join( + [str(node.key) + ' : ' + str(node.text) + ' [ ' + ', '.join([str(v) for v in node.values]) + ' ]'] + + [' ' * 4 * level + self._NodeStr(child, level + 1) for child in node.children]) + + Insert = insert + + +# ---------------------------------------------------------------------- # +# Error Element # +# ---------------------------------------------------------------------- # +class ErrorElement(Element): + """ + A "dummy Element" that is returned when there are error conditions, like trying to find an element that's invalid + """ + + def __init__(self, key=None, metadata=None): + """ + :param key: Used with window.find_element and with return values to uniquely identify this element + :type key: + """ + self.Key = key + + super().__init__(ELEM_TYPE_ERROR, key=key, metadata=metadata) + + def update(self, silent_on_error=True, *args, **kwargs): + """ + Update method for the Error Element, an element that should not be directly used by developer + + :param silent_on_error: if False, then a Popup window will be shown + :type silent_on_error: (bool) + :param *args: meant to "soak up" any normal parameters passed in + :type *args: (Any) + :param **kwargs: meant to "soak up" any keyword parameters that were passed in + :type **kwargs: (Any) + :return: returns 'self' so call can be chained + :rtype: (ErrorElement) + """ + print('** Your update is being ignored because you supplied a bad key earlier **') + return self + + def get(self): + """ + One of the method names found in other Elements. Used here to return an error string in case it's called + + :return: A warning text string. + :rtype: (str) + """ + return 'This is NOT a valid Element!\nSTOP trying to do things with it or I will have to crash at some point!' + + Get = get + Update = update + + +# ---------------------------------------------------------------------- # +# Stretch Element # +# ---------------------------------------------------------------------- # +# This is for source code compatibility with tkinter version. No tkinter equivalent but you can fake it using a Text element that expands in the X direction +def Push(background_color=None): + """ + Acts like a Stretch element found in the Qt port. + Used in a Horizontal fashion. Placing one on each side of an element will enter the element. + Place one to the left and the element to the right will be right justified. See VStretch for vertical type + :param background_color: color of background may be needed because of how this is implemented + :type background_color: (str) + :return: (Text) + """ + return Text(font='_ 1', background_color=background_color, pad=(0, 0), expand_x=True) + + +P = Push +Stretch = Push + + +def VPush(background_color=None): + """ + Acts like a Stretch element found in the Qt port. + Used in a Vertical fashion. + :param background_color: color of background may be needed because of how this is implemented + :type background_color: (str) + :return: (Text) + """ + return Text(font='_ 1', background_color=background_color, pad=(0, 0), expand_y=True) + + +VStretch = VPush +VP = VPush + + +# ------------------------------------------------------------------------- # +# _TimerPeriodic CLASS # +# ------------------------------------------------------------------------- # + +class _TimerPeriodic: + id_counter = 1 + # Dictionary containing the active timers. Format is {id : _TimerPeriodic object} + active_timers = {} # type: dict[int:_TimerPeriodic] + + def __init__(self, window, frequency_ms, key=EVENT_TIMER, repeating=True): + """ + :param window: The window to send events to + :type window: Window + :param frequency_ms: How often to send events in milliseconds + :type frequency_ms: int + :param repeating: If True then the timer will run, repeatedly sending events, until stopped + :type repeating: bool + """ + self.window = window + self.frequency_ms = frequency_ms + self.repeating = repeating + self.key = key + self.id = _TimerPeriodic.id_counter + _TimerPeriodic.id_counter += 1 + self.start() + + @classmethod + def stop_timer_with_id(cls, timer_id): + """ + Not user callable! + :return: A simple counter that makes each container element unique + :rtype: + """ + timer = cls.active_timers.get(timer_id, None) + if timer is not None: + timer.stop() + + @classmethod + def stop_all_timers_for_window(cls, window): + """ + Stops all timers for a given window + :param window: The window to stop timers for + :type window: Window + """ + for timer in _TimerPeriodic.active_timers.values(): + if timer.window == window: + timer.running = False + + @classmethod + def get_all_timers_for_window(cls, window): + """ + Returns a list of timer IDs for a given window + :param window: The window to find timers for + :type window: Window + :return: List of timer IDs for the window + :rtype: List[int] + """ + timers = [] + for timer in _TimerPeriodic.active_timers.values(): + if timer.window == window: + timers.append(timer.id) + + return timers + + def timer_thread(self): + """ + The thread that sends events to the window. Runs either once or in a loop until timer is stopped + """ + + if not self.running: # if timer has been cancelled, abort + del _TimerPeriodic.active_timers[self.id] + return + while True: + time.sleep(self.frequency_ms / 1000) + if not self.running: # if timer has been cancelled, abort + del _TimerPeriodic.active_timers[self.id] + return + self.window.write_event_value(self.key, self.id) + + if not self.repeating: # if timer does not repeat, then exit thread + del _TimerPeriodic.active_timers[self.id] + return + + def start(self): + """ + Starts a timer by starting a timer thread + Adds timer to the list of active timers + """ + self.running = True + self.thread = threading.Thread(target=self.timer_thread, daemon=True) + self.thread.start() + _TimerPeriodic.active_timers[self.id] = self + + def stop(self): + """ + Stops a timer + """ + self.running = False + + +# ------------------------------------------------------------------------- # +# Window CLASS # +# ------------------------------------------------------------------------- # +class Window: + """ + Represents a single Window + """ + NumOpenWindows = 0 + _user_defined_icon = None + hidden_master_root = None # type: tk.Tk + _animated_popup_dict = {} # type: Dict + _active_windows = {} # type: Dict[Window, tk.Tk()] + _move_all_windows = False # if one window moved, they will move + _window_that_exited = None # type: Window + _root_running_mainloop = None # type: tk.Tk() # (may be the hidden root or a window's root) + _timeout_key = None + _TKAfterID = None # timer that is used to run reads with timeouts + _window_running_mainloop = None # The window that is running the mainloop + _container_element_counter = 0 # used to get a number of Container Elements (Frame, Column, Tab) + _read_call_from_debugger = False + _timeout_0_counter = 0 # when timeout=0 then go through each window one at a time + _counter_for_ttk_widgets = 0 + _floating_debug_window_build_needed = False + _main_debug_window_build_needed = False + # rereouted stdout info. List of tuples (window, element, previous destination) + _rerouted_stdout_stack = [] # type: List[Tuple[Window, Element]] + _rerouted_stderr_stack = [] # type: List[Tuple[Window, Element]] + _original_stdout = None + _original_stderr = None + + + def __init__(self, title, layout=None, default_element_size=None, + default_button_element_size=(None, None), + auto_size_text=None, auto_size_buttons=None, location=(None, None), relative_location=(None, None), auto_save_location=False, size=(None, None), + element_padding=None, margins=(None, None), button_color=None, font=None, + progress_bar_color=(None, None), background_color=None, border_depth=None, auto_close=False, + auto_close_duration=DEFAULT_AUTOCLOSE_TIME, icon=None, force_toplevel=False, + alpha_channel=None, return_keyboard_events=False, use_default_focus=True, text_justification=None, + no_titlebar=False, grab_anywhere=False, grab_anywhere_using_control=True, keep_on_top=None, resizable=False, disable_close=False, + disable_minimize=False, right_click_menu=None, transparent_color=None, debugger_enabled=False, + right_click_menu_background_color=None, right_click_menu_text_color=None, right_click_menu_disabled_text_color=None, right_click_menu_selected_colors=(None, None), + right_click_menu_font=None, right_click_menu_tearoff=False, + finalize=False, element_justification='left', ttk_theme=None, use_ttk_buttons=None, modal=False, enable_close_attempted_event=False, + enable_window_config_events=False, repeating_timer_ms=None, + titlebar_background_color=None, titlebar_text_color=None, titlebar_font=None, titlebar_icon=None, + use_custom_titlebar=None, scaling=None, + sbar_trough_color=None, sbar_background_color=None, sbar_arrow_color=None, sbar_width=None, sbar_arrow_width=None, sbar_frame_color=None, sbar_relief=None, watermark=None, print_event_values=None, + metadata=None): + """ + :param title: The title that will be displayed in the Titlebar and on the Taskbar + :type title: (str) + :param layout: The layout for the window. Can also be specified in the Layout method + :type layout: List[List[Element]] | Tuple[Tuple[Element]] + :param default_element_size: size in characters (wide) and rows (high) for all elements in this window + :type default_element_size: (int, int) - (width, height) + :param default_button_element_size: (width, height) size in characters (wide) and rows (high) for all Button elements in this window + :type default_button_element_size: (int, int) + :param auto_size_text: True if Elements in Window should be sized to exactly fir the length of text + :type auto_size_text: (bool) + :param auto_size_buttons: True if Buttons in this Window should be sized to exactly fit the text on this. + :type auto_size_buttons: (bool) + :param location: (x,y) location, in pixels, to locate the upper left corner of the window on the screen. Default is to center on screen. None will not set any location meaning the OS will decide + :type location: (int, int) or (None, None) or None + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param auto_save_location: If True the windows location will be automatically saved to a settings file and will be reloaded next time the program is run. Save happens when window close is detected + :type auto_save_location: (bool) + :param size: (width, height) size in pixels for this window. Normally the window is autosized to fit contents, not set to an absolute size by the user. Try not to set this value. You risk, the contents being cut off, etc. Let the layout determine the window size instead + :type size: (int, int) + :param element_padding: Default amount of padding to put around elements in window (left/right, top/bottom) or ((left, right), (top, bottom)), or an int. If an int, then it's converted into a tuple (int, int) + :type element_padding: (int, int) or ((int, int),(int,int)) or int + :param margins: (left/right, top/bottom) Amount of pixels to leave inside the window's frame around the edges before your elements are shown. + :type margins: (int, int) + :param button_color: Default button colors for all buttons in the window + :type button_color: (str, str) | str + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param progress_bar_color: (bar color, background color) Sets the default colors for all progress bars in the window + :type progress_bar_color: (str, str) + :param background_color: color of background + :type background_color: (str) + :param border_depth: Default border depth (width) for all elements in the window + :type border_depth: (int) + :param auto_close: If True, the window will automatically close itself + :type auto_close: (bool) + :param auto_close_duration: Number of seconds to wait before closing the window + :type auto_close_duration: (int) + :param icon: Can be either a filename or Base64 value. For Windows if filename, it MUST be ICO format. For Linux, must NOT be ICO. Most portable is to use a Base64 of a PNG file. This works universally across all OS's + :type icon: (str | bytes) + :param force_toplevel: If True will cause this window to skip the normal use of a hidden master window + :type force_toplevel: (bool) + :param alpha_channel: Sets the opacity of the window. 0 = invisible 1 = completely visible. Values bewteen 0 & 1 will produce semi-transparent windows in SOME environments (The Raspberry Pi always has this value at 1 and cannot change. + :type alpha_channel: (float) + :param return_keyboard_events: if True key presses on the keyboard will be returned as Events from Read calls + :type return_keyboard_events: (bool) + :param use_default_focus: If True will use the default focus algorithm to set the focus to the "Correct" element + :type use_default_focus: (bool) + :param text_justification: Default text justification for all Text Elements in window + :type text_justification: 'left' | 'right' | 'center' + :param no_titlebar: If true, no titlebar nor frame will be shown on window. This means you cannot minimize the window and it will not show up on the taskbar + :type no_titlebar: (bool) + :param grab_anywhere: If True can use mouse to click and drag to move the window. Almost every location of the window will work except input fields on some systems + :type grab_anywhere: (bool) + :param grab_anywhere_using_control: If True can use CONTROL key + left mouse mouse to click and drag to move the window. DEFAULT is TRUE. Unlike normal grab anywhere, it works on all elements. + :type grab_anywhere_using_control: (bool) + :param keep_on_top: If True, window will be created on top of all other windows on screen. It can be bumped down if another window created with this parm + :type keep_on_top: (bool) + :param resizable: If True, allows the user to resize the window. Note the not all Elements will change size or location when resizing. + :type resizable: (bool) + :param disable_close: If True, the X button in the top right corner of the window will no work. Use with caution and always give a way out toyour users + :type disable_close: (bool) + :param disable_minimize: if True the user won't be able to minimize window. Good for taking over entire screen and staying that way. + :type disable_minimize: (bool) + :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. + :type right_click_menu: List[List[ List[str] | str ]] + :param transparent_color: Any portion of the window that has this color will be completely transparent. You can even click through these spots to the window under this window. + :type transparent_color: (str) + :param debugger_enabled: If True then the internal debugger will be enabled. Also controllable via the global settings. If global settings is true then will be enabled for all windows + :type debugger_enabled: (bool) + :param right_click_menu_background_color: Background color for right click menus + :type right_click_menu_background_color: (str) + :param right_click_menu_text_color: Text color for right click menus + :type right_click_menu_text_color: (str) + :param right_click_menu_disabled_text_color: Text color for disabled right click menu items + :type right_click_menu_disabled_text_color: (str) + :param right_click_menu_selected_colors: Text AND background colors for a selected item. Can be a Tuple OR a color string. simplified-button-color-string "foreground on background". Can be a single color if want to set only the background. Normally a tuple, but can be a simplified-dual-color-string "foreground on background". Can be a single color if want to set only the background. + :type right_click_menu_selected_colors: (str, str) | str | Tuple + :param right_click_menu_font: Font for right click menus + :type right_click_menu_font: (str or (str, int[, str]) or None) + :param right_click_menu_tearoff: If True then all right click menus can be torn off + :type right_click_menu_tearoff: bool + :param finalize: If True then the Finalize method will be called. Use this rather than chaining .Finalize for cleaner code + :type finalize: (bool) + :param element_justification: All elements in the Window itself will have this justification 'left', 'right', 'center' are valid values + :type element_justification: (str) + :param ttk_theme: Set the tkinter ttk "theme" of the window. Default = DEFAULT_TTK_THEME. Sets all ttk widgets to this theme as their default + :type ttk_theme: (str) + :param use_ttk_buttons: Affects all buttons in window. True = use ttk buttons. False = do not use ttk buttons. None = use ttk buttons only if on a Mac + :type use_ttk_buttons: (bool) + :param modal: If True then this window will be the only window a user can interact with until it is closed + :type modal: (bool) + :param enable_close_attempted_event: If True then the window will not close when "X" clicked. Instead an event WINDOW_CLOSE_ATTEMPTED_EVENT if returned from window.read + :type enable_close_attempted_event: (bool) + :param enable_window_config_events: If True then window configuration events (resizing or moving the window) will return WINDOW_CONFIG_EVENT from window.read. Note you will get several when Window is created. + :type enable_window_config_events: (bool) + :param repeating_timer_ms: Causes a repeating timer to start when Window is created. The default EVENT_TIMER will be used for the timer event. Setting will cause window to be Finalized + :type repeating_timer_ms: (int) + :param titlebar_background_color: If custom titlebar indicated by use_custom_titlebar, then use this as background color + :type titlebar_background_color: (str | None) + :param titlebar_text_color: If custom titlebar indicated by use_custom_titlebar, then use this as text color + :type titlebar_text_color: (str | None) + :param titlebar_font: If custom titlebar indicated by use_custom_titlebar, then use this as title font + :type titlebar_font: (str or (str, int[, str]) or None) + :param titlebar_icon: If custom titlebar indicated by use_custom_titlebar, then use this as the icon (file or base64 bytes) + :type titlebar_icon: (bytes | str) + :param use_custom_titlebar: If True, then a custom titlebar will be used instead of the normal titlebar + :type use_custom_titlebar: bool + :param scaling: Apply scaling to the elements in the window. Can be set on a global basis using set_options + :type scaling: float + :param sbar_trough_color: Scrollbar color of the trough + :type sbar_trough_color: (str) + :param sbar_background_color: Scrollbar color of the background of the arrow buttons at the ends AND the color of the "thumb" (the thing you grab and slide). Switches to arrow color when mouse is over + :type sbar_background_color: (str) + :param sbar_arrow_color: Scrollbar color of the arrow at the ends of the scrollbar (it looks like a button). Switches to background color when mouse is over + :type sbar_arrow_color: (str) + :param sbar_width: Scrollbar width in pixels + :type sbar_width: (int) + :param sbar_arrow_width: Scrollbar width of the arrow on the scrollbar. It will potentially impact the overall width of the scrollbar + :type sbar_arrow_width: (int) + :param sbar_frame_color: Scrollbar Color of frame around scrollbar (available only on some ttk themes) + :type sbar_frame_color: (str) + :param sbar_relief: Scrollbar relief that will be used for the "thumb" of the scrollbar (the thing you grab that slides). Should be a constant that is defined at starting with "RELIEF_" - RELIEF_RAISED, RELIEF_SUNKEN, RELIEF_FLAT, RELIEF_RIDGE, RELIEF_GROOVE, RELIEF_SOLID + :type sbar_relief: (str) + :param watermark: If True, then turns on watermarking temporarily for ALL windows created from this point forward. See global settings doc for more info + :type watermark: bool + :param print_event_values: If True then the event and values will be automatically printed when you call the window's read method. GREAT for debugging! Global setting also available to control this. + :type print_event_values: bool + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + + self._metadata = None # type: Any + self.AutoSizeText = auto_size_text if auto_size_text is not None else DEFAULT_AUTOSIZE_TEXT + self.AutoSizeButtons = auto_size_buttons if auto_size_buttons is not None else DEFAULT_AUTOSIZE_BUTTONS + self.Title = str(title) + self.Rows = [] # a list of ELEMENTS for this row + self.DefaultElementSize = default_element_size if default_element_size is not None else DEFAULT_ELEMENT_SIZE + self.DefaultButtonElementSize = default_button_element_size if default_button_element_size != ( + None, None) else DEFAULT_BUTTON_ELEMENT_SIZE + if DEFAULT_WINDOW_LOCATION != (None, None) and location == (None, None): + self.Location = DEFAULT_WINDOW_LOCATION + else: + self.Location = location + self.RelativeLoction = relative_location + self.ButtonColor = button_color_to_tuple(button_color) + self.BackgroundColor = background_color if background_color else DEFAULT_BACKGROUND_COLOR + self.ParentWindow = None + self.Font = font if font else DEFAULT_FONT + self.RadioDict = {} + self.BorderDepth = border_depth + if icon: + self.WindowIcon = icon + elif Window._user_defined_icon is not None: + self.WindowIcon = Window._user_defined_icon + else: + self.WindowIcon = DEFAULT_WINDOW_ICON + self.AutoClose = auto_close + self.NonBlocking = False + self.TKroot = None # type: tk.Tk + self.TKrootDestroyed = False + self.CurrentlyRunningMainloop = False + self.FormRemainedOpen = False + self.TKAfterID = None + self.ProgressBarColor = progress_bar_color + self.AutoCloseDuration = auto_close_duration + self.RootNeedsDestroying = False + self.Shown = False + self.ReturnValues = None + self.ReturnValuesList = [] + self.ReturnValuesDictionary = {} + self.DictionaryKeyCounter = 0 + self.LastButtonClicked = None + self.LastButtonClickedWasRealtime = False + self.UseDictionary = False + self.UseDefaultFocus = use_default_focus + self.ReturnKeyboardEvents = return_keyboard_events + self.LastKeyboardEvent = None + self.TextJustification = text_justification + self.NoTitleBar = no_titlebar + self.Grab = grab_anywhere + self.GrabAnywhere = grab_anywhere + self.GrabAnywhereUsingControlKey = grab_anywhere_using_control + if keep_on_top is None and DEFAULT_KEEP_ON_TOP is not None: + keep_on_top = DEFAULT_KEEP_ON_TOP + elif keep_on_top is None: + keep_on_top = False + self.KeepOnTop = keep_on_top + self.ForceTopLevel = force_toplevel + self.Resizable = resizable + self._AlphaChannel = alpha_channel if alpha_channel is not None else DEFAULT_ALPHA_CHANNEL + self.Timeout = None + self.TimeoutKey = TIMEOUT_KEY + self.TimerCancelled = False + self.DisableClose = disable_close + self.DisableMinimize = disable_minimize + self._Hidden = False + self._Size = size + self.XFound = False + if element_padding is not None: + if isinstance(element_padding, int): + element_padding = (element_padding, element_padding) + + if element_padding is None: + self.ElementPadding = DEFAULT_ELEMENT_PADDING + else: + self.ElementPadding = element_padding + self.RightClickMenu = right_click_menu + self.Margins = margins if margins != (None, None) else DEFAULT_MARGINS + self.ContainerElemementNumber = Window._GetAContainerNumber() + # The dictionary containing all elements and keys for the window + # The keys are the keys for the elements and the values are the elements themselves. + self.AllKeysDict = {} + self.TransparentColor = transparent_color + self.UniqueKeyCounter = 0 + if pysimplegui_user_settings.get('-enable debugger-', False) or debugger_enabled: + self.DebuggerEnabled = True + else: + self.DebuggerEnabled = False + self.WasClosed = False + self.ElementJustification = element_justification + self.FocusSet = False + self.metadata = metadata + self.TtkTheme = ttk_theme or DEFAULT_TTK_THEME + self.UseTtkButtons = use_ttk_buttons if use_ttk_buttons is not None else USE_TTK_BUTTONS + self.user_bind_dict = {} # Used when user defines a tkinter binding using bind method - convert bind string to key modifier + self.user_bind_event = None # Used when user defines a tkinter binding using bind method - event data from tkinter + self.modal = modal + self.thread_queue = None # type: queue.Queue + self.thread_lock = None # type: threading.Lock + self.thread_timer = None # type: tk.Misc + self.thread_strvar = None # type: tk.StringVar + self.read_closed_window_count = 0 + self.config_last_size = (None, None) + self.config_last_location = (None, None) + self.starting_window_position = (None, None) + self.not_completed_initial_movement = True + self.config_count = 0 + self.saw_00 = False + self.maximized = False + self._right_click_menu_element = None + self.right_click_menu_background_color = right_click_menu_background_color if right_click_menu_background_color is not None else theme_input_background_color() + self.right_click_menu_text_color = right_click_menu_text_color if right_click_menu_text_color is not None else theme_input_text_color() + self.right_click_menu_disabled_text_color = right_click_menu_disabled_text_color if right_click_menu_disabled_text_color is not None else COLOR_SYSTEM_DEFAULT + self.right_click_menu_font = right_click_menu_font if right_click_menu_font is not None else self.Font + self.right_click_menu_tearoff = right_click_menu_tearoff + self.auto_close_timer_needs_starting = False + self.finalize_in_progress = False + self.close_destroys_window = not enable_close_attempted_event if enable_close_attempted_event is not None else None + self.enable_window_config_events = enable_window_config_events + self.override_custom_titlebar = False + self.use_custom_titlebar = use_custom_titlebar or theme_use_custom_titlebar() + self.titlebar_background_color = titlebar_background_color + self.titlebar_text_color = titlebar_text_color + self.titlebar_font = titlebar_font + self.titlebar_icon = titlebar_icon + self.right_click_menu_selected_colors = _simplified_dual_color_to_tuple(right_click_menu_selected_colors, + (self.right_click_menu_background_color, self.right_click_menu_text_color)) + self.TKRightClickMenu = None + self._grab_anywhere_ignore_these_list = [] + self._grab_anywhere_include_these_list = [] + self._has_custom_titlebar = use_custom_titlebar + self._mousex = self._mousey = 0 + self._startx = self._starty = 0 + self._last_location = (None, None) # used by a property + self.auto_save_location = auto_save_location + if auto_save_location is True: + self.Location = user_settings_get_entry('-LAST WINDOW LOCATION-'+title, self.Location) + self.scaling = scaling if scaling is not None else DEFAULT_SCALING + + if self.use_custom_titlebar: + self.Margins = (0, 0) + self.NoTitleBar = True + self._mouse_offset_x = self._mouse_offset_y = 0 + self.watermark = watermark + self.repeating_timer_ms = repeating_timer_ms + + # use the print event values setting if explicitly turned on or disable if explicitly turned off in this window + if print_event_values is True or (pysimplegui_user_settings.get('-print event values-', False) and print_event_values is not False): + self.print_event_values = True + else: + self.print_event_values = False + + self.ttk_part_overrides = TTKPartOverrides(sbar_trough_color=sbar_trough_color, sbar_background_color=sbar_background_color, sbar_arrow_color=sbar_arrow_color, sbar_width=sbar_width, sbar_arrow_width=sbar_arrow_width, sbar_frame_color=sbar_frame_color, sbar_relief=sbar_relief) + + if no_titlebar is True: + self.override_custom_titlebar = True + + if layout is not None and type(layout) not in (list, tuple): + warnings.warn('Your layout is not a list or tuple... this is not good!') + + if layout is not None: + self.Layout(layout) + if finalize or self.repeating_timer_ms: + self.Finalize() + + if CURRENT_LOOK_AND_FEEL == 'Default': + print("Window will be a boring gray. Try removing the theme call entirely\n", + "You will get the default theme or the one set in global settings\n" + "If you seriously want this gray window and no more nagging, add theme('DefaultNoMoreNagging') or theme('Gray Gray Gray') for completely gray/System Defaults") + + @classmethod + def _GetAContainerNumber(cls): + """ + Not user callable! + :return: A simple counter that makes each container element unique + :rtype: + """ + cls._container_element_counter += 1 + return cls._container_element_counter + + @classmethod + def _IncrementOpenCount(self): + """ + Not user callable! Increments the number of open windows + Note - there is a bug where this count easily gets out of sync. Issue has been opened already. No ill effects + """ + self.NumOpenWindows += 1 + # print('+++++ INCREMENTING Num Open Windows = {} ---'.format(Window.NumOpenWindows)) + + @classmethod + def _DecrementOpenCount(self): + """ + Not user callable! Decrements the number of open windows + """ + self.NumOpenWindows -= 1 * (self.NumOpenWindows != 0) # decrement if not 0 + # print('----- DECREMENTING Num Open Windows = {} ---'.format(Window.NumOpenWindows)) + + @classmethod + def get_screen_size(self): + """ + This is a "Class Method" meaning you call it by writing: width, height = Window.get_screen_size() + Returns the size of the "screen" as determined by tkinter. This can vary depending on your operating system and the number of monitors installed on your system. For Windows, the primary monitor's size is returns. On some multi-monitored Linux systems, the monitors are combined and the total size is reported as if one screen. + + :return: Size of the screen in pixels as determined by tkinter + :rtype: (int, int) + """ + root = _get_hidden_master_root() + screen_width = root.winfo_screenwidth() + screen_height = root.winfo_screenheight() + return screen_width, screen_height + + @property + def metadata(self): + """ + Metadata is available for all windows. You can set to any value. + :return: the current metadata value + :rtype: (Any) + """ + return self._metadata + + @metadata.setter + def metadata(self, value): + """ + Metadata is available for all windows. You can set to any value. + :param value: Anything you want it to be + :type value: (Any) + """ + self._metadata = value + + + def last_location(self): + """ + The last known location of the window (x,y). Set by config events from tkinter + :return: The last location of the window + :rtype: (int, int) + """ + return self._last_location + + + # ------------------------- Add ONE Row to Form ------------------------- # + def add_row(self, *args): + """ + Adds a single row of elements to a window's self.Rows variables. + Generally speaking this is NOT how users should be building Window layouts. + Users, create a single layout (a list of lists) and pass as a parameter to Window object, or call Window.Layout(layout) + + :param *args: List[Elements] + :type *args: + """ + NumRows = len(self.Rows) # number of existing rows is our row number + CurrentRowNumber = NumRows # this row's number + CurrentRow = [] # start with a blank row and build up + # ------------------------- Add the elements to a row ------------------------- # + for i, element in enumerate(args): # Loop through list of elements and add them to the row + + if isinstance(element, tuple) or isinstance(element, list): + self.add_row(*element) + continue + _error_popup_with_traceback('Error creating Window layout', + 'Layout has a LIST instead of an ELEMENT', + 'This sometimes means you have a badly placed ]', + 'The offensive list is:', + element, + 'This list will be stripped from your layout' + ) + continue + elif callable(element) and not isinstance(element, Element): + _error_popup_with_traceback('Error creating Window layout', + 'Layout has a FUNCTION instead of an ELEMENT', + 'This likely means you are missing () from your layout', + 'The offensive list is:', + element, + 'This item will be stripped from your layout') + continue + if element.ParentContainer is not None: + warnings.warn( + '*** YOU ARE ATTEMPTING TO REUSE AN ELEMENT IN YOUR LAYOUT! Once placed in a layout, an element cannot be used in another layout. ***', + UserWarning) + _error_popup_with_traceback('Error detected in layout - Contains an element that has already been used.', + 'You have attempted to reuse an element in your layout.', + "The layout specified has an element that's already been used.", + 'You MUST start with a "clean", unused layout every time you create a window', + 'The offensive Element = ', + element, + 'and has a key = ', element.Key, + 'This item will be stripped from your layout', + 'Hint - try printing your layout and matching the IDs "print(layout)"') + continue + element.Position = (CurrentRowNumber, i) + element.ParentContainer = self + CurrentRow.append(element) + # if this element is a titlebar, then automatically set the window margins to (0,0) and turn off normal titlebar + if element.metadata == TITLEBAR_METADATA_MARKER: + self.Margins = (0, 0) + self.NoTitleBar = True + # ------------------------- Append the row to list of Rows ------------------------- # + self.Rows.append(CurrentRow) + + # ------------------------- Add Multiple Rows to Form ------------------------- # + def add_rows(self, rows): + """ + Loops through a list of lists of elements and adds each row, list, to the layout. + This is NOT the best way to go about creating a window. Sending the entire layout at one time and passing + it as a parameter to the Window call is better. + + :param rows: A list of a list of elements + :type rows: List[List[Elements]] + """ + for row in rows: + try: + iter(row) + except TypeError: + _error_popup_with_traceback('Error Creating Window Layout', 'Error creating Window layout', + 'Your row is not an iterable (e.g. a list)', + 'Instead of a list, the type found was {}'.format(type(row)), + 'The offensive row = ', + row, + 'This item will be stripped from your layout') + continue + self.add_row(*row) + + + def layout(self, rows): + """ + Second of two preferred ways of telling a Window what its layout is. The other way is to pass the layout as + a parameter to Window object. The parameter method is the currently preferred method. This call to Layout + has been removed from examples contained in documents and in the Demo Programs. Trying to remove this call + from history and replace with sending as a parameter to Window. + + :param rows: Your entire layout + :type rows: List[List[Elements]] + :return: self so that you can chain method calls + :rtype: (Window) + """ + if self.use_custom_titlebar and not self.override_custom_titlebar: + if self.titlebar_icon is not None: + icon = self.titlebar_icon + elif CUSTOM_TITLEBAR_ICON is not None: + icon = CUSTOM_TITLEBAR_ICON + elif self.titlebar_icon is not None: + icon = self.titlebar_icon + elif self.WindowIcon == DEFAULT_WINDOW_ICON: + icon = DEFAULT_BASE64_ICON_16_BY_16 + else: + icon = None + + new_rows = [[Titlebar(title=self.Title, icon=icon, text_color=self.titlebar_text_color, background_color=self.titlebar_background_color, + font=self.titlebar_font)]] + rows + else: + new_rows = rows + self.add_rows(new_rows) + self._BuildKeyDict() + + if self._has_custom_titlebar_element(): + self.Margins = (0, 0) + self.NoTitleBar = True + self._has_custom_titlebar = True + return self + + def extend_layout(self, container, rows): + """ + Adds new rows to an existing container element inside of this window + If the container is a scrollable Column, you need to also call the contents_changed() method + + :param container: The container Element the layout will be placed inside of + :type container: Frame | Column | Tab + :param rows: The layout to be added + :type rows: (List[List[Element]]) + :return: (Window) self so could be chained + :rtype: (Window) + """ + column = Column(rows, pad=(0, 0), background_color=container.BackgroundColor) + if self == container: + frame = self.TKroot + elif isinstance(container.Widget, TkScrollableFrame): + frame = container.Widget.TKFrame + else: + frame = container.Widget + PackFormIntoFrame(column, frame, self) + # sg.PackFormIntoFrame(col, window.TKroot, window) + self.AddRow(column) + self.AllKeysDict = self._BuildKeyDictForWindow(self, column, self.AllKeysDict) + return self + + def LayoutAndRead(self, rows, non_blocking=False): + """ + Deprecated!! Now your layout your window's rows (layout) and then separately call Read. + + :param rows: The layout of the window + :type rows: List[List[Element]] + :param non_blocking: if True the Read call will not block + :type non_blocking: (bool) + """ + _error_popup_with_traceback('LayoutAndRead Depricated', 'Wow! You have been using PySimpleGUI for a very long time.', + 'The Window.LayoutAndRead call is no longer supported') + + raise DeprecationWarning( + 'LayoutAndRead is no longer supported... change your call window.Layout(layout).Read()\nor window(title, layout).Read()') + # self.AddRows(rows) + # self._Show(non_blocking=non_blocking) + # return self.ReturnValues + + def LayoutAndShow(self, rows): + """ + Deprecated - do not use any longer. Layout your window and then call Read. Or can add a Finalize call before the Read + """ + raise DeprecationWarning('LayoutAndShow is no longer supported... ') + + def _Show(self, non_blocking=False): + """ + NOT TO BE CALLED BY USERS. INTERNAL ONLY! + It's this method that first shows the window to the user, collects results + + :param non_blocking: if True, this is a non-blocking call + :type non_blocking: (bool) + :return: Tuple[Any, Dict] The event, values turple that is returned from Read calls + :rtype: + """ + self.Shown = True + # Compute num rows & num cols (it'll come in handy debugging) + self.NumRows = len(self.Rows) + self.NumCols = max(len(row) for row in self.Rows) + self.NonBlocking = non_blocking + + # Search through entire form to see if any elements set the focus + # if not, then will set the focus to the first input element + found_focus = False + for row in self.Rows: + for element in row: + try: + if element.Focus: + found_focus = True + except: + pass + try: + if element.Key is not None: + self.UseDictionary = True + except: + pass + + if not found_focus and self.UseDefaultFocus: + self.UseDefaultFocus = True + else: + self.UseDefaultFocus = False + # -=-=-=-=-=-=-=-=- RUN the GUI -=-=-=-=-=-=-=-=- ## + StartupTK(self) + # If a button or keyboard event happened but no results have been built, build the results + if self.LastKeyboardEvent is not None or self.LastButtonClicked is not None: + return _BuildResults(self, False, self) + return self.ReturnValues + + # ------------------------- SetIcon - set the window's fav icon ------------------------- # + def set_icon(self, icon=None, pngbase64=None): + """ + Changes the icon that is shown on the title bar and on the task bar. + NOTE - The file type is IMPORTANT and depends on the OS! + Can pass in: + * filename which must be a .ICO icon file for windows, PNG file for Linux + * bytes object + * BASE64 encoded file held in a variable + + :param icon: Filename or bytes object + :type icon: (str) + :param pngbase64: Base64 encoded image + :type pngbase64: (bytes) + """ + if type(icon) is bytes or pngbase64 is not None: + wicon = tkinter.PhotoImage(data=icon if icon is not None else pngbase64) + try: + self.TKroot.tk.call('wm', 'iconphoto', self.TKroot._w, wicon) + except: + wicon = tkinter.PhotoImage(data=DEFAULT_BASE64_ICON) + try: + self.TKroot.tk.call('wm', 'iconphoto', self.TKroot._w, wicon) + except: + pass + self.WindowIcon = wicon + return + + wicon = icon + try: + self.TKroot.iconbitmap(icon) + except: + try: + wicon = tkinter.PhotoImage(file=icon) + self.TKroot.tk.call('wm', 'iconphoto', self.TKroot._w, wicon) + except: + try: + wicon = tkinter.PhotoImage(data=DEFAULT_BASE64_ICON) + try: + self.TKroot.tk.call('wm', 'iconphoto', self.TKroot._w, wicon) + except: + pass + except: + pass + self.WindowIcon = wicon + + def _GetElementAtLocation(self, location): + """ + Given a (row, col) location in a layout, return the element located at that position + + :param location: (int, int) Return the element located at (row, col) in layout + :type location: + :return: (Element) The Element located at that position in this window + :rtype: + """ + + (row_num, col_num) = location + row = self.Rows[row_num] + element = row[col_num] + return element + + def _GetDefaultElementSize(self): + """ + Returns the default elementSize + + :return: (width, height) of the default element size + :rtype: (int, int) + """ + + return self.DefaultElementSize + + def _AutoCloseAlarmCallback(self): + """ + Function that's called by tkinter when autoclode timer expires. Closes the window + + """ + try: + window = self + if window: + if window.NonBlocking: + self.Close() + else: + window._Close() + self.TKroot.quit() + self.RootNeedsDestroying = True + except: + pass + + def _TimeoutAlarmCallback(self): + """ + Read Timeout Alarm callback. Will kick a mainloop call out of the tkinter event loop and cause it to return + """ + # first, get the results table built + # modify the Results table in the parent FlexForm object + # print('TIMEOUT CALLBACK') + if self.TimerCancelled: + # print('** timer was cancelled **') + return + self.LastButtonClicked = self.TimeoutKey + self.FormRemainedOpen = True + self.TKroot.quit() # kick the users out of the mainloop + + def _calendar_chooser_button_clicked(self, elem): + """ + + :param elem: + :type elem: + :return: + :rtype: + """ + target_element, strvar, should_submit_window = elem._find_target() + + if elem.calendar_default_date_M_D_Y == (None, None, None): + now = datetime.datetime.now() + cur_month, cur_day, cur_year = now.month, now.day, now.year + else: + cur_month, cur_day, cur_year = elem.calendar_default_date_M_D_Y + + date_chosen = popup_get_date(start_mon=cur_month, start_day=cur_day, start_year=cur_year, close_when_chosen=elem.calendar_close_when_chosen, + no_titlebar=elem.calendar_no_titlebar, begin_at_sunday_plus=elem.calendar_begin_at_sunday_plus, + locale=elem.calendar_locale, location=elem.calendar_location, month_names=elem.calendar_month_names, + day_abbreviations=elem.calendar_day_abbreviations, title=elem.calendar_title) + if date_chosen is not None: + month, day, year = date_chosen + now = datetime.datetime.now() + hour, minute, second = now.hour, now.minute, now.second + try: + date_string = calendar.datetime.datetime(year, month, day, hour, minute, second).strftime(elem.calendar_format) + except Exception as e: + print('Bad format string in calendar chooser button', e) + date_string = 'Bad format string' + + if target_element is not None and target_element != elem: + target_element.update(date_string) + elif target_element == elem: + elem.calendar_selection = date_string + + strvar.set(date_string) + elem.TKStringVar.set(date_string) + if should_submit_window: + self.LastButtonClicked = target_element.Key + results = _BuildResults(self, False, self) + else: + should_submit_window = False + return should_submit_window + + # @_timeit_summary + def read(self, timeout=None, timeout_key=TIMEOUT_KEY, close=False): + """ + THE biggest deal method in the Window class! This is how you get all of your data from your Window. + Pass in a timeout (in milliseconds) to wait for a maximum of timeout milliseconds. Will return timeout_key + if no other GUI events happen first. + + :param timeout: Milliseconds to wait until the Read will return IF no other GUI events happen first + :type timeout: (int) + :param timeout_key: The value that will be returned from the call if the timer expired + :type timeout_key: (Any) + :param close: if True the window will be closed prior to returning + :type close: (bool) + :return: (event, values) + :rtype: Tuple[(Any), Dict[Any, Any], List[Any], None] + """ + + if Window._floating_debug_window_build_needed is True: + Window._floating_debug_window_build_needed = False + _Debugger.debugger._build_floating_window() + + if Window._main_debug_window_build_needed is True: + Window._main_debug_window_build_needed = False + _Debugger.debugger._build_main_debugger_window() + + # ensure called only 1 time through a single read cycle + if not Window._read_call_from_debugger: + _refresh_debugger() + + # if the user has not added timeout and a debug window is open, then set a timeout for them so the debugger continuously refreshes + if _debugger_window_is_open() and not Window._read_call_from_debugger: + if timeout is None or timeout > 3000: + timeout = 200 + + self._right_click_menu_element = None + + while True: + Window._root_running_mainloop = self.TKroot + results = self._read(timeout=timeout, timeout_key=timeout_key) + if results is not None: + if results[0] == DEFAULT_WINDOW_SNAPSHOT_KEY: + self.save_window_screenshot_to_disk() + popup_quick_message('Saved window screenshot to disk', background_color='#1c1e23', text_color='white', keep_on_top=True, font='_ 30') + continue + # Post processing for Calendar Chooser Button + try: + if results[0] == timeout_key: # if a timeout, then not a calendar button + break + elem = self.find_element(results[0], silent_on_error=True) # get the element that caused the event + if elem.Type == ELEM_TYPE_BUTTON: + if elem.BType == BUTTON_TYPE_CALENDAR_CHOOSER: + if self._calendar_chooser_button_clicked(elem): # returns True if should break out + # results[0] = self.LastButtonClicked + results = self.ReturnValues + break + else: + continue + break + except: + break # wasn't a calendar button for sure + + + if close: + self.close() + + if self.print_event_values: + try: # just in casee something weird about the results being printed + if not (pysimplegui_user_settings.get('-do not print timeouts-', True) and results[0] == TIMEOUT_EVENT): + if pysimplegui_user_settings.get('-format values dict-', True): + print(f'{results[0]}\n {dict_to_string(results[1])}') + else: + print(f'{results[0]}\n {results[1]}') + except Exception as e: + pass + return results + + # @_timeit + def _read(self, timeout=None, timeout_key=TIMEOUT_KEY): + """ + THE biggest deal method in the Window class! This is how you get all of your data from your Window. + Pass in a timeout (in milliseconds) to wait for a maximum of timeout milliseconds. Will return timeout_key + if no other GUI events happen first. + + :param timeout: Milliseconds to wait until the Read will return IF no other GUI events happen first + :type timeout: (int) + :param timeout_key: The value that will be returned from the call if the timer expired + :type timeout_key: (Any)` + :return: (event, values) (event or timeout_key or None, Dictionary of values or List of values from all elements in the Window) + :rtype: Tuple[(Any), Dict[Any, Any], List[Any], None] + """ + + # if there are events in the thread event queue, then return those events before doing anything else. + if self._queued_thread_event_available(): + self.ReturnValues = results = _BuildResults(self, False, self) + return results + + if self.finalize_in_progress and self.auto_close_timer_needs_starting: + self._start_autoclose_timer() + self.auto_close_timer_needs_starting = False + + timeout = int(timeout) if timeout is not None else None + if timeout == 0: # timeout of zero runs the old readnonblocking + event, values = self._ReadNonBlocking() + if event is None: + event = timeout_key + if values is None: + event = None + return event, values # make event None if values was None and return + # Read with a timeout + self.Timeout = timeout + self.TimeoutKey = timeout_key + self.NonBlocking = False + if self.TKrootDestroyed: + self.read_closed_window_count += 1 + if self.read_closed_window_count > 100: + popup_error_with_traceback('Trying to read a closed window', 'You have tried 100 times to read a closed window.', 'You need to add a check for event == WIN_CLOSED',) + return None, None + if not self.Shown: + self._Show() + else: + # if already have a button waiting, the return previously built results + if self.LastButtonClicked is not None and not self.LastButtonClickedWasRealtime: + results = _BuildResults(self, False, self) + self.LastButtonClicked = None + return results + InitializeResults(self) + + if self._queued_thread_event_available(): + self.ReturnValues = results = _BuildResults(self, False, self) + return results + + # if the last button clicked was realtime, emulate a read non-blocking + # the idea is to quickly return realtime buttons without any blocks until released + if self.LastButtonClickedWasRealtime: + # clear the realtime flag if the element is not a button element (for example a graph element that is dragging) + if self.AllKeysDict.get(self.LastButtonClicked, None): + if self.AllKeysDict.get(self.LastButtonClicked).Type != ELEM_TYPE_BUTTON: + self.LastButtonClickedWasRealtime = False # stops from generating events until something changes + else: # it is possible for the key to not be in the dicitonary because it has a modifier. If so, then clear the realtime button flag + self.LastButtonClickedWasRealtime = False # stops from generating events until something changes + + try: + rc = self.TKroot.update() + except: + self.TKrootDestroyed = True + Window._DecrementOpenCount() + # _my_windows.Decrement() + # print('ROOT Destroyed') + results = _BuildResults(self, False, self) + if results[0] != None and results[0] != timeout_key: + return results + else: + pass + + # else: + # print("** REALTIME PROBLEM FOUND **", results) + + if self.RootNeedsDestroying: + # print('*** DESTROYING really late***') + try: + self.TKroot.destroy() + except: + pass + # _my_windows.Decrement() + self.LastButtonClicked = None + return None, None + + # normal read blocking code.... + if timeout != None: + self.TimerCancelled = False + self.TKAfterID = self.TKroot.after(timeout, self._TimeoutAlarmCallback) + self.CurrentlyRunningMainloop = True + # self.TKroot.protocol("WM_DESTROY_WINDOW", self._OnClosingCallback) + # self.TKroot.protocol("WM_DELETE_WINDOW", self._OnClosingCallback) + Window._window_running_mainloop = self + try: + Window._root_running_mainloop.mainloop() + except: + print('**** EXITING ****') + exit(-1) + # print('Out main') + self.CurrentlyRunningMainloop = False + # if self.LastButtonClicked != TIMEOUT_KEY: + try: + self.TKroot.after_cancel(self.TKAfterID) + del self.TKAfterID + except: + pass + # print('** tkafter cancel failed **') + self.TimerCancelled = True + if self.RootNeedsDestroying: + # print('*** DESTROYING LATE ***') + try: + self.TKroot.destroy() + except: + pass + Window._DecrementOpenCount() + # _my_windows.Decrement() + self.LastButtonClicked = None + return None, None + # if form was closed with X + if self.LastButtonClicked is None and self.LastKeyboardEvent is None and self.ReturnValues[0] is None: + Window._DecrementOpenCount() + # _my_windows.Decrement() + # Determine return values + if self.LastKeyboardEvent is not None or self.LastButtonClicked is not None: + results = _BuildResults(self, False, self) + if not self.LastButtonClickedWasRealtime: + self.LastButtonClicked = None + return results + else: + if self._queued_thread_event_available(): + self.ReturnValues = results = _BuildResults(self, False, self) + return results + if not self.XFound and self.Timeout != 0 and self.Timeout is not None and self.ReturnValues[ + 0] is None: # Special Qt case because returning for no reason so fake timeout + self.ReturnValues = self.TimeoutKey, self.ReturnValues[1] # fake a timeout + elif not self.XFound and self.ReturnValues[0] is None: # Return a timeout event... can happen when autoclose used on another window + # print("*** Faking timeout ***") + self.ReturnValues = self.TimeoutKey, self.ReturnValues[1] # fake a timeout + return self.ReturnValues + + def _ReadNonBlocking(self): + """ + Should be NEVER called directly by the user. The user can call Window.read(timeout=0) to get same effect + + :return: (event, values). (event or timeout_key or None, Dictionary of values or List of values from all elements in the Window) + :rtype: Tuple[(Any), Dict[Any, Any] | List[Any] | None] + """ + if self.TKrootDestroyed: + try: + self.TKroot.quit() + self.TKroot.destroy() + except: + pass + # print('DESTROY FAILED') + return None, None + if not self.Shown: + self._Show(non_blocking=True) + try: + rc = self.TKroot.update() + except: + self.TKrootDestroyed = True + Window._DecrementOpenCount() + # _my_windows.Decrement() + # print("read failed") + # return None, None + if self.RootNeedsDestroying: + # print('*** DESTROYING LATE ***', self.ReturnValues) + self.TKroot.destroy() + Window._DecrementOpenCount() + # _my_windows.Decrement() + self.Values = None + self.LastButtonClicked = None + return None, None + return _BuildResults(self, False, self) + + def _start_autoclose_timer(self): + duration = DEFAULT_AUTOCLOSE_TIME if self.AutoCloseDuration is None else self.AutoCloseDuration + self.TKAfterID = self.TKroot.after(int(duration * 1000), self._AutoCloseAlarmCallback) + + def finalize(self): + """ + Use this method to cause your layout to built into a real tkinter window. In reality this method is like + Read(timeout=0). It doesn't block and uses your layout to create tkinter widgets to represent the elements. + Lots of action! + + :return: Returns 'self' so that method "Chaining" can happen (read up about it as it's very cool!) + :rtype: (Window) + """ + + if self.TKrootDestroyed: + return self + self.finalize_in_progress = True + + self.Read(timeout=1) + + if self.AutoClose: + self.auto_close_timer_needs_starting = True + # add the window to the list of active windows + Window._active_windows[self] = Window.hidden_master_root + if self.repeating_timer_ms is not None: + self.timer_start(self.repeating_timer_ms, repeating=True) + return self + # OLD CODE FOLLOWS + if not self.Shown: + self._Show(non_blocking=True) + try: + rc = self.TKroot.update() + except: + self.TKrootDestroyed = True + Window._DecrementOpenCount() + print('** Finalize failed **') + # _my_windows.Decrement() + # return None, None + return self + + def refresh(self): + """ + Refreshes the window by calling tkroot.update(). Can sometimes get away with a refresh instead of a Read. + Use this call when you want something to appear in your Window immediately (as soon as this function is called). + If you change an element in a window, your change will not be visible until the next call to Window.read + or a call to Window.refresh() + + :return: `self` so that method calls can be easily "chained" + :rtype: (Window) + """ + + if self.TKrootDestroyed: + return self + try: + rc = self.TKroot.update() + except: + pass + return self + + def fill(self, values_dict): + """ + Fill in elements that are input fields with data based on a 'values dictionary' + + :param values_dict: pairs + :type values_dict: (Dict[Any, Any]) - {Element_key : value} + :return: returns self so can be chained with other methods + :rtype: (Window) + """ + + FillFormWithValues(self, values_dict) + return self + + def _find_closest_key(self, search_key): + if not isinstance(search_key, str): + search_key = str(search_key) + matches = difflib.get_close_matches(search_key, [str(k) for k in self.AllKeysDict.keys()]) + if not len(matches): + return None + for k in self.AllKeysDict.keys(): + if matches[0] == str(k): + return k + return matches[0] if len(matches) else None + + def FindElement(self, key, silent_on_error=False): + """ + ** Warning ** This call will eventually be depricated. ** + + It is suggested that you modify your code to use the recommended window[key] lookup or the PEP8 compliant window.find_element(key) + + For now, you'll only see a message printed and the call will continue to funcation as before. + + :param key: Used with window.find_element and with return values to uniquely identify this element + :type key: str | int | tuple | object + :param silent_on_error: If True do not display popup nor print warning of key errors + :type silent_on_error: (bool) + :return: Return value can be: the Element that matches the supplied key if found; an Error Element if silent_on_error is False; None if silent_on_error True; + :rtype: Element | Error Element | None + """ + + warnings.warn('Use of FindElement is not recommended.\nEither switch to the recommended window[key] format\nor the PEP8 compliant find_element', + UserWarning) + print('** Warning - FindElement should not be used to look up elements. window[key] or window.find_element are recommended. **') + + return self.find_element(key, silent_on_error=silent_on_error) + + def find_element(self, key, silent_on_error=False, supress_guessing=None, supress_raise=None): + """ + Find element object associated with the provided key. + THIS METHOD IS NO LONGER NEEDED to be called by the user + + You can perform the same operation by writing this statement: + element = window[key] + + You can drop the entire "find_element" function name and use [ ] instead. + + However, if you wish to perform a lookup without error checking, and don't have error popups turned + off globally, you'll need to make this call so that you can disable error checks on this call. + + find_element is typically used in combination with a call to element's update method (or any other element method!): + window[key].update(new_value) + + Versus the "old way" + window.FindElement(key).Update(new_value) + + This call can be abbreviated to any of these: + find_element = FindElement == Element == Find + With find_element being the PEP8 compliant call that should be used. + + Rememeber that this call will return None if no match is found which may cause your code to crash if not + checked for. + + :param key: Used with window.find_element and with return values to uniquely identify this element + :type key: str | int | tuple | object + :param silent_on_error: If True do not display popup nor print warning of key errors + :type silent_on_error: (bool) + :param supress_guessing: Override for the global key guessing setting. + :type supress_guessing: (bool | None) + :param supress_raise: Override for the global setting that determines if a key error should raise an exception + :type supress_raise: (bool | None) + :return: Return value can be: the Element that matches the supplied key if found; an Error Element if silent_on_error is False; None if silent_on_error True + :rtype: Element | ErrorElement | None + """ + + key_error = False + closest_key = None + supress_guessing = supress_guessing if supress_guessing is not None else SUPPRESS_KEY_GUESSING + supress_raise = supress_raise if supress_raise is not None else SUPPRESS_RAISE_KEY_ERRORS + try: + element = self.AllKeysDict[key] + except KeyError: + key_error = True + closest_key = self._find_closest_key(key) + if not silent_on_error: + print('** Error looking up your element using the key: ', key, 'The closest matching key: ', closest_key) + _error_popup_with_traceback('Key Error', 'Problem finding your key ' + str(key), 'Closest match = ' + str(closest_key), emoji=EMOJI_BASE64_KEY) + element = ErrorElement(key=key) + else: + element = None + if not supress_raise: + raise KeyError(key) + + if key_error: + if not supress_guessing and closest_key is not None: + element = self.AllKeysDict[closest_key] + + return element + + Element = find_element # Shortcut function + Find = find_element # Shortcut function, most likely not used by many people. + Elem = find_element # NEW for 2019! More laziness... Another shortcut + + def find_element_with_focus(self): + """ + Returns the Element that currently has focus as reported by tkinter. If no element is found None is returned! + :return: An Element if one has been found with focus or None if no element found + :rtype: Element | None + """ + element = _FindElementWithFocusInSubForm(self) + return element + + def widget_to_element(self, widget): + """ + Returns the element that matches a supplied tkinter widget. + If no matching element is found, then None is returned. + + + :return: Element that uses the specified widget + :rtype: Element | None + """ + if self.AllKeysDict is None or len(self.AllKeysDict) == 0: + return None + for key, element in self.AllKeysDict.items(): + if element.Widget == widget: + return element + return None + + def _BuildKeyDict(self): + """ + Used internally only! Not user callable + Builds a dictionary containing all elements with keys for this window. + """ + dict = {} + self.AllKeysDict = self._BuildKeyDictForWindow(self, self, dict) + + def _BuildKeyDictForWindow(self, top_window, window, key_dict): + """ + Loop through all Rows and all Container Elements for this window and create the keys for all of them. + Note that the calls are recursive as all pathes must be walked + + :param top_window: The highest level of the window + :type top_window: (Window) + :param window: The "sub-window" (container element) to be searched + :type window: Column | Frame | TabGroup | Pane | Tab + :param key_dict: The dictionary as it currently stands.... used as part of recursive call + :type key_dict: + :return: (dict) Dictionary filled with all keys in the window + :rtype: + """ + for row_num, row in enumerate(window.Rows): + for col_num, element in enumerate(row): + if element.Type == ELEM_TYPE_COLUMN: + key_dict = self._BuildKeyDictForWindow(top_window, element, key_dict) + if element.Type == ELEM_TYPE_FRAME: + key_dict = self._BuildKeyDictForWindow(top_window, element, key_dict) + if element.Type == ELEM_TYPE_TAB_GROUP: + key_dict = self._BuildKeyDictForWindow(top_window, element, key_dict) + if element.Type == ELEM_TYPE_PANE: + key_dict = self._BuildKeyDictForWindow(top_window, element, key_dict) + if element.Type == ELEM_TYPE_TAB: + key_dict = self._BuildKeyDictForWindow(top_window, element, key_dict) + if element.Key is None: # if no key has been assigned.... create one for input elements + if element.Type == ELEM_TYPE_BUTTON: + element.Key = element.ButtonText + elif element.Type == ELEM_TYPE_TAB: + element.Key = element.Title + if element.Type in (ELEM_TYPE_MENUBAR, ELEM_TYPE_BUTTONMENU, + ELEM_TYPE_INPUT_SLIDER, ELEM_TYPE_GRAPH, ELEM_TYPE_IMAGE, + ELEM_TYPE_INPUT_CHECKBOX, ELEM_TYPE_INPUT_LISTBOX, ELEM_TYPE_INPUT_COMBO, + ELEM_TYPE_INPUT_MULTILINE, ELEM_TYPE_INPUT_OPTION_MENU, ELEM_TYPE_INPUT_SPIN, + ELEM_TYPE_INPUT_RADIO, ELEM_TYPE_INPUT_TEXT, ELEM_TYPE_PROGRESS_BAR, + ELEM_TYPE_TABLE, ELEM_TYPE_TREE, + ELEM_TYPE_TAB_GROUP, ELEM_TYPE_SEPARATOR): + element.Key = top_window.DictionaryKeyCounter + top_window.DictionaryKeyCounter += 1 + if element.Key is not None: + if element.Key in key_dict.keys(): + if element.Type == ELEM_TYPE_BUTTON and WARN_DUPLICATE_BUTTON_KEY_ERRORS: # for Buttons see if should complain + warnings.warn('*** Duplicate key found in your layout {} ***'.format(element.Key), UserWarning) + warnings.warn('*** Replaced new key with {} ***'.format(str(element.Key) + str(self.UniqueKeyCounter))) + if not SUPPRESS_ERROR_POPUPS: + _error_popup_with_traceback('Duplicate key found in your layout', 'Dupliate key: {}'.format(element.Key), + 'Is being replaced with: {}'.format(str(element.Key) + str(self.UniqueKeyCounter)), + 'The line of code above shows you which layout, but does not tell you exactly where the element was defined', + 'The element type is {}'.format(element.Type)) + element.Key = str(element.Key) + str(self.UniqueKeyCounter) + self.UniqueKeyCounter += 1 + key_dict[element.Key] = element + return key_dict + + def element_list(self): + """ + Returns a list of all elements in the window + + :return: List of all elements in the window and container elements in the window + :rtype: List[Element] + """ + return self._build_element_list() + + def _build_element_list(self): + """ + Used internally only! Not user callable + Builds a dictionary containing all elements with keys for this window. + """ + elem_list = [] + elem_list = self._build_element_list_for_form(self, self, elem_list) + return elem_list + + def _build_element_list_for_form(self, top_window, window, elem_list): + """ + Loop through all Rows and all Container Elements for this window and create a list + Note that the calls are recursive as all pathes must be walked + + :param top_window: The highest level of the window + :type top_window: (Window) + :param window: The "sub-window" (container element) to be searched + :type window: Column | Frame | TabGroup | Pane | Tab + :param elem_list: The element list as it currently stands.... used as part of recursive call + :type elem_list: ??? + :return: List of all elements in this sub-window + :rtype: List[Element] + """ + for row_num, row in enumerate(window.Rows): + for col_num, element in enumerate(row): + elem_list.append(element) + if element.Type in (ELEM_TYPE_COLUMN, ELEM_TYPE_FRAME, ELEM_TYPE_TAB_GROUP, ELEM_TYPE_PANE, ELEM_TYPE_TAB): + elem_list = self._build_element_list_for_form(top_window, element, elem_list) + return elem_list + + + def settings_save(self, values): + """ + Saves settings to settings file using the values dictionary that is passed in. + + :param values: Dictionary of values to potentially save + :type values: (Dict) + """ + if values is None: # sometimes users may accidently pass in None, so just ignore it + return + for key, value in values.items(): + try: + element = self.find_element(key) + if element.setting is not None: + user_settings_set_entry(key, value) + except Exception as e: + _error_popup_with_traceback('Error saving settings', e) + + def settings_restore(self): + """ + Reads settings and sets the window's Elements to those values. + + TODO - NOTE - may have trouble on some elements due to how update calls work + + """ + for key in self.key_dict.keys(): + try: + element = self.find_element(key) + if element.setting is not None: + value = user_settings_get_entry(key, '') + element.update(value) + except Exception as e: + _error_popup_with_traceback('Error restoring settings', e) + + + def save_to_disk(self, filename): + """ + Saves the values contained in each of the input areas of the form. Basically saves what would be returned from a call to Read. It takes these results and saves them to disk using pickle. + Note that every element in your layout that is to be saved must have a key assigned to it. + + :param filename: Filename to save the values to in pickled form + :type filename: str + """ + try: + event, values = _BuildResults(self, False, self) + remove_these = [] + for key in values: + if self.Element(key).Type == ELEM_TYPE_BUTTON: + remove_these.append(key) + for key in remove_these: + del values[key] + with open(filename, 'wb') as sf: + pickle.dump(values, sf) + except: + print('*** Error saving Window contents to disk ***') + + def load_from_disk(self, filename): + """ + Restore values from a previous call to SaveToDisk which saves the returned values dictionary in Pickle format + + :param filename: Pickle Filename to load + :type filename: (str) + """ + try: + with open(filename, 'rb') as df: + self.Fill(pickle.load(df)) + except: + print('*** Error loading form to disk ***') + + def get_screen_dimensions(self): + """ + Get the screen dimensions. NOTE - you must have a window already open for this to work (blame tkinter not me) + + :return: Tuple containing width and height of screen in pixels + :rtype: Tuple[None, None] | Tuple[width, height] + """ + + if self.TKrootDestroyed or self.TKroot is None: + return Window.get_screen_size() + screen_width = self.TKroot.winfo_screenwidth() # get window info to move to middle of screen + screen_height = self.TKroot.winfo_screenheight() + return screen_width, screen_height + + def move(self, x, y): + """ + Move the upper left corner of this window to the x,y coordinates provided + :param x: x coordinate in pixels + :type x: (int) + :param y: y coordinate in pixels + :type y: (int) + """ + try: + self.TKroot.geometry("+%s+%s" % (x, y)) + self.config_last_location = (int(x), (int(y))) + + except: + pass + + def move_to_center(self): + """ + Recenter your window after it's been moved or the size changed. + + This is a conveinence method. There are no tkinter calls involved, only pure PySimpleGUI API calls. + """ + if not self._is_window_created('tried Window.move_to_center'): + return + screen_width, screen_height = self.get_screen_dimensions() + win_width, win_height = self.size + x, y = (screen_width - win_width) // 2, (screen_height - win_height) // 2 + self.move(x, y) + + def minimize(self): + """ + Minimize this window to the task bar + """ + if not self._is_window_created('tried Window.minimize'): + return + if self.use_custom_titlebar is True: + self._custom_titlebar_minimize() + else: + self.TKroot.iconify() + self.maximized = False + + def maximize(self): + """ + Maximize the window. This is done differently on a windows system versus a linux or mac one. For non-Windows + the root attribute '-fullscreen' is set to True. For Windows the "root" state is changed to "zoomed" + The reason for the difference is the title bar is removed in some cases when using fullscreen option + """ + + if not self._is_window_created('tried Window.maximize'): + return + if not running_linux(): + self.TKroot.state('zoomed') + else: + self.TKroot.attributes('-fullscreen', True) + # this method removes the titlebar too + # self.TKroot.attributes('-fullscreen', True) + self.maximized = True + + def normal(self): + """ + Restore a window to a non-maximized state. Does different things depending on platform. See Maximize for more. + """ + if not self._is_window_created('tried Window.normal'): + return + if self.use_custom_titlebar: + self._custom_titlebar_restore() + else: + if self.TKroot.state() == 'iconic': + self.TKroot.deiconify() + else: + if not running_linux(): + self.TKroot.state('normal') + else: + self.TKroot.attributes('-fullscreen', False) + self.maximized = False + + def _StartMoveUsingControlKey(self, event): + """ + Used by "Grab Anywhere" style windows. This function is bound to mouse-down. It marks the beginning of a drag. + :param event: event information passed in by tkinter. Contains x,y position of mouse + :type event: (event) + """ + self._start_move_save_offset(event) + return + + + def _StartMoveGrabAnywhere(self, event): + + """ + Used by "Grab Anywhere" style windows. This function is bound to mouse-down. It marks the beginning of a drag. + :param event: event information passed in by tkinter. Contains x,y position of mouse + :type event: (event) + """ + if (isinstance(event.widget, GRAB_ANYWHERE_IGNORE_THESE_WIDGETS) or event.widget in self._grab_anywhere_ignore_these_list) and event.widget not in self._grab_anywhere_include_these_list: + # print('Found widget to ignore in grab anywhere...') + return + self._start_move_save_offset(event) + + def _StartMove(self, event): + self._start_move_save_offset(event) + return + + def _StopMove(self, event): + """ + Used by "Grab Anywhere" style windows. This function is bound to mouse-up. It marks the ending of a drag. + Sets the position of the window to this final x,y coordinates + :param event: event information passed in by tkinter. Contains x,y position of mouse + :type event: (event) + """ + return + + def _start_move_save_offset(self, event): + self._mousex = event.x + event.widget.winfo_rootx() + self._mousey = event.y + event.widget.winfo_rooty() + geometry = self.TKroot.geometry() + location = geometry[geometry.find('+') + 1:].split('+') + self._startx = int(location[0]) + self._starty = int(location[1]) + self._mouse_offset_x = self._mousex - self._startx + self._mouse_offset_y = self._mousey - self._starty + # ------ Move All Windows code ------ + if Window._move_all_windows: + # print('Moving all') + for win in Window._active_windows: + if win == self: + continue + geometry = win.TKroot.geometry() + location = geometry[geometry.find('+') + 1:].split('+') + _startx = int(location[0]) + _starty = int(location[1]) + win._mouse_offset_x = event.x_root - _startx + win._mouse_offset_y = event.y_root - _starty + + + def _OnMotionUsingControlKey(self, event): + self._OnMotion(event) + + + def _OnMotionGrabAnywhere(self, event): + + """ + Used by "Grab Anywhere" style windows. This function is bound to mouse motion. It actually moves the window + :param event: event information passed in by tkinter. Contains x,y position of mouse + :type event: (event) + """ + if (isinstance(event.widget, GRAB_ANYWHERE_IGNORE_THESE_WIDGETS) or event.widget in self._grab_anywhere_ignore_these_list) and event.widget not in self._grab_anywhere_include_these_list: + # print('Found widget to ignore in grab anywhere...') + return + + self._OnMotion(event) + + + def _OnMotion(self, event): + + self.TKroot.geometry(f"+{event.x_root-self._mouse_offset_x}+{event.y_root-self._mouse_offset_y}") + # print(f"+{event.x_root}+{event.y_root}") + # ------ Move All Windows code ------ + try: + if Window._move_all_windows: + for win in Window._active_windows: + if win == self: + continue + win.TKroot.geometry(f"+{event.x_root-win._mouse_offset_x}+{event.y_root-win._mouse_offset_y}") + except Exception as e: + print('on motion error', e) + + def _focus_callback(self, event): + print('Focus event = {} window = {}'.format(event, self.Title)) + + def _config_callback(self, event): + """ + Called when a config event happens for the window + + :param event: From tkinter and is not used + :type event: Any + """ + # do the location auto-save stuff. If the location changes, then the location is written to the settings file + if self.auto_save_location: + try: + cur_location = self.current_location() + old_location = self._last_location + if None not in cur_location: + self._last_location= cur_location + if old_location != cur_location: + self._auto_save_location() + except Exception as e: + pass + + if self.enable_window_config_events is True: + self.LastButtonClicked = WINDOW_CONFIG_EVENT + self.FormRemainedOpen = True + self.user_bind_event = event + _exit_mainloop(self) + + def _move_callback(self, event): + """ + Called when a control + arrow key is pressed. + This is a built-in window positioning key sequence + + :param event: From tkinter and is not used + :type event: Any + """ + if not self._is_window_created('Tried to move window using arrow keys'): + return + x,y = self.current_location() + if event.keysym == 'Up': + self.move(x, y-1) + elif event.keysym == 'Down': + self.move(x, y+1) + elif event.keysym == 'Left': + self.move(x-1, y) + elif event.keysym == 'Right': + self.move(x+1, y) + + """ + def _config_callback(self, event): + new_x = event.x + new_y = event.y + + + if self.not_completed_initial_movement: + if self.starting_window_position != (new_x, new_y): + return + self.not_completed_initial_movement = False + return + + if not self.saw_00: + if new_x == 0 and new_y == 0: + self.saw_00 = True + + # self.config_count += 1 + # if self.config_count < 40: + # return + + print('Move LOGIC') + + if self.config_last_size != (event.width, event.height): + self.config_last_size = (event.width, event.height) + + if self.config_last_location[0] != new_x or self.config_last_location[1] != new_y: + if self.config_last_location == (None, None): + self.config_last_location = (new_x, new_y) + return + + deltax = self.config_last_location[0] - event.x + deltay = self.config_last_location[1] - event.y + if deltax == 0 and deltay == 0: + print('not moving so returning') + return + if Window._move_all_windows: + print('checking all windows') + for window in Window._active_windows: + if window == self: + continue + x = window.TKroot.winfo_x() + deltax + y = window.TKroot.winfo_y() + deltay + # window.TKroot.geometry("+%s+%s" % (x, y)) # this is what really moves the window + # window.config_last_location = (x,y) + """ + + def _KeyboardCallback(self, event): + """ + Window keyboard callback. Called by tkinter. Will kick user out of the tkinter event loop. Should only be + called if user has requested window level keyboard events + + :param event: object provided by tkinter that contains the key information + :type event: (event) + """ + self.LastButtonClicked = None + self.FormRemainedOpen = True + if event.char != '': + self.LastKeyboardEvent = event.char + else: + self.LastKeyboardEvent = str(event.keysym) + ':' + str(event.keycode) + # if not self.NonBlocking: + # _BuildResults(self, False, self) + _exit_mainloop(self) + + def _MouseWheelCallback(self, event): + """ + Called by tkinter when a mouse wheel event has happened. Only called if keyboard events for the window + have been enabled + + :param event: object sent in by tkinter that has the wheel direction + :type event: (event) + """ + self.LastButtonClicked = None + self.FormRemainedOpen = True + self.LastKeyboardEvent = 'MouseWheel:Down' if event.delta < 0 or event.num == 5 else 'MouseWheel:Up' + # if not self.NonBlocking: + # _BuildResults(self, False, self) + _exit_mainloop(self) + + @property + def right_click_menu_element(self): + """ + The element that produced a right click meny event (if one did). If can't find the element, None is returned. + :return: Element that generated a right click menu event. If one can't be found, then None is returned + :rtype: (Element | None) + """ + return self._right_click_menu_element + + + def _Close(self, without_event=False): + """ + The internal close call that does the real work of building. This method basically sets up for closing + but doesn't destroy the window like the User's version of Close does + + :parm without_event: if True, then do not cause an event to be generated, "silently" close the window + :type without_event: (bool) + """ + + try: + self.TKroot.update() + except: + pass + + if not self.NonBlocking or not without_event: + _BuildResults(self, False, self) + if self.TKrootDestroyed: + return + self.TKrootDestroyed = True + self.RootNeedsDestroying = True + return + + def close(self): + """ + Closes window. Users can safely call even if window has been destroyed. Should always call when done with + a window so that resources are properly freed up within your thread. + """ + self._auto_save_location() + + try: + del Window._active_windows[self] # will only be in the list if window was explicitly finalized + except: + pass + + try: + self.TKroot.update() # On Linux must call update if the user closed with X or else won't actually close the window + except: + pass + + self._restore_stdout() + self._restore_stderr() + + _TimerPeriodic.stop_all_timers_for_window(self) + + if self.TKrootDestroyed: + return + try: + self.TKroot.destroy() + self.TKroot.update() + Window._DecrementOpenCount() + except: + pass + # if down to 1 window, try and destroy the hidden window, if there is one + # if Window.NumOpenWindows == 1: + # try: + # Window.hidden_master_root.destroy() + # Window.NumOpenWindows = 0 # if no hidden window, then this won't execute + # except: + # pass + self.TKrootDestroyed = True + + # Free up anything that was held in the layout and the root variables + self.Rows = None + self.TKroot = None + + def is_closed(self, quick_check=None): + """ + Returns True is the window is maybe closed. Can be difficult to tell sometimes + NOTE - the call to TKroot.update was taking over 500 ms sometimes so added a flag to bypass the lengthy call. + :param quick_quick: If True, then don't use the root.update call, only check the flags + :type quick_check: bool + :return: True if the window was closed or destroyed + :rtype: (bool) + """ + + if self.TKrootDestroyed or self.TKroot is None: + return True + + # if performing a quick check only, then skip calling tkinter for performance reasons + if quick_check is True: + return False + + # see if can do an update... if not, then it's been destroyed + try: + rc = self.TKroot.update() + except: + return True + return False + + def _auto_save_location(self): + """ + Internal function to save the location of the window in the settings file + :return: + """ + if self.auto_save_location: + user_settings_set_entry('-LAST WINDOW LOCATION-'+self.Title, self._last_location) + + + + # IT FINALLY WORKED! 29-Oct-2018 was the first time this damned thing got called + def _OnClosingCallback(self): + """ + Internally used method ONLY. Not sure callable. tkinter calls this when the window is closed by clicking X + """ + # global _my_windows + # print('Got closing callback', self.DisableClose) + if self.DisableClose: + return + self._auto_save_location() + if self.CurrentlyRunningMainloop: # quit if this is the current mainloop, otherwise don't quit! + _exit_mainloop(self) + if self.close_destroys_window: + self.TKroot.destroy() # destroy this window + self.TKrootDestroyed = True + self.XFound = True + else: + self.LastButtonClicked = WINDOW_CLOSE_ATTEMPTED_EVENT + elif Window._root_running_mainloop == Window.hidden_master_root: + _exit_mainloop(self) + else: + if self.close_destroys_window: + self.TKroot.destroy() # destroy this window + self.XFound = True + else: + self.LastButtonClicked = WINDOW_CLOSE_ATTEMPTED_EVENT + if self.close_destroys_window: + self.RootNeedsDestroying = True + self._restore_stdout() + self._restore_stderr() + + def disable(self): + """ + Disables window from taking any input from the user + """ + if not self._is_window_created('tried Window.disable'): + return + self.TKroot.attributes('-disabled', 1) + # self.TKroot.grab_set_global() + + def enable(self): + """ + Re-enables window to take user input after having it be Disabled previously + """ + if not self._is_window_created('tried Window.enable'): + return + self.TKroot.attributes('-disabled', 0) + # self.TKroot.grab_release() + + def hide(self): + """ + Hides the window from the screen and the task bar + """ + if not self._is_window_created('tried Window.hide'): + return + self._Hidden = True + self.TKroot.withdraw() + + def un_hide(self): + """ + Used to bring back a window that was previously hidden using the Hide method + """ + if not self._is_window_created('tried Window.un_hide'): + return + if self._Hidden: + self.TKroot.deiconify() + self._Hidden = False + + def is_hidden(self): + """ + Returns True if the window is currently hidden + :return: Returns True if the window is currently hidden + :rtype: bool + """ + return self._Hidden + + def disappear(self): + """ + Causes a window to "disappear" from the screen, but remain on the taskbar. It does this by turning the alpha + channel to 0. NOTE that on some platforms alpha is not supported. The window will remain showing on these + platforms. The Raspberry Pi for example does not have an alpha setting + """ + if not self._is_window_created('tried Window.disappear'): + return + self.TKroot.attributes('-alpha', 0) + + def reappear(self): + """ + Causes a window previously made to "Disappear" (using that method). Does this by restoring the alpha channel + """ + if not self._is_window_created('tried Window.reappear'): + return + self.TKroot.attributes('-alpha', 255) + + def set_alpha(self, alpha): + """ + Sets the Alpha Channel for a window. Values are between 0 and 1 where 0 is completely transparent + + :param alpha: 0 to 1. 0 is completely transparent. 1 is completely visible and solid (can't see through) + :type alpha: (float) + """ + if not self._is_window_created('tried Window.set_alpha'): + return + self._AlphaChannel = alpha + self.TKroot.attributes('-alpha', alpha) + + @property + def alpha_channel(self): + """ + A property that changes the current alpha channel value (internal value) + :return: the current alpha channel setting according to self, not read directly from tkinter + :rtype: (float) + """ + return self._AlphaChannel + + @alpha_channel.setter + def alpha_channel(self, alpha): + """ + The setter method for this "property". + Planning on depricating so that a Set call is always used by users. This is more in line with the SDK + :param alpha: 0 to 1. 0 is completely transparent. 1 is completely visible and solid (can't see through) + :type alpha: (float) + """ + if not self._is_window_created('tried Window.alpha_channel'): + return + self._AlphaChannel = alpha + self.TKroot.attributes('-alpha', alpha) + + def bring_to_front(self): + """ + Brings this window to the top of all other windows (perhaps may not be brought before a window made to "stay + on top") + """ + if not self._is_window_created('tried Window.bring_to_front'): + return + if running_windows(): + try: + self.TKroot.wm_attributes("-topmost", 0) + self.TKroot.wm_attributes("-topmost", 1) + if not self.KeepOnTop: + self.TKroot.wm_attributes("-topmost", 0) + except Exception as e: + warnings.warn('Problem in Window.bring_to_front' + str(e), UserWarning) + else: + try: + self.TKroot.lift() + except: + pass + + def send_to_back(self): + """ + Pushes this window to the bottom of the stack of windows. It is the opposite of BringToFront + """ + if not self._is_window_created('tried Window.send_to_back'): + return + try: + self.TKroot.lower() + except: + pass + + def keep_on_top_set(self): + """ + Sets keep_on_top after a window has been created. Effect is the same + as if the window was created with this set. The Window is also brought + to the front + """ + if not self._is_window_created('tried Window.keep_on_top_set'): + return + self.KeepOnTop = True + self.bring_to_front() + try: + self.TKroot.wm_attributes("-topmost", 1) + except Exception as e: + warnings.warn('Problem in Window.keep_on_top_set trying to set wm_attributes topmost' + str(e), UserWarning) + + def keep_on_top_clear(self): + """ + Clears keep_on_top after a window has been created. Effect is the same + as if the window was created with this set. + """ + if not self._is_window_created('tried Window.keep_on_top_clear'): + return + self.KeepOnTop = False + try: + self.TKroot.wm_attributes("-topmost", 0) + except Exception as e: + warnings.warn('Problem in Window.keep_on_top_clear trying to clear wm_attributes topmost' + str(e), UserWarning) + + def current_location(self, more_accurate=False, without_titlebar=False): + """ + Get the current location of the window's top left corner. + Sometimes, depending on the environment, the value returned does not include the titlebar,etc + A new option, more_accurate, can be used to get the theoretical upper leftmost corner of the window. + The titlebar and menubar are crated by the OS. It gets really confusing when running in a webpage (repl, trinket) + Thus, the values can appear top be "off" due to the sometimes unpredictable way the location is calculated. + If without_titlebar is set then the location of the root x,y is used which should not include the titlebar but + may be OS dependent. + + :param more_accurate: If True, will use the window's geometry to get the topmost location with titlebar, menubar taken into account + :type more_accurate: (bool) + :param without_titlebar: If True, return location of top left of main window area without the titlebar (may be OS dependent?) + :type without_titlebar: (bool) + :return: The x and y location in tuple form (x,y) + :rtype: Tuple[(int | None), (int | None)] + """ + + if not self._is_window_created('tried Window.current_location'): + return (None, None) + try: + if without_titlebar is True: + x, y = self.TKroot.winfo_rootx(), self.TKroot.winfo_rooty() + elif more_accurate: + geometry = self.TKroot.geometry() + location = geometry[geometry.find('+') + 1:].split('+') + x, y = int(location[0]), int(location[1]) + else: + x, y = int(self.TKroot.winfo_x()), int(self.TKroot.winfo_y()) + except Exception as e: + warnings.warn('Error in Window.current_location. Trouble getting x,y location\n' + str(e), UserWarning) + x, y = (None, None) + return (x,y) + + def current_size_accurate(self): + """ + Get the current location of the window based on tkinter's geometry setting + + :return: The x and y size in tuple form (x,y) + :rtype: Tuple[(int | None), (int | None)] + """ + + if not self._is_window_created('tried Window.current_location'): + return (None, None) + try: + geometry = self.TKroot.geometry() + geometry_tuple = geometry.split('+') + window_size = geometry_tuple[0].split('x') + x, y = int(window_size[0]), int(window_size[1]) + except Exception as e: + warnings.warn('Error in Window.current_size_accurate. Trouble getting x,y size\n{} {}'.format(geometry, geometry_tuple) + str(e), UserWarning) + x, y = (None, None) + return (x,y) + + @property + def size(self): + """ + Return the current size of the window in pixels + + :return: (width, height) of the window + :rtype: Tuple[(int), (int)] or Tuple[None, None] + """ + if not self._is_window_created('Tried to use Window.size property'): + return (None, None) + win_width = self.TKroot.winfo_width() + win_height = self.TKroot.winfo_height() + return win_width, win_height + + @size.setter + def size(self, size): + """ + Changes the size of the window, if possible + + :param size: (width, height) of the desired window size + :type size: (int, int) + """ + try: + self.TKroot.geometry("%sx%s" % (size[0], size[1])) + self.TKroot.update_idletasks() + except: + pass + + def set_size(self, size): + """ + Changes the size of the window, if possible. You can also use the Window.size prooerty + to set/get the size. + + :param size: (width, height) of the desired window size + :type size: (int, int) + """ + if not self._is_window_created('Tried to change the size of the window prior to creation.'): + return + try: + self.TKroot.geometry("%sx%s" % (size[0], size[1])) + self.TKroot.update_idletasks() + except: + pass + + def set_min_size(self, size): + """ + Changes the minimum size of the window. Note Window must be read or finalized first. + + :param size: (width, height) tuple (int, int) of the desired window size in pixels + :type size: (int, int) + """ + if not self._is_window_created('tried Window.set_min_size'): + return + self.TKroot.minsize(size[0], size[1]) + self.TKroot.update_idletasks() + + def set_resizable(self, x_axis_enable, y_axis_enable): + """ + Changes if a window can be resized in either the X or the Y direction. + Note Window must be read or finalized first. + + :param x_axis_enable: If True, the window can be changed in the X-axis direction. If False, it cannot + :type x_axis_enable: (bool) + :param y_axis_enable: If True, the window can be changed in the Y-axis direction. If False, it cannot + :type y_axis_enable: (bool) + """ + + if not self._is_window_created('tried Window.set_resixable'): + return + try: + self.TKroot.resizable(x_axis_enable, y_axis_enable) + except Exception as e: + _error_popup_with_traceback('Window.set_resizable - tkinter reported error', e) + + def visibility_changed(self): + """ + When making an element in a column or someplace that has a scrollbar, then you'll want to call this function + prior to the column's contents_changed() method. + """ + self.refresh() + + def set_transparent_color(self, color): + """ + Set the color that will be transparent in your window. Areas with this color will be SEE THROUGH. + + :param color: Color string that defines the transparent color + :type color: (str) + """ + if not self._is_window_created('tried Window.set_transparent_color'): + return + try: + self.TKroot.attributes('-transparentcolor', color) + self.TransparentColor = color + except: + print('Transparent color not supported on this platform (windows only)') + + def mouse_location(self): + """ + Return the (x,y) location of the mouse relative to the entire screen. It's the same location that + you would use to create a window, popup, etc. + + :return: The location of the mouse pointer + :rtype: (int, int) + """ + if not self._is_window_created('tried Window.mouse_location'): + return (0, 0) + + return (self.TKroot.winfo_pointerx(), self.TKroot.winfo_pointery()) + + def grab_any_where_on(self): + """ + Turns on Grab Anywhere functionality AFTER a window has been created. Don't try on a window that's not yet + been Finalized or Read. + """ + if not self._is_window_created('tried Window.grab_any_where_on'): + return + self.TKroot.bind("", self._StartMoveGrabAnywhere) + self.TKroot.bind("", self._StopMove) + self.TKroot.bind("", self._OnMotionGrabAnywhere) + + def grab_any_where_off(self): + """ + Turns off Grab Anywhere functionality AFTER a window has been created. Don't try on a window that's not yet + been Finalized or Read. + """ + if not self._is_window_created('tried Window.grab_any_where_off'): + return + self.TKroot.unbind("") + self.TKroot.unbind("") + self.TKroot.unbind("") + + def _user_bind_callback(self, bind_string, event, propagate=True): + """ + Used when user binds a tkinter event directly to an element + + :param bind_string: The event that was bound so can lookup the key modifier + :type bind_string: (str) + :param event: Event data passed in by tkinter (not used) + :type event: + :param propagate: If True then tkinter will be told to propagate the event + :type propagate: (bool) + """ + # print('bind callback', bind_string, event) + key = self.user_bind_dict.get(bind_string, '') + self.user_bind_event = event + if key is not None: + self.LastButtonClicked = key + else: + self.LastButtonClicked = bind_string + self.FormRemainedOpen = True + # if self.CurrentlyRunningMainloop: + # self.TKroot.quit() + _exit_mainloop(self) + return 'break' if propagate is not True else None + + def bind(self, bind_string, key, propagate=True): + """ + Used to add tkinter events to a Window. + The tkinter specific data is in the Window's member variable user_bind_event + :param bind_string: The string tkinter expected in its bind function + :type bind_string: (str) + :param key: The event that will be generated when the tkinter event occurs + :type key: str | int | tuple | object + :param propagate: If True then tkinter will be told to propagate the event + :type propagate: (bool) + """ + if not self._is_window_created('tried Window.bind'): + return + try: + self.TKroot.bind(bind_string, lambda evt: self._user_bind_callback(bind_string, evt, propagate)) + except Exception as e: + self.TKroot.unbind_all(bind_string) + return + # _error_popup_with_traceback('Window.bind error', e) + self.user_bind_dict[bind_string] = key + + def unbind(self, bind_string): + """ + Used to remove tkinter events to a Window. + This implementation removes ALL of the binds of the bind_string from the Window. If there + are multiple binds for the Window itself, they will all be removed. This can be extended later if there + is a need. + :param bind_string: The string tkinter expected in its bind function + :type bind_string: (str) + """ + if not self._is_window_created('tried Window.unbind'): + return + self.TKroot.unbind(bind_string) + + def _callback_main_debugger_window_create_keystroke(self, event): + """ + Called when user presses the key that creates the main debugger window + March 2022 - now causes the user reads to return timeout events automatically + :param event: (event) not used. Passed in event info + :type event: + """ + Window._main_debug_window_build_needed = True + # exit the event loop in a way that resembles a timeout occurring + self.LastButtonClicked = self.TimeoutKey + self.FormRemainedOpen = True + self.TKroot.quit() # kick the users out of the mainloop + + def _callback_popout_window_create_keystroke(self, event): + """ + Called when user presses the key that creates the floating debugger window + March 2022 - now causes the user reads to return timeout events automatically + :param event: (event) not used. Passed in event info + :type event: + """ + Window._floating_debug_window_build_needed = True + # exit the event loop in a way that resembles a timeout occurring + self.LastButtonClicked = self.TimeoutKey + self.FormRemainedOpen = True + self.TKroot.quit() # kick the users out of the mainloop + + def enable_debugger(self): + """ + Enables the internal debugger. By default, the debugger IS enabled + """ + if not self._is_window_created('tried Window.enable_debugger'): + return + self.TKroot.bind('', self._callback_main_debugger_window_create_keystroke) + self.TKroot.bind('', self._callback_popout_window_create_keystroke) + self.DebuggerEnabled = True + + def disable_debugger(self): + """ + Disable the internal debugger. By default the debugger is ENABLED + """ + if not self._is_window_created('tried Window.disable_debugger'): + return + self.TKroot.unbind("") + self.TKroot.unbind("") + self.DebuggerEnabled = False + + def set_title(self, title): + """ + Change the title of the window + + :param title: The string to set the title to + :type title: (str) + """ + if not self._is_window_created('tried Window.set_title'): + return + if self._has_custom_titlebar: + try: # just in case something goes badly, don't crash + self.find_element(TITLEBAR_TEXT_KEY).update(title) + except: + pass + # even with custom titlebar, set the main window's title too so it'll match when minimized + self.TKroot.wm_title(str(title)) + + def make_modal(self): + """ + Makes a window into a "Modal Window" + This means user will not be able to interact with other windows until this one is closed + + NOTE - Sorry Mac users - you can't have modal windows.... lobby your tkinter Mac devs + """ + if not self._is_window_created('tried Window.make_modal'): + return + + if running_mac() and ENABLE_MAC_MODAL_DISABLE_PATCH: + return + + # if modal windows have been disabled globally + if not DEFAULT_MODAL_WINDOWS_ENABLED and not DEFAULT_MODAL_WINDOWS_FORCED: + # if not DEFAULT_MODAL_WINDOWS_ENABLED: + return + + try: + self.TKroot.transient() + self.TKroot.grab_set() + self.TKroot.focus_force() + except Exception as e: + print('Exception trying to make modal', e) + + def force_focus(self): + """ + Forces this window to take focus + """ + if not self._is_window_created('tried Window.force_focus'): + return + self.TKroot.focus_force() + + def was_closed(self): + """ + Returns True if the window was closed + + :return: True if the window is closed + :rtype: bool + """ + return self.TKrootDestroyed + + def set_cursor(self, cursor): + """ + Sets the cursor for the window. + If you do not want any mouse pointer, then use the string "none" + + :param cursor: The tkinter cursor name + :type cursor: (str) + """ + + if not self._is_window_created('tried Window.set_cursor'): + return + try: + self.TKroot.config(cursor=cursor) + except Exception as e: + print('Warning bad cursor specified ', cursor) + print(e) + + def ding(self, display_number=0): + """ + Make a "bell" sound. A capability provided by tkinter. Your window needs to be finalized prior to calling. + Ring a display's bell is the tkinter description of the call. + :param display_number: Passed to tkinter's bell method as parameter "displayof". + :type display_number: int + """ + if not self._is_window_created('tried Window.ding'): + return + try: + self.TKroot.bell(display_number) + except Exception as e: + if not SUPPRESS_ERROR_POPUPS: + _error_popup_with_traceback('Window.ding() - tkinter reported error from bell() call', e) + + def _window_tkvar_changed_callback(self, *args): + """ + Internal callback function for when the thread + + :param event: Information from tkinter about the callback + :type event: + + """ + # print('Thread callback info', threading.current_thread()) + # print(event) + # trace_details = traceback.format_stack() + # print(''.join(trace_details)) + # self.thread_lock.acquire() + # if self.thread_timer: + # self.TKroot.after_cancel(id=self.thread_timer) + # self.thread_timer = None + # self.thread_lock.release() + + if self._queued_thread_event_available(): + self.FormRemainedOpen = True + _exit_mainloop(self) + + def _create_thread_queue(self): + """ + Creates the queue used by threads to communicate with this window + """ + + if self.thread_queue is None: + self.thread_queue = queue.Queue() + + if self.thread_lock is None: + self.thread_lock = threading.Lock() + + if self.thread_strvar is None: + self.thread_strvar = tk.StringVar() + self.thread_strvar.trace('w', self._window_tkvar_changed_callback) + + def write_event_value(self, key, value): + """ + Adds a key & value tuple to the queue that is used by threads to communicate with the window + + :param key: The key that will be returned as the event when reading the window + :type key: Any + :param value: The value that will be in the values dictionary + :type value: Any + """ + + if self.thread_queue is None: + print('*** Warning Window.write_event_value - no thread queue found ***') + return + # self.thread_lock.acquire() # first lock the critical section + self.thread_queue.put(item=(key, value)) + self.TKroot.tk.willdispatch() # brilliant bit of code provided by Giuliano who I owe a million thank yous! + self.thread_strvar.set('new item') + + # self.thread_queue.put(item=(key, value)) + # self.thread_strvar.set('new item') + # March 28 2021 - finally found a solution! It needs a little more work and a lock + # if no timer is running, then one should be started + # if self.thread_timer is None: + # print('Starting a timer') + # self.thread_timer = self.TKroot.after(1, self._window_tkvar_changed_callback) + # self.thread_lock.release() + + def _queued_thread_event_read(self): + if self.thread_queue is None: + return None + + try: # see if something has been posted to Queue + message = self.thread_queue.get_nowait() + except queue.Empty: # get_nowait() will get exception when Queue is empty + return None + + return message + + def _queued_thread_event_available(self): + + if self.thread_queue is None: + return False + # self.thread_lock.acquire() + qsize = self.thread_queue.qsize() + if qsize == 0: + self.thread_timer = None + # self.thread_lock.release() + return qsize != 0 + + def _RightClickMenuCallback(self, event): + """ + When a right click menu is specified for an entire window, then this callback catches right clicks + that happen to the window itself, when there are no elements that are in that area. + + The only portion that is not currently covered correctly is the row frame itself. There will still + be parts of the window, at the moment, that don't respond to a right click. It's getting there, bit + by bit. + + Callback function that's called when a right click happens. Shows right click menu as result. + + :param event: information provided by tkinter about the event including x,y location of click + :type event: + """ + # if there are widgets under the mouse, then see if it's the root only. If not, then let the widget (element) show their menu instead + x, y = self.TKroot.winfo_pointerxy() + widget = self.TKroot.winfo_containing(x, y) + if widget != self.TKroot: + return + self.TKRightClickMenu.tk_popup(event.x_root, event.y_root, 0) + self.TKRightClickMenu.grab_release() + + def save_window_screenshot_to_disk(self, filename=None): + """ + Saves an image of the PySimpleGUI window provided into the filename provided + + :param filename: Optional filename to save screenshot to. If not included, the User Settinds are used to get the filename + :return: A PIL ImageGrab object that can be saved or manipulated + :rtype: (PIL.ImageGrab | None) + """ + global pil_import_attempted, pil_imported, PIL, ImageGrab, Image + + if not pil_import_attempted: + try: + import PIL as PIL + from PIL import ImageGrab + from PIL import Image + pil_imported = True + pil_import_attempted = True + except: + pil_imported = False + pil_import_attempted = True + print('FAILED TO IMPORT PIL!') + return None + try: + # Get location of window to save + pos = self.current_location() + # Add a little to the X direction if window has a titlebar + if not self.NoTitleBar: + pos = (pos[0] + 7, pos[1]) + # Get size of wiondow + size = self.current_size_accurate() + # Get size of the titlebar + titlebar_height = self.TKroot.winfo_rooty() - self.TKroot.winfo_y() + # Add titlebar to size of window so that titlebar and window will be saved + size = (size[0], size[1] + titlebar_height) + if not self.NoTitleBar: + size_adjustment = (2, 1) + else: + size_adjustment = (0, 0) + # Make the "Bounding rectangle" used by PLK to do the screen grap "operation + rect = (pos[0], pos[1], pos[0] + size[0] + size_adjustment[0], pos[1] + size[1] + size_adjustment[1]) + # Grab the image + grab = ImageGrab.grab(bbox=rect) + # Save the grabbed image to disk + except Exception as e: + # print(e) + popup_error_with_traceback('Screen capture failure', 'Error happened while trying to save screencapture', e) + + return None + # return grab + if filename is None: + folder = pysimplegui_user_settings.get('-screenshots folder-', '') + filename = pysimplegui_user_settings.get('-screenshots filename-', '') + full_filename = os.path.join(folder, filename) + else: + full_filename = filename + if full_filename: + try: + grab.save(full_filename) + except Exception as e: + popup_error_with_traceback('Screen capture failure', 'Error happened while trying to save screencapture', e) + else: + popup_error_with_traceback('Screen capture failure', 'You have attempted a screen capture but have not set up a good filename to save to') + return grab + + def perform_long_operation(self, func, end_key=None): + """ + Call your function that will take a long time to execute. When it's complete, send an event + specified by the end_key. + + Starts a thread on your behalf. + + This is a way for you to "ease into" threading without learning the details of threading. + Your function will run, and when it returns 2 things will happen: + 1. The value you provide for end_key will be returned to you when you call window.read() + 2. If your function returns a value, then the value returned will also be included in your windows.read call in the values dictionary + + IMPORTANT - This method uses THREADS... this means you CANNOT make any PySimpleGUI calls from + the function you provide with the exception of one function, Window.write_event_value. + + :param func: A lambda or a function name with no parms + :type func: Any + :param end_key: Optional key that will be generated when the function returns + :type end_key: (Any | None) + :return: The id of the thread + :rtype: threading.Thread + """ + + thread = threading.Thread(target=_long_func_thread, args=(self, end_key, func), daemon=True) + thread.start() + return thread + + @property + def key_dict(self): + """ + Returns a dictionary with all keys and their corresponding elements + { key : Element } + :return: Dictionary of keys and elements + :rtype: Dict[Any, Element] + """ + return self.AllKeysDict + + def key_is_good(self, key): + """ + Checks to see if this is a good key for this window + If there's an element with the key provided, then True is returned + :param key: The key to check + :type key: str | int | tuple | object + :return: True if key is an element in this window + :rtype: bool + """ + if key in self.key_dict: + return True + return False + + def get_scaling(self): + """ + Returns the current scaling value set for this window + + :return: Scaling according to tkinter. Returns DEFAULT_SCALING if error + :rtype: float + """ + + if not self._is_window_created('Tried Window.set_scaling'): + return DEFAULT_SCALING + try: + scaling = self.TKroot.tk.call('tk', 'scaling') + except Exception as e: + if not SUPPRESS_ERROR_POPUPS: + _error_popup_with_traceback('Window.get_scaling() - tkinter reported error', e) + scaling = DEFAULT_SCALING + + return scaling + + def _custom_titlebar_restore_callback(self, event): + self._custom_titlebar_restore() + + def _custom_titlebar_restore(self): + if running_linux(): + # if self._skip_first_restore_callback: + # self._skip_first_restore_callback = False + # return + self.TKroot.unbind('') + self.TKroot.deiconify() + + # self.ParentForm.TKroot.wm_overrideredirect(True) + self.TKroot.wm_attributes("-type", 'dock') + + else: + self.TKroot.unbind('') + self.TKroot.wm_overrideredirect(True) + if self.TKroot.state() == 'iconic': + self.TKroot.deiconify() + else: + if not running_linux(): + self.TKroot.state('normal') + else: + self.TKroot.attributes('-fullscreen', False) + self.maximized = False + + def _custom_titlebar_minimize(self): + if running_linux(): + self.TKroot.wm_attributes("-type", "normal") + # self.ParentForm.TKroot.state('icon') + # return + # self.ParentForm.maximize() + self.TKroot.wm_overrideredirect(False) + # self.ParentForm.minimize() + # self.ParentForm.TKroot.wm_overrideredirect(False) + self.TKroot.iconify() + # self._skip_first_restore_callback = True + self.TKroot.bind('', self._custom_titlebar_restore_callback) + else: + self.TKroot.wm_overrideredirect(False) + self.TKroot.iconify() + self.TKroot.bind('', self._custom_titlebar_restore_callback) + + def _custom_titlebar_callback(self, key): + """ + One of the Custom Titlbar buttons was clicked + :param key: + :return: + """ + if key == TITLEBAR_MINIMIZE_KEY: + if not self.DisableMinimize: + self._custom_titlebar_minimize() + elif key == TITLEBAR_MAXIMIZE_KEY: + if self.Resizable: + if self.maximized: + self.normal() + else: + self.maximize() + elif key == TITLEBAR_CLOSE_KEY: + if not self.DisableClose: + self._OnClosingCallback() + + def timer_start(self, frequency_ms, key=EVENT_TIMER, repeating=True): + """ + Starts a timer that gnerates Timer Events. The default is to repeat the timer events until timer is stopped. + You can provide your own key or a default key will be used. The default key is defined + with the constants EVENT_TIMER or TIMER_KEY. They both equal the same value. + The values dictionary will contain the timer ID that is returned from this function. + + :param frequency_ms: How often to generate timer events in milliseconds + :type frequency_ms: int + :param key: Key to be returned as the timer event + :type key: str | int | tuple | object + :param repeating: If True then repeat timer events until timer is explicitly stopped + :type repeating: bool + :return: Timer ID for the timer + :rtype: int + """ + timer = _TimerPeriodic(self, frequency_ms=frequency_ms, key=key, repeating=repeating) + return timer.id + + def timer_stop(self, timer_id): + """ + Stops a timer with a given ID + + :param timer_id: Timer ID of timer to stop + :type timer_id: int + :return: + """ + _TimerPeriodic.stop_timer_with_id(timer_id) + + def timer_stop_all(self): + """ + Stops all timers for THIS window + """ + _TimerPeriodic.stop_all_timers_for_window(self) + + def timer_get_active_timers(self): + """ + Returns a list of currently active timers for a window + :return: List of timers for the window + :rtype: List[int] + """ + return _TimerPeriodic.get_all_timers_for_window(self) + + @classmethod + def _restore_stdout(cls): + for item in cls._rerouted_stdout_stack: + (window, element) = item # type: (Window, Element) + if not window.is_closed(): + sys.stdout = element + break + cls._rerouted_stdout_stack = [item for item in cls._rerouted_stdout_stack if not item[0].is_closed()] + if len(cls._rerouted_stdout_stack) == 0 and cls._original_stdout is not None: + sys.stdout = cls._original_stdout + # print('Restored stdout... new stack:', [item[0].Title for item in cls._rerouted_stdout_stack ]) + + @classmethod + def _restore_stderr(cls): + for item in cls._rerouted_stderr_stack: + (window, element) = item # type: (Window, Element) + if not window.is_closed(): + sys.stderr = element + break + cls._rerouted_stderr_stack = [item for item in cls._rerouted_stderr_stack if not item[0].is_closed()] + if len(cls._rerouted_stderr_stack) == 0 and cls._original_stderr is not None: + sys.stderr = cls._original_stderr + # print('Restored stderr... new stack:', [item[0].Title for item in cls._rerouted_stderr_stack ]) + + + def __getitem__(self, key): + """ + Returns Element that matches the passed in key. + This is "called" by writing code as thus: + window['element key'].update + + :param key: The key to find + :type key: str | int | tuple | object + :return: The element found + :rtype: Element | Input | Combo | OptionMenu | Listbox | Radio | Checkbox | Spin | Multiline | Text | StatusBar | Output | Button | ButtonMenu | ProgressBar | Image | Canvas | Graph | Frame | VerticalSeparator | HorizontalSeparator | Tab | TabGroup | Slider | Column | Pane | Menu | Table | Tree | ErrorElement | None + """ + + return self.find_element(key) + + def __call__(self, *args, **kwargs): + """ + Call window.read but without having to type it out. + window() == window.read() + window(timeout=50) == window.read(timeout=50) + + :return: The famous event, values that read returns. + :rtype: Tuple[Any, Dict[Any, Any]] + """ + return self.read(*args, **kwargs) + + def _is_window_created(self, additional_message=''): + msg = str(additional_message) + if self.TKroot is None: + warnings.warn( + 'You cannot perform operations on a Window until it is read or finalized. Adding a "finalize=True" parameter to your Window creation will fix this. ' + msg, + UserWarning) + if not SUPPRESS_ERROR_POPUPS: + _error_popup_with_traceback('You cannot perform operations on a Window until it is read or finalized.', + 'Adding a "finalize=True" parameter to your Window creation will likely fix this', msg) + return False + return True + + def _has_custom_titlebar_element(self): + for elem in self.AllKeysDict.values(): + if elem.Key in (TITLEBAR_MAXIMIZE_KEY, TITLEBAR_CLOSE_KEY, TITLEBAR_IMAGE_KEY): + return True + if elem.metadata == TITLEBAR_METADATA_MARKER: + return True + return False + + AddRow = add_row + AddRows = add_rows + AlphaChannel = alpha_channel + BringToFront = bring_to_front + Close = close + CurrentLocation = current_location + Disable = disable + DisableDebugger = disable_debugger + Disappear = disappear + Enable = enable + EnableDebugger = enable_debugger + Fill = fill + Finalize = finalize + # FindElement = find_element + FindElementWithFocus = find_element_with_focus + GetScreenDimensions = get_screen_dimensions + GrabAnyWhereOff = grab_any_where_off + GrabAnyWhereOn = grab_any_where_on + Hide = hide + Layout = layout + LoadFromDisk = load_from_disk + Maximize = maximize + Minimize = minimize + Move = move + Normal = normal + Read = read + Reappear = reappear + Refresh = refresh + SaveToDisk = save_to_disk + SendToBack = send_to_back + SetAlpha = set_alpha + SetIcon = set_icon + SetTransparentColor = set_transparent_color + Size = size + UnHide = un_hide + VisibilityChanged = visibility_changed + CloseNonBlocking = close + CloseNonBlockingForm = close + start_thread = perform_long_operation + + +# -------------------------------- PEP8-ify the Window Class USER Interfaces -------------------------------- # + + +FlexForm = Window + + +def _long_func_thread(window, end_key, original_func): + """ + Used to run long operations on the user's behalf. Called by the window object + + :param window: The window that will get the event + :type window: (Window) + :param end_key: The event that will be sent when function returns. If None then no event will be sent when exiting thread + :type end_key: (Any|None) + :param original_func: The user's function that is called. Can be a function with no arguments or a lambda experession + :type original_func: (Any) + """ + + return_value = original_func() + if end_key is not None: + window.write_event_value(end_key, return_value) + + +def _exit_mainloop(exiting_window): + if exiting_window == Window._window_running_mainloop or Window._root_running_mainloop == Window.hidden_master_root: + Window._window_that_exited = exiting_window + if Window._root_running_mainloop is not None: + Window._root_running_mainloop.quit() + # print('** Exited window mainloop **') + + +def _timeout_alarm_callback_hidden(): + """ + Read Timeout Alarm callback. Will kick a mainloop call out of the tkinter event loop and cause it to return + """ + + del Window._TKAfterID + + # first, get the results table built + # modify the Results table in the parent FlexForm object + # print('TIMEOUT CALLBACK') + Window._root_running_mainloop.quit() # kick the users out of the mainloop + + # Get window that caused return + Window._window_that_exited = None + + +def read_all_windows(timeout=None, timeout_key=TIMEOUT_KEY): + """ + Reads all windows that are "active" when the call is made. "Active" means that it's been finalized or read. + If a window has not been finalized then it will not be considered an "active window" + + If any of the active windows returns a value then the window and its event and values + are returned. + + If no windows are open, then the value (None, WIN_CLOSED, None) will be returned + Since WIN_CLOSED is None, it means (None, None, None) is what's returned when no windows remain opened + + :param timeout: Time in milliseconds to delay before a returning a timeout event + :type timeout: (int) + :param timeout_key: Key to return when a timeout happens. Defaults to the standard TIMEOUT_KEY + :type timeout_key: (Any) + :return: A tuple with the (Window, event, values dictionary/list) + :rtype: (Window, Any, Dict | List) + """ + + if len(Window._active_windows) == 0: + return None, WIN_CLOSED, None + + # first see if any queued events are waiting for any of the windows + for window in Window._active_windows.keys(): + if window._queued_thread_event_available(): + _BuildResults(window, False, window) + event, values = window.ReturnValues + return window, event, values + + Window._root_running_mainloop = Window.hidden_master_root + Window._timeout_key = timeout_key + + if timeout == 0: + window = list(Window._active_windows.keys())[Window._timeout_0_counter] + event, values = window._ReadNonBlocking() + if event is None: + event = timeout_key + if values is None: + event = None + Window._timeout_0_counter = (Window._timeout_0_counter + 1) % len(Window._active_windows) + return window, event, values + + Window._timeout_0_counter = 0 # reset value if not reading with timeout 0 so ready next time needed + + # setup timeout timer + if timeout != None: + try: + Window.hidden_master_root.after_cancel(Window._TKAfterID) + del Window._TKAfterID + except: + pass + + Window._TKAfterID = Window.hidden_master_root.after(timeout, _timeout_alarm_callback_hidden) + + # ------------ Call Mainloop ------------ + Window._root_running_mainloop.mainloop() + + try: + Window.hidden_master_root.after_cancel(Window._TKAfterID) + del Window._TKAfterID + except: + pass + # print('** tkafter cancel failed **') + + # Get window that caused return + + window = Window._window_that_exited + + if window is None: + return None, timeout_key, None + + if window.XFound: + event, values = None, None + window.close() + try: + del Window._active_windows[window] + except: + pass + # print('Error deleting window, but OK') + else: + _BuildResults(window, False, window) + event, values = window.ReturnValues + + return window, event, values + + +# MP""""""`MM dP +# M mmmmm..M 88 +# M. `YM dP dP .d8888b. d8888P .d8888b. 88d8b.d8b. +# MMMMMMM. M 88 88 Y8ooooo. 88 88ooood8 88'`88'`88 +# M. .MMM' M 88. .88 88 88 88. ... 88 88 88 +# Mb. .dM `8888P88 `88888P' dP `88888P' dP dP dP +# MMMMMMMMMMM .88 +# d8888P +# M""""""""M +# Mmmm mmmM +# MMMM MMMM 88d888b. .d8888b. dP dP +# MMMM MMMM 88' `88 88' `88 88 88 +# MMMM MMMM 88 88. .88 88. .88 +# MMMM MMMM dP `88888P8 `8888P88 +# MMMMMMMMMM .88 +# d8888P + +# ------------------------------------------------------------------------- # +# SystemTray - class for implementing a psyeudo tray # +# ------------------------------------------------------------------------- # + +# -------------------------------- System Tray Begins Here -------------------------------- # +# Feb 2020 - Just starting on this so code commented out for now. Basing on PySimpleGUIQt's implementation / call format + + +# ------------------------------------------------------------------- +# fade in/out info and default window alpha +SYSTEM_TRAY_WIN_MARGINS = 160, 60 # from right edge of screen, from bottom of screen +SYSTEM_TRAY_MESSAGE_MAX_LINE_LENGTH = 50 +# colors +SYSTEM_TRAY_MESSAGE_WIN_COLOR = "#282828" +SYSTEM_TRAY_MESSAGE_TEXT_COLOR = "#ffffff" + +SYSTEM_TRAY_MESSAGE_DISPLAY_DURATION_IN_MILLISECONDS = 3000 # how long to display the window +SYSTEM_TRAY_MESSAGE_FADE_IN_DURATION = 1000 # how long to fade in / fade out the window + +EVENT_SYSTEM_TRAY_ICON_DOUBLE_CLICKED = '__DOUBLE_CLICKED__' +EVENT_SYSTEM_TRAY_ICON_ACTIVATED = '__ACTIVATED__' +EVENT_SYSTEM_TRAY_MESSAGE_CLICKED = '__MESSAGE_CLICKED__' + +# Base64 Images to use as icons in the window +_tray_icon_error = b'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAADlAAAA5QGP5Zs8AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAIpQTFRF////20lt30Bg30pg4FJc409g4FBe4E9f4U9f4U9g4U9f4E9g31Bf4E9f4E9f4E9f4E9f4E9f4FFh4Vdm4lhn42Bv5GNx5W575nJ/6HqH6HyI6YCM6YGM6YGN6oaR8Kev9MPI9cbM9snO9s3R+Nfb+dzg+d/i++vt/O7v/fb3/vj5//z8//7+////KofnuQAAABF0Uk5TAAcIGBktSYSXmMHI2uPy8/XVqDFbAAAA8UlEQVQ4y4VT15LCMBBTQkgPYem9d9D//x4P2I7vILN68kj2WtsAhyDO8rKuyzyLA3wjSnvi0Eujf3KY9OUP+kno651CvlB0Gr1byQ9UXff+py5SmRhhIS0oPj4SaUUCAJHxP9+tLb/ezU0uEYDUsCc+l5/T8smTIVMgsPXZkvepiMj0Tm5txQLENu7gSF7HIuMreRxYNkbmHI0u5Hk4PJOXkSMz5I3nyY08HMjbpOFylF5WswdJPmYeVaL28968yNfGZ2r9gvqFalJNUy2UWmq1Wa7di/3Kxl3tF1671YHRR04dWn3s9cXRV09f3vb1fwPD7z9j1WgeRgAAAABJRU5ErkJggg==' +_tray_icon_success = b'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAAEKAAABCgEWpLzLAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAHJQTFRF////ZsxmbbZJYL9gZrtVar9VZsJcbMRYaMZVasFYaL9XbMFbasRZaMFZacRXa8NYasFaasJaasFZasJaasNZasNYasJYasJZasJZasJZasJZasJZasJYasJZasJZasJZasJZasJaasJZasJZasJZasJZ2IAizQAAACV0Uk5TAAUHCA8YGRobHSwtPEJJUVtghJeYrbDByNjZ2tvj6vLz9fb3/CyrN0oAAADnSURBVDjLjZPbWoUgFIQnbNPBIgNKiwwo5v1fsQvMvUXI5oqPf4DFOgCrhLKjC8GNVgnsJY3nKm9kgTsduVHU3SU/TdxpOp15P7OiuV/PVzk5L3d0ExuachyaTWkAkLFtiBKAqZHPh/yuAYSv8R7XE0l6AVXnwBNJUsE2+GMOzWL8k3OEW7a/q5wOIS9e7t5qnGExvF5Bvlc4w/LEM4Abt+d0S5BpAHD7seMcf7+ZHfclp10TlYZc2y2nOqc6OwruxUWx0rDjNJtyp6HkUW4bJn0VWdf/a7nDpj1u++PBOR694+Ftj/8PKNdnDLn/V8YAAAAASUVORK5CYII=' +_tray_icon_halt = b'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQAAANswNuMPDO8HBO8FCe0HCu4IBu4IB+oLDeoLDu8JC+wKCu4JDO4LDOwKEe4OEO4OEeUQDewQDe0QDucVEuYcG+ccHOsQFuwWHe4fH/EGAvMEBfMFBvAHBPMGBfEGBvYCAfYDAvcDA/cDBPcDBfUDBvYEAPYEAfYEAvYEA/QGAPQGAfQGAvYEBPUEBvYFB/QGBPQGBfQHB/EFCvIHCPMHCfIHC/IFDfMHDPQGCPQGCfQGCvEIBPIIBfAIB/UIB/QICPYICfoBAPoBAfoBAvsBA/kCAPkCAfkCAvkCA/oBBPkCBPkCBfkCBvgCB/gEAPkEAfgEAvkEA/gGAfkGAvkEBPgEBfkEBv0AAP0AAfwAAvwAA/wCAPwCAfwCAvwCA/wABP0ABfwCBfwEAPwFA/ASD/ESFPAUEvAUE/EXFvAdH+kbIOobIeofIfEfIOcmKOohIukgJOggJesiKuwiKewoLe0tLO0oMOQ3OO43Oew4OfAhIPAhIfAiIPEiI+dDRe9ES+lQTOdSWupSUOhTUehSV+hUVu1QUO1RUe1SV+tTWe5SWOxXWOpYV+pZWelYXexaW+xaXO9aX+lZYeNhYOxjZ+lna+psbOttbehsbupscepucuxtcuxucep3fet7e+p/ffB6gOmKiu2Iie2Sk+2Qle2QluySlOyTleuYmvKFivCOjgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIxGNZsAAAEAdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT9wclAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACVElEQVQ4T22S93PTMBhADQdl791SSsuRARTKKHsn+STZBptAi6zIacous+w9yyxl7z1T1h8ptHLhrrzLD5+/987R2XZElZ/39tZsbGg42NdvF4pqcGMs4XEcozAB/oQeu6wGr5fkAZcKOUIIRgQXR723wgaXt/NSgcwlO1r3oARkATfhbmNMMCnlMZdz5J8RN9fVhglS5JA/pJUOJiYXoShCkz/flheDvpzlBCBmya5KcDG1sMSB+r/VQtG+YoFXlwN0Us4yeBXujPmWCOqNlVwX5zHntLH5iQ420YiqX9pqTZFSCrBGBc+InBUDAsbwLRlMC40fGJT8YLRwfnhY3v6/AUtDc9m5z0tRJBOAvHUaFchdY6+zDzEghHv1tUnrNCaIOw84Q2WQmkeO/Xopj1xFBREFr8ZZjuRhA++PEB+t05ggwBucpbH8i/n5C1ZU0EEEmRZnSMxoIYcarKigA0Cb1zpHAyZnGj21xqICAA9dcvo4UgEdZ41FBZSTzEOn30f6QeE3Vhl0gLN+2RGDzZPMHLHKoAO3MFy+ix4sDxFlvMXfrdNgFezy7qrXPaaJg0u27j5nneKrCjJ4pf4e3m4DVMcjNNNKxWnpo6jtnfnkunExB4GbuGKk5FNanpB1nJCjCsThJPAAJ8lVdSF5sSrklM2ZqmYdiC40G7Dfnhp57ZsQz6c3hylEO6ZoZQJxqiVgbhoQK3T6AIgU4rbjxthAPF6NAwAOAcS+ixlp/WBFJRDi0fj2RtcjWRwif8Qdu/w3EKLcu3/YslnrZzwo24UQQvwFCrp/iM1NnHwAAAAASUVORK5CYII=' +_tray_icon_notallowed = b'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQAAAPcICPcLC/cMDPcQEPcSEvcXF/cYGPcaGvcbG/ccHPgxMfgyMvg0NPg5Ofg6Ovg7O/hBQfhCQvlFRflGRvljY/pkZPplZfpnZ/p2dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgEwNYAAAEAdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT9wclAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABE0lEQVQ4T4WT65bDIAiExWbbtN0m3Uua+P4P6g4jGtN4NvNL4DuCCC5WWobe++uwmEmtwNxJUTebcwWCt5jJBwsYcKf3NE4hTOOJxj1FEnBTz4NH6qH2jUcCGr/QLLpkQgHe/6VWJXVqFgBB4yI/KVCkBCoFgPrPHw0CWbwCL8RibBFwzQDQH62/QeAtHQBeADUIDbkF/UnmnkB1ixtERrN3xCgyuF5kMntHTCJXh2vyv+wIdMhvgTeCQJ0C2hBMgSKfZlM1wSLXZ5oqgs8sjSpaCQ2VVlfKhLU6fdZGSvyWz9JMb+NE4jt/Nwfm0yJZSkBpYDg7TcJGrjm0Z7jK0B6P/fHiHK8e9Pp/eSmuf1+vf4x/ralnCN9IrncAAAAASUVORK5CYII=' +_tray_icon_stop = b'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQAAANsAANsBAdsCAtwEBNwFBdwHB9wICNwLC90MDN0NDd0PD90REd0SEt4TE94UFN4WFt4XF94ZGeAjI+AlJeEnJ+EpKeEqKuErK+EsLOEuLuIvL+IyMuIzM+M1NeM2NuM3N+M6OuM8POQ9PeQ+PuQ/P+RAQOVISOVJSeVKSuZLS+ZOTuZQUOZRUedSUudVVehbW+lhYeljY+poaOtvb+twcOtxcetzc+t0dOx3d+x4eOx6eu19fe1+fu2AgO2Cgu6EhO6Ghu6Hh+6IiO6Jie+Kiu+Li++MjO+Nje+Oju+QkPCUlPCVlfKgoPKkpPKlpfKmpvOrq/SurvSxsfSysvW4uPW6uvW7u/W8vPa9vfa+vvbAwPbCwvfExPfFxffGxvfHx/fIyPfJyffKyvjLy/jNzfjQ0PjR0fnS0vnU1PnY2Pvg4Pvi4vvj4/vl5fvm5vzo6Pzr6/3u7v3v7/3x8f3z8/309P719f729v739/74+P75+f76+v77+//8/P/9/f/+/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHCyoUAAAEAdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT9wclAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABnUlEQVQ4T33S50PTQBgG8D6lzLbsIUv2kD0FFWTvPWTvISDIUBGV1ecvj+8luZTR9P1wSe755XK5O4+hK4gn5bc7DcMBz/InQoMXeVjY4FXuCAtEyLUwQcTcFgq45JYQ4JqbwhMtV8IjeUJDjQ+5paqCyG9srEsGgoUlpeXpIjxA1nfyi2+Jqmo7Q9JeV+ODerpvBQTM8/ySzQ3t+xxoL7h7nJve5jd85M7wJq9McHaT8o6TwBTfIIfHQGzoAZ/YiSTSq8D5dSDQVqFADrJ5KFMLPaKLHQiQMQoscClezdgCB4CXD/jM90izR8g85UaKA3YAn4AejhV189acA5LX+DVOg00gnvfoVX/BRQsgbplNGqzLusgIffx1tDchiyRgdRbVHNdgRRZHQD9H1asm+PMzYyYMtoBU/sYgRxxgrmGtBRL/cnf5RL4zzCEHZF2QE14LoOWf6B9vMcJBG/iBxKo8dVtYnyStv6yuUq7FLfmqTzbLEOFest1GNGEemCjCPnKuwjm0LsLMbRBJWLkGr4WdO+Cl0HkYPBc6N4z//HcQqVwcOuIAAAAASUVORK5CYII=' +_tray_icon_exclamation = b'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQAAAN0zM900NN01Nd02Nt03N944ON45Od46Ot47O98/P99BQd9CQt9DQ+FPT+JSUuJTU+JUVOJVVeJWVuNbW+ReXuVjY+Zra+dxceh4eOl7e+l8fOl+ful/f+qBgeqCguqDg+qFheuJieuLi+yPj+yQkO2Wlu+cnO+hofGqqvGtrfre3vrf3/ri4vvn5/75+f76+v/+/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQ8SQkAAAEAdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT9wclAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABJElEQVQ4T4WS63KCMBBGsyBai62X0otY0aq90ZZa3v/dtpvsJwTijOfXt7tnILOJYY9tNonjNCtQOlqhuKKG0RrNVjgkmIHBHgMId+h7zHSiwg2a9FNVVYScupETmjkd67o+CWpYwft+R6CpCgeUlq5AOyf45+8JsRUKFI6eQLkI3n5CIREBUekLxGaLpATCymRISiAszARJCYSxiZGUQKDLQoqgnPnFhUPOTWeRoZD3FvVZlmVHkE2OEM9iV71GVoZDBGUpAg9QWN5/jx+Ilsi9hz0q4VHOWD+hEF70yc1QEr1a4Q0F0S3eJDfLuv8T4QEFXduZE1rj+et7g6hzCDxF08N+X4DAu+6lUSTnc5wE5tx73ckSTV8QVoux3N88Rykw/wP3i+vwPKk17AAAAABJRU5ErkJggg==' +_tray_icon_none = None + +SYSTEM_TRAY_MESSAGE_ICON_INFORMATION = _tray_icon_success +SYSTEM_TRAY_MESSAGE_ICON_WARNING = _tray_icon_exclamation +SYSTEM_TRAY_MESSAGE_ICON_CRITICAL = _tray_icon_stop +SYSTEM_TRAY_MESSAGE_ICON_NOICON = _tray_icon_none + + +# ------------------------------------------------------------------------- # +# Tray CLASS # +# ------------------------------------------------------------------------- # +class SystemTray: + """ + A "Simulated System Tray" that duplicates the API calls available to PySimpleGUIWx and PySimpleGUIQt users. + + All of the functionality works. The icon is displayed ABOVE the system tray rather than inside of it. + """ + + def __init__(self, menu=None, filename=None, data=None, data_base64=None, tooltip=None, metadata=None): + """ + SystemTray - create an icon in the system tray + :param menu: Menu definition. Example - ['UNUSED', ['My', 'Simple', '---', 'Menu', 'Exit']] + :type menu: List[List[List[str] or str]] + :param filename: filename for icon + :type filename: (str) + :param data: in-ram image for icon (same as data_base64 parm) + :type data: (bytes) + :param data_base64: base-64 data for icon + :type data_base64: (bytes) + :param tooltip: tooltip string + :type tooltip: (str) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + """ + self._metadata = None + self.Menu = menu + self.TrayIcon = None + self.Shown = False + self.MenuItemChosen = TIMEOUT_KEY + self.metadata = metadata + self.last_message_event = None + + screen_size = Window.get_screen_size() + + if filename: + image_elem = Image(filename=filename, background_color='red', enable_events=True, tooltip=tooltip, key='-IMAGE-') + elif data_base64: + image_elem = Image(data=data_base64, background_color='red', enable_events=True, tooltip=tooltip, key='-IMAGE-') + elif data: + image_elem = Image(data=data, background_color='red', enable_events=True, tooltip=tooltip, key='-IMAGE-') + else: + image_elem = Image(background_color='red', enable_events=True, tooltip=tooltip, key='-IMAGE-') + layout = [ + [image_elem], + ] + self.window = Window('Window Title', layout, element_padding=(0, 0), margins=(0, 0), grab_anywhere=True, no_titlebar=True, transparent_color='red', + keep_on_top=True, right_click_menu=menu, location=(screen_size[0] - 100, screen_size[1] - 100), finalize=True) + + self.window['-IMAGE-'].bind('', '+DOUBLE_CLICK') + + @property + def metadata(self): + """ + Metadata is an SystemTray property that you can use at any time to hold any value + :return: the current metadata value + :rtype: (Any) + """ + return self._metadata + + @metadata.setter + def metadata(self, value): + """ + Metadata is an SystemTray property that you can use at any time to hold any value + :param value: Anything you want it to be + :type value: (Any) + """ + self._metadata = value + + def read(self, timeout=None): + """ + Reads the context menu + :param timeout: Optional. Any value other than None indicates a non-blocking read + :type timeout: + :return: + :rtype: + """ + if self.last_message_event != TIMEOUT_KEY and self.last_message_event is not None: + event = self.last_message_event + self.last_message_event = None + return event + event, values = self.window.read(timeout=timeout) + if event.endswith('DOUBLE_CLICK'): + return EVENT_SYSTEM_TRAY_ICON_DOUBLE_CLICKED + elif event == '-IMAGE-': + return EVENT_SYSTEM_TRAY_ICON_ACTIVATED + + return event + + def hide(self): + """ + Hides the icon + """ + self.window.hide() + + def un_hide(self): + """ + Restores a previously hidden icon + """ + self.window.un_hide() + + def show_message(self, title, message, filename=None, data=None, data_base64=None, messageicon=None, + time=(SYSTEM_TRAY_MESSAGE_FADE_IN_DURATION, SYSTEM_TRAY_MESSAGE_DISPLAY_DURATION_IN_MILLISECONDS)): + """ + Shows a balloon above icon in system tray + :param title: Title shown in balloon + :type title: str + :param message: Message to be displayed + :type message: str + :param filename: Optional icon filename + :type filename: str + :param data: Optional in-ram icon + :type data: b'' + :param data_base64: Optional base64 icon + :type data_base64: b'' + :param time: Amount of time to display message in milliseconds. If tuple, first item is fade in/out duration + :type time: int | (int, int) + :return: The event that happened during the display such as user clicked on message + :rtype: Any + """ + + if isinstance(time, tuple): + fade_duration, display_duration = time + else: + fade_duration = SYSTEM_TRAY_MESSAGE_FADE_IN_DURATION + display_duration = time + + user_icon = data_base64 or filename or data or messageicon + + event = self.notify(title, message, icon=user_icon, fade_in_duration=fade_duration, display_duration_in_ms=display_duration) + self.last_message_event = event + return event + + def close(self): + """ + Close the system tray window + """ + self.window.close() + + def update(self, menu=None, tooltip=None, filename=None, data=None, data_base64=None, ): + """ + Updates the menu, tooltip or icon + :param menu: menu defintion + :type menu: ??? + :param tooltip: string representing tooltip + :type tooltip: ??? + :param filename: icon filename + :type filename: ??? + :param data: icon raw image + :type data: ??? + :param data_base64: icon base 64 image + :type data_base64: ??? + """ + # Menu + if menu is not None: + top_menu = tk.Menu(self.window.TKroot, tearoff=False) + AddMenuItem(top_menu, menu[1], self.window['-IMAGE-']) + self.window['-IMAGE-'].TKRightClickMenu = top_menu + + if filename: + self.window['-IMAGE-'].update(filename=filename) + elif data_base64: + self.window['-IMAGE-'].update(data=data_base64) + elif data: + self.window['-IMAGE-'].update(data=data) + + if tooltip: + self.window['-IMAGE-'].set_tooltip(tooltip) + + @classmethod + def notify(cls, title, message, icon=_tray_icon_success, display_duration_in_ms=SYSTEM_TRAY_MESSAGE_DISPLAY_DURATION_IN_MILLISECONDS, + fade_in_duration=SYSTEM_TRAY_MESSAGE_FADE_IN_DURATION, alpha=0.9, location=None): + """ + Displays a "notification window", usually in the bottom right corner of your display. Has an icon, a title, and a message + The window will slowly fade in and out if desired. Clicking on the window will cause it to move through the end the current "phase". For example, if the window was fading in and it was clicked, then it would immediately stop fading in and instead be fully visible. It's a way for the user to quickly dismiss the window. + :param title: Text to be shown at the top of the window in a larger font + :type title: (str) + :param message: Text message that makes up the majority of the window + :type message: (str) + :param icon: A base64 encoded PNG/GIF image or PNG/GIF filename that will be displayed in the window + :type icon: bytes | str + :param display_duration_in_ms: Number of milliseconds to show the window + :type display_duration_in_ms: (int) + :param fade_in_duration: Number of milliseconds to fade window in and out + :type fade_in_duration: (int) + :param alpha: Alpha channel. 0 - invisible 1 - fully visible + :type alpha: (float) + :param location: Location on the screen to display the window + :type location: (int, int) + :return: (int) reason for returning + :rtype: (int) + """ + + messages = message.split('\n') + full_msg = '' + for m in messages: + m_wrap = textwrap.fill(m, SYSTEM_TRAY_MESSAGE_MAX_LINE_LENGTH) + full_msg += m_wrap + '\n' + message = full_msg[:-1] + + win_msg_lines = message.count("\n") + 1 + max_line = max(message.split('\n')) + + screen_res_x, screen_res_y = Window.get_screen_size() + win_margin = SYSTEM_TRAY_WIN_MARGINS # distance from screen edges + win_width, win_height = 364, 66 + (14.8 * win_msg_lines) + + layout = [[Graph(canvas_size=(win_width, win_height), graph_bottom_left=(0, win_height), graph_top_right=(win_width, 0), key="-GRAPH-", + background_color=SYSTEM_TRAY_MESSAGE_WIN_COLOR, enable_events=True)]] + + win_location = location if location is not None else (screen_res_x - win_width - win_margin[0], screen_res_y - win_height - win_margin[1]) + window = Window(title, layout, background_color=SYSTEM_TRAY_MESSAGE_WIN_COLOR, no_titlebar=True, + location=win_location, keep_on_top=True, alpha_channel=0, margins=(0, 0), element_padding=(0, 0), grab_anywhere=True, finalize=True) + + window["-GRAPH-"].draw_rectangle((win_width, win_height), (-win_width, -win_height), fill_color=SYSTEM_TRAY_MESSAGE_WIN_COLOR, + line_color=SYSTEM_TRAY_MESSAGE_WIN_COLOR) + if type(icon) is bytes: + window["-GRAPH-"].draw_image(data=icon, location=(20, 20)) + elif icon is not None: + window["-GRAPH-"].draw_image(filename=icon, location=(20, 20)) + window["-GRAPH-"].draw_text(title, location=(64, 20), color=SYSTEM_TRAY_MESSAGE_TEXT_COLOR, font=("Helvetica", 12, "bold"), + text_location=TEXT_LOCATION_TOP_LEFT) + window["-GRAPH-"].draw_text(message, location=(64, 44), color=SYSTEM_TRAY_MESSAGE_TEXT_COLOR, font=("Helvetica", 9), + text_location=TEXT_LOCATION_TOP_LEFT) + window["-GRAPH-"].set_cursor('hand2') + + if fade_in_duration: + for i in range(1, int(alpha * 100)): # fade in + window.set_alpha(i / 100) + event, values = window.read(timeout=fade_in_duration // 100) + if event != TIMEOUT_KEY: + window.set_alpha(1) + break + if event != TIMEOUT_KEY: + window.close() + return EVENT_SYSTEM_TRAY_MESSAGE_CLICKED if event == '-GRAPH-' else event + event, values = window(timeout=display_duration_in_ms) + if event == TIMEOUT_KEY: + for i in range(int(alpha * 100), 1, -1): # fade out + window.set_alpha(i / 100) + event, values = window.read(timeout=fade_in_duration // 100) + if event != TIMEOUT_KEY: + break + else: + window.set_alpha(alpha) + event, values = window(timeout=display_duration_in_ms) + window.close() + + return EVENT_SYSTEM_TRAY_MESSAGE_CLICKED if event == '-GRAPH-' else event + + Close = close + Hide = hide + Read = read + ShowMessage = show_message + UnHide = un_hide + Update = update + + +# ################################################################################ +# ################################################################################ +# END OF ELEMENT DEFINITIONS +# ################################################################################ +# ################################################################################ + + +# =========================================================================== # +# Button Lazy Functions so the caller doesn't have to define a bunch of stuff # +# =========================================================================== # + +# ------------------------- A fake Element... the Sizer Element ------------------------- # +def Sizer(h_pixels=0, v_pixels=0): + """ + "Pushes" out the size of whatever it is placed inside of. This includes Columns, Frames, Tabs and Windows + + :param h_pixels: number of horizontal pixels + :type h_pixels: (int) + :param v_pixels: number of vertical pixels + :type v_pixels: (int) + :return: (Canvas) A canvas element that has a pad setting set according to parameters + :rtype: (Canvas) + """ + + return Canvas(size=(0, 0), pad=((h_pixels, 0), (v_pixels, 0))) + +def pin(elem, vertical_alignment=None, shrink=True, expand_x=None, expand_y=None): + """ + Pin's an element provided into a layout so that when it's made invisible and visible again, it will + be in the correct place. Otherwise it will be placed at the end of its containing window/column. + + The element you want to pin is the element that you'll be making visibile/invisible. + + The pin helper function also causes containers to shrink to fit the contents correct after something inside + has changed visiblity. Note that setting a hardcoded size on your window can impact this ability to shrink. + + :param elem: the element to put into the layout + :type elem: Element + :param vertical_alignment: Aligns elements vertically. 'top', 'center', 'bottom'. Can be shortened to 't', 'c', 'b' + :type vertical_alignment: str | None + :param shrink: If True, then the space will shrink down to a single pixel when hidden. False leaves the area large and blank + :type shrink: bool + :param expand_x: If True/False the value will be passed to the Column Elements used to make this feature + :type expand_x: (bool) + :param expand_y: If True/False the value will be passed to the Column Elements used to make this feature + :type expand_y: (bool) + :return: A column element containing the provided element + :rtype: Column + """ + if shrink: + # return Column([[elem, Canvas(size=(0, 0),background_color=elem.BackgroundColor, pad=(0, 0))]], pad=(0, 0), vertical_alignment=vertical_alignment, expand_x=expand_x, expand_y=expand_y) + return Column([[elem, Column([[]], pad=(0, 0))]], pad=(0, 0), vertical_alignment=vertical_alignment, expand_x=expand_x, expand_y=expand_y) + else: + return Column([[elem]], pad=(0, 0), vertical_alignment=vertical_alignment, expand_x=expand_x, expand_y=expand_y) + + +def vtop(elem_or_row, expand_x=None, expand_y=None, background_color=None): + """ + Align an element or a row of elements to the top of the row that contains it + + :param elem_or_row: the element or row of elements + :type elem_or_row: Element | List[Element] | Tuple[Element] + :param expand_x: If True/False the value will be passed to the Column Elements used to make this feature + :type expand_x: (bool) + :param expand_y: If True/False the value will be passed to the Column Elements used to make this feature + :type expand_y: (bool) + :param background_color: Background color for container that is used by vtop to do the alignment + :type background_color: str | None + :return: A column element containing the provided element aligned to the top or list of elements (a row) + :rtype: Column | List[Column] + """ + + if isinstance(elem_or_row, list) or isinstance(elem_or_row, tuple): + return [Column([[e]], pad=(0, 0), vertical_alignment='top', expand_x=expand_x, expand_y=expand_y, background_color=background_color) for e in elem_or_row] + + return Column([[elem_or_row]], pad=(0, 0), vertical_alignment='top', expand_x=expand_x, expand_y=expand_y, background_color=background_color) + + +def vcenter(elem_or_row, expand_x=None, expand_y=None, background_color=None): + """ + Align an element or a row of elements to the center of the row that contains it + + :param elem_or_row: the element or row of elements + :type elem_or_row: Element | List[Element] | Tuple[Element] + :param expand_x: If True/False the value will be passed to the Column Elements used to make this feature + :type expand_x: (bool) + :param expand_y: If True/False the value will be passed to the Column Elements used to make this feature + :type expand_y: (bool) + :param background_color: Background color for container that is used by vcenter to do the alignment + :type background_color: str | None + :return: A column element containing the provided element aligned to the center or list of elements (a row) + :rtype: Column | List[Column] + """ + + if isinstance(elem_or_row, list) or isinstance(elem_or_row, tuple): + return [Column([[e]], pad=(0, 0), vertical_alignment='center', expand_x=expand_x, expand_y=expand_y, background_color=background_color) for e in elem_or_row] + + return Column([[elem_or_row]], pad=(0, 0), vertical_alignment='center', expand_x=expand_x, expand_y=expand_y, background_color=background_color) + + +def vbottom(elem_or_row, expand_x=None, expand_y=None, background_color=None): + """ + Align an element or a row of elements to the bottom of the row that contains it + + :param elem_or_row: the element or row of elements + :type elem_or_row: Element | List[Element] | Tuple[Element] + :param expand_x: If True/False the value will be passed to the Column Elements used to make this feature + :type expand_x: (bool) + :param expand_y: If True/False the value will be passed to the Column Elements used to make this feature + :type expand_y: (bool) + :param background_color: Background color for container that is used by vcenter to do the alignment + :type background_color: str | None + :return: A column element containing the provided element aligned to the bottom or list of elements (a row) + :rtype: Column | List[Column] + """ + + if isinstance(elem_or_row, list) or isinstance(elem_or_row, tuple): + return [Column([[e]], pad=(0, 0), vertical_alignment='bottom', expand_x=expand_x, expand_y=expand_y, background_color=background_color) for e in elem_or_row] + + return Column([[elem_or_row]], pad=(0, 0), vertical_alignment='bottom', expand_x=expand_x, expand_y=expand_y, background_color=background_color) + + +def Titlebar(title='', icon=None, text_color=None, background_color=None, font=None, key=None, k=None): + """ + A custom titlebar that replaces the OS provided titlebar, thus giving you control + the is not possible using the OS provided titlebar such as the color. + + NOTE LINUX USERS - at the moment the minimize function is not yet working. Windows users + should have no problem and it should function as a normal window would. + + This titlebar is created from a row of elements that is then encapsulated into a + one Column element which is what this Titlebar function returns to you. + + A custom titlebar removes the margins from your window. If you want the remainder + of your Window to have margins, place the layout after the Titlebar into a Column and + set the pad of that Column to the dimensions you would like your margins to have. + + The Titlebar is a COLUMN element. You can thus call the update method for the column and + perform operations such as making the column visible/invisible + + :param icon: Can be either a filename or Base64 byte string of a PNG or GIF. This is used in an Image element to create the titlebar + :type icon: str or bytes or None + :param title: The "title" to show in the titlebar + :type title: str + :param text_color: Text color for titlebar + :type text_color: str | None + :param background_color: Background color for titlebar + :type background_color: str | None + :param font: Font to be used for the text and the symbols + :type font: (str or (str, int[, str]) or None) + :param key: Identifies an Element. Should be UNIQUE to this window. + :type key: str | int | tuple | object | None + :param k: Exactly the same as key. Choose one of them to use + :type k: str | int | tuple | object | None + :return: A single Column element that has eveything in 1 element + :rtype: Column + """ + bc = background_color or CUSTOM_TITLEBAR_BACKGROUND_COLOR or theme_button_color()[1] + tc = text_color or CUSTOM_TITLEBAR_TEXT_COLOR or theme_button_color()[0] + font = font or CUSTOM_TITLEBAR_FONT or ('Helvetica', 12) + key = k or key + if key is None: + key = TITLEBAR_KEY + if isinstance(icon, bytes): + icon_and_text_portion = [Image(data=icon, background_color=bc, key=TITLEBAR_IMAGE_KEY)] + elif icon == TITLEBAR_DO_NOT_USE_AN_ICON: + icon_and_text_portion = [] + elif icon is not None: + icon_and_text_portion = [Image(filename=icon, background_color=bc, key=TITLEBAR_IMAGE_KEY)] + elif CUSTOM_TITLEBAR_ICON is not None: + if isinstance(CUSTOM_TITLEBAR_ICON, bytes): + icon_and_text_portion = [Image(data=CUSTOM_TITLEBAR_ICON, background_color=bc, key=TITLEBAR_IMAGE_KEY)] + else: + icon_and_text_portion = [Image(filename=CUSTOM_TITLEBAR_ICON, background_color=bc, key=TITLEBAR_IMAGE_KEY)] + else: + icon_and_text_portion = [Image(data=DEFAULT_BASE64_ICON_16_BY_16, background_color=bc, key=TITLEBAR_IMAGE_KEY)] + + icon_and_text_portion += [T(title, text_color=tc, background_color=bc, font=font, grab=True, key=TITLEBAR_TEXT_KEY)] + + return Column([[Column([icon_and_text_portion], pad=(0, 0), background_color=bc), + Column([[T(SYMBOL_TITLEBAR_MINIMIZE, text_color=tc, background_color=bc, enable_events=True, font=font, key=TITLEBAR_MINIMIZE_KEY), + Text(SYMBOL_TITLEBAR_MAXIMIZE, text_color=tc, background_color=bc, enable_events=True, font=font, key=TITLEBAR_MAXIMIZE_KEY), + Text(SYMBOL_TITLEBAR_CLOSE, text_color=tc, background_color=bc, font=font, enable_events=True, key=TITLEBAR_CLOSE_KEY), ]], + element_justification='r', expand_x=True, grab=True, pad=(0, 0), background_color=bc)]], expand_x=True, grab=True, + background_color=bc, pad=(0, 0), metadata=TITLEBAR_METADATA_MARKER, key=key) + + +def MenubarCustom(menu_definition, disabled_text_color=None, bar_font=None, font=None, tearoff=False, pad=0, p=None, background_color=None, text_color=None, + bar_background_color=None, bar_text_color=None, key=None, k=None): + """ + A custom Menubar that replaces the OS provided Menubar + + Why? + Two reasons - 1. they look great (see custom titlebar) 2. if you have a custom titlebar, then you have to use a custom menubar if you want a menubar + + :param menu_definition: The Menu definition specified using lists (docs explain the format) + :type menu_definition: List[List[Tuple[str, List[str]]] + :param disabled_text_color: color to use for text when item is disabled. Can be in #RRGGBB format or a color name "black" + :type disabled_text_color: (str) + :param bar_font: specifies the font family, size to be used for the chars in the bar itself + :type bar_font: (str or (str, int[, str]) or None) + :param font: specifies the font family, size to be used for the menu items + :type font: (str or (str, int[, str]) or None) + :param tearoff: if True, then can tear the menu off from the window ans use as a floating window. Very cool effect + :type tearoff: (bool) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int). TIP - 0 will make flush with titlebar + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param background_color: color to use for background of the menus that are displayed after making a section. Can be in #RRGGBB format or a color name "black". Defaults to the color of the bar text + :type background_color: (str) + :param text_color: color to use for the text of the many items in the displayed menus. Can be in #RRGGBB format or a color name "black". Defaults to the bar background + :type text_color: (str) + :param bar_background_color: color to use for the menubar. Can be in #RRGGBB format or a color name "black". Defaults to theme's button text color + :type bar_background_color: (str) + :param bar_text_color: color to use for the menu items text. Can be in #RRGGBB format or a color name "black". Defaults to theme's button background color + :type bar_text_color: (str) + :param key: Value that uniquely identifies this element from all other elements. Used when Finding an element or in return values. Must be unique to the window + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :returns: A Column element that has a series of ButtonMenu elements + :rtype: Column + """ + + bar_bg = bar_background_color if bar_background_color is not None else theme_button_color()[0] + bar_text = bar_text_color if bar_text_color is not None else theme_button_color()[1] + menu_bg = background_color if background_color is not None else bar_text + menu_text = text_color if text_color is not None else bar_bg + pad = pad if pad is not None else p + + row = [] + for menu in menu_definition: + text = menu[0] + if MENU_SHORTCUT_CHARACTER in text: + text = text.replace(MENU_SHORTCUT_CHARACTER, '') + if text.startswith(MENU_DISABLED_CHARACTER): + disabled = True + text = text[len(MENU_DISABLED_CHARACTER):] + else: + disabled = False + + button_menu = ButtonMenu(text, menu, border_width=0, button_color=(bar_text, bar_bg), key=text, pad=(0, 0), disabled=disabled, font=bar_font, + item_font=font, disabled_text_color=disabled_text_color, text_color=menu_text, background_color=menu_bg, tearoff=tearoff) + button_menu.part_of_custom_menubar = True + button_menu.custom_menubar_key = key if key is not None else k + row += [button_menu] + return Column([row], pad=pad, background_color=bar_bg, expand_x=True, key=key if key is not None else k) + + +# ------------------------- FOLDER BROWSE Element lazy function ------------------------- # +def FolderBrowse(button_text='Browse', target=(ThisRow, -1), initial_folder=None, tooltip=None, size=(None, None), s=(None, None), + auto_size_button=None, button_color=None, disabled=False, change_submits=False, enable_events=False, + font=None, pad=None, p=None, key=None, k=None, visible=True, metadata=None, expand_x=False, expand_y=False): + """ + :param button_text: text in the button (Default value = 'Browse') + :type button_text: (str) + :param target: target for the button (Default value = (ThisRow, -1)) + :type target: str | (int, int) + :param initial_folder: starting path for folders and files + :type initial_folder: (str) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param change_submits: If True, pressing Enter key submits window (Default = False) + :type enable_events: (bool) + :param enable_events: Turns on the element specific events.(Default = False) + :type enable_events: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: Used with window.find_element and with return values to uniquely identify this element + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: The Button created + :rtype: (Button) + """ + + return Button(button_text=button_text, button_type=BUTTON_TYPE_BROWSE_FOLDER, target=target, + initial_folder=initial_folder, tooltip=tooltip, size=size, s=s, auto_size_button=auto_size_button, + disabled=disabled, button_color=button_color, change_submits=change_submits, + enable_events=enable_events, font=font, pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +# ------------------------- FILE BROWSE Element lazy function ------------------------- # +def FileBrowse(button_text='Browse', target=(ThisRow, -1), file_types=FILE_TYPES_ALL_FILES, initial_folder=None, + tooltip=None, size=(None, None), s=(None, None), auto_size_button=None, button_color=None, change_submits=False, + enable_events=False, font=None, disabled=False, + pad=None, p=None, key=None, k=None, visible=True, metadata=None, expand_x=False, expand_y=False): + """ + + :param button_text: text in the button (Default value = 'Browse') + :type button_text: (str) + :param target: key or (row,col) target for the button (Default value = (ThisRow, -1)) + :type target: str | (int, int) + :param file_types: filter file types Default value = (("ALL Files", "*.* *"),). + :type file_types: Tuple[(str, str), ...] + :param initial_folder: starting path for folders and files + :type initial_folder: + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param change_submits: If True, pressing Enter key submits window (Default = False) + :type change_submits: (bool) + :param enable_events: Turns on the element specific events.(Default = False) + :type enable_events: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + return Button(button_text=button_text, button_type=BUTTON_TYPE_BROWSE_FILE, target=target, file_types=file_types, + initial_folder=initial_folder, tooltip=tooltip, size=size, s=s, auto_size_button=auto_size_button, + change_submits=change_submits, enable_events=enable_events, disabled=disabled, + button_color=button_color, font=font, pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +# ------------------------- FILES BROWSE Element (Multiple file selection) lazy function ------------------------- # +def FilesBrowse(button_text='Browse', target=(ThisRow, -1), file_types=FILE_TYPES_ALL_FILES, disabled=False, + initial_folder=None, tooltip=None, size=(None, None), s=(None, None), auto_size_button=None, button_color=None, + change_submits=False, enable_events=False, + font=None, pad=None, p=None, key=None, k=None, visible=True, files_delimiter=BROWSE_FILES_DELIMITER, metadata=None, expand_x=False, expand_y=False): + """ + Allows browsing of multiple files. File list is returned as a single list with the delimiter defined using the files_delimiter parameter. + + :param button_text: text in the button (Default value = 'Browse') + :type button_text: (str) + :param target: key or (row,col) target for the button (Default value = (ThisRow, -1)) + :type target: str | (int, int) + :param file_types: Default value = (("ALL Files", "*.* *"),). + :type file_types: Tuple[(str, str), ...] + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param initial_folder: starting path for folders and files + :type initial_folder: (str) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param change_submits: If True, pressing Enter key submits window (Default = False) + :type change_submits: (bool) + :param enable_events: Turns on the element specific events.(Default = False) + :type enable_events: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param files_delimiter: String to place between files when multiple files are selected. Normally a ; + :type files_delimiter: str + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + button = Button(button_text=button_text, button_type=BUTTON_TYPE_BROWSE_FILES, target=target, file_types=file_types, + initial_folder=initial_folder, change_submits=change_submits, enable_events=enable_events, + tooltip=tooltip, size=size, s=s, auto_size_button=auto_size_button, + disabled=disabled, button_color=button_color, font=font, pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + button._files_delimiter = files_delimiter + return button + + +# ------------------------- FILE BROWSE Element lazy function ------------------------- # +def FileSaveAs(button_text='Save As...', target=(ThisRow, -1), file_types=FILE_TYPES_ALL_FILES, initial_folder=None, + default_extension='', disabled=False, tooltip=None, size=(None, None), s=(None, None), auto_size_button=None, button_color=None, + change_submits=False, enable_events=False, font=None, + pad=None, p=None, key=None, k=None, visible=True, metadata=None, expand_x=False, expand_y=False): + """ + + :param button_text: text in the button (Default value = 'Save As...') + :type button_text: (str) + :param target: key or (row,col) target for the button (Default value = (ThisRow, -1)) + :type target: str | (int, int) + :param file_types: Default value = (("ALL Files", "*.* *"),). + :type file_types: Tuple[(str, str), ...] + :param default_extension: If no extension entered by user, add this to filename (only used in saveas dialogs) + :type default_extension: (str) + :param initial_folder: starting path for folders and files + :type initial_folder: (str) + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param change_submits: If True, pressing Enter key submits window (Default = False) + :type change_submits: (bool) + :param enable_events: Turns on the element specific events.(Default = False) + :type enable_events: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) :return: returns a button + :rtype: (Button) + """ + return Button(button_text=button_text, button_type=BUTTON_TYPE_SAVEAS_FILE, target=target, file_types=file_types, + initial_folder=initial_folder, default_extension=default_extension, tooltip=tooltip, size=size, s=s, disabled=disabled, + auto_size_button=auto_size_button, button_color=button_color, change_submits=change_submits, + enable_events=enable_events, font=font, pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +# ------------------------- SAVE AS Element lazy function ------------------------- # +def SaveAs(button_text='Save As...', target=(ThisRow, -1), file_types=FILE_TYPES_ALL_FILES, initial_folder=None, default_extension='', + disabled=False, tooltip=None, size=(None, None), s=(None, None), auto_size_button=None, button_color=None, + change_submits=False, enable_events=False, font=None, + pad=None, p=None, key=None, k=None, visible=True, metadata=None, expand_x=False, expand_y=False): + """ + + :param button_text: text in the button (Default value = 'Save As...') + :type button_text: (str) + :param target: key or (row,col) target for the button (Default value = (ThisRow, -1)) + :type target: str | (int, int) + :param file_types: Default value = (("ALL Files", "*.* *"),). + :type file_types: Tuple[(str, str), ...] + :param default_extension: If no extension entered by user, add this to filename (only used in saveas dialogs) + :type default_extension: (str) + :param initial_folder: starting path for folders and files + :type initial_folder: (str) + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) or str + :param change_submits: If True, pressing Enter key submits window (Default = False) + :type change_submits: (bool) + :param enable_events: Turns on the element specific events.(Default = False) + :type enable_events: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + return Button(button_text=button_text, button_type=BUTTON_TYPE_SAVEAS_FILE, target=target, file_types=file_types, + initial_folder=initial_folder, default_extension=default_extension, tooltip=tooltip, size=size, s=s, disabled=disabled, + auto_size_button=auto_size_button, button_color=button_color, change_submits=change_submits, + enable_events=enable_events, font=font, pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +# ------------------------- SAVE BUTTON Element lazy function ------------------------- # +def Save(button_text='Save', size=(None, None), s=(None, None), auto_size_button=None, button_color=None, bind_return_key=True, + disabled=False, tooltip=None, font=None, focus=False, pad=None, p=None, key=None, k=None, visible=True, metadata=None, expand_x=False, expand_y=False): + """ + + :param button_text: text in the button (Default value = 'Save') + :type button_text: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param bind_return_key: (Default = True) If True, this button will appear to be clicked when return key is pressed in other elements such as Input and elements with return key options + :type bind_return_key: (bool) + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param focus: if focus should be set to this + :type focus: idk_yetReally + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + return Button(button_text=button_text, button_type=BUTTON_TYPE_READ_FORM, tooltip=tooltip, size=size, s=s, + auto_size_button=auto_size_button, button_color=button_color, font=font, disabled=disabled, + bind_return_key=bind_return_key, focus=focus, pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +# ------------------------- SUBMIT BUTTON Element lazy function ------------------------- # +def Submit(button_text='Submit', size=(None, None), s=(None, None), auto_size_button=None, button_color=None, disabled=False, + bind_return_key=True, tooltip=None, font=None, focus=False, pad=None, p=None, key=None, k=None, visible=True, metadata=None, expand_x=False, expand_y=False): + """ + + :param button_text: text in the button (Default value = 'Submit') + :type button_text: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param bind_return_key: (Default = True) If True, this button will appear to be clicked when return key is pressed in other elements such as Input and elements with return key options + :type bind_return_key: (bool) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param focus: if focus should be set to this + :type focus: idk_yetReally + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + return Button(button_text=button_text, button_type=BUTTON_TYPE_READ_FORM, tooltip=tooltip, size=size, s=s, + auto_size_button=auto_size_button, button_color=button_color, font=font, disabled=disabled, + bind_return_key=bind_return_key, focus=focus, pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +# ------------------------- OPEN BUTTON Element lazy function ------------------------- # +# ------------------------- OPEN BUTTON Element lazy function ------------------------- # +def Open(button_text='Open', size=(None, None), s=(None, None), auto_size_button=None, button_color=None, disabled=False, + bind_return_key=True, tooltip=None, font=None, focus=False, pad=None, p=None, key=None, k=None, visible=True, metadata=None, expand_x=False, expand_y=False): + """ + + :param button_text: text in the button (Default value = 'Open') + :type button_text: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param bind_return_key: (Default = True) If True, this button will appear to be clicked when return key is pressed in other elements such as Input and elements with return key options + :type bind_return_key: (bool) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param focus: if focus should be set to this + :type focus: idk_yetReally + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + return Button(button_text=button_text, button_type=BUTTON_TYPE_READ_FORM, tooltip=tooltip, size=size, s=s, + auto_size_button=auto_size_button, button_color=button_color, font=font, disabled=disabled, + bind_return_key=bind_return_key, focus=focus, pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +# ------------------------- OK BUTTON Element lazy function ------------------------- # +def OK(button_text='OK', size=(None, None), s=(None, None), auto_size_button=None, button_color=None, disabled=False, + bind_return_key=True, tooltip=None, font=None, focus=False, pad=None, p=None, key=None, k=None, visible=True, metadata=None, expand_x=False, expand_y=False): + """ + + :param button_text: text in the button (Default value = 'OK') + :type button_text: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param bind_return_key: (Default = True) If True, this button will appear to be clicked when return key is pressed in other elements such as Input and elements with return key options + :type bind_return_key: (bool) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param focus: if focus should be set to this + :type focus: idk_yetReally + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + return Button(button_text=button_text, button_type=BUTTON_TYPE_READ_FORM, tooltip=tooltip, size=size, s=s, + auto_size_button=auto_size_button, button_color=button_color, font=font, disabled=disabled, + bind_return_key=bind_return_key, focus=focus, pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +# ------------------------- YES BUTTON Element lazy function ------------------------- # +def Ok(button_text='Ok', size=(None, None), s=(None, None), auto_size_button=None, button_color=None, disabled=False, + bind_return_key=True, tooltip=None, font=None, focus=False, pad=None, p=None, key=None, k=None, visible=True, metadata=None, expand_x=False, expand_y=False): + """ + + :param button_text: text in the button (Default value = 'Ok') + :type button_text: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param bind_return_key: (Default = True) If True, this button will appear to be clicked when return key is pressed in other elements such as Input and elements with return key options + :type bind_return_key: (bool) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param focus: if focus should be set to this + :type focus: idk_yetReally + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + return Button(button_text=button_text, button_type=BUTTON_TYPE_READ_FORM, tooltip=tooltip, size=size, s=s, + auto_size_button=auto_size_button, button_color=button_color, font=font, disabled=disabled, + bind_return_key=bind_return_key, focus=focus, pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +# ------------------------- CANCEL BUTTON Element lazy function ------------------------- # +def Cancel(button_text='Cancel', size=(None, None), s=(None, None), auto_size_button=None, button_color=None, disabled=False, + tooltip=None, font=None, bind_return_key=False, focus=False, pad=None, p=None, key=None, k=None, visible=True, metadata=None, expand_x=False, expand_y=False): + """ + + :param button_text: text in the button (Default value = 'Cancel') + :type button_text: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param bind_return_key: (Default = False) If True, this button will appear to be clicked when return key is pressed in other elements such as Input and elements with return key options + :type bind_return_key: (bool) + :param focus: if focus should be set to this + :type focus: + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + return Button(button_text=button_text, button_type=BUTTON_TYPE_READ_FORM, tooltip=tooltip, size=size, s=s, + auto_size_button=auto_size_button, button_color=button_color, font=font, disabled=disabled, + bind_return_key=bind_return_key, focus=focus, pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +# ------------------------- QUIT BUTTON Element lazy function ------------------------- # +def Quit(button_text='Quit', size=(None, None), s=(None, None), auto_size_button=None, button_color=None, disabled=False, tooltip=None, + font=None, bind_return_key=False, focus=False, pad=None, p=None, key=None, k=None, visible=True, metadata=None, expand_x=False, expand_y=False): + """ + + :param button_text: text in the button (Default value = 'Quit') + :type button_text: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param bind_return_key: (Default = False) If True, this button will appear to be clicked when return key is pressed in other elements such as Input and elements with return key options + :type bind_return_key: (bool) + :param focus: if focus should be set to this + :type focus: (bool) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + return Button(button_text=button_text, button_type=BUTTON_TYPE_READ_FORM, tooltip=tooltip, size=size, s=s, + auto_size_button=auto_size_button, button_color=button_color, font=font, disabled=disabled, + bind_return_key=bind_return_key, focus=focus, pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +# ------------------------- Exit BUTTON Element lazy function ------------------------- # +def Exit(button_text='Exit', size=(None, None), s=(None, None), auto_size_button=None, button_color=None, disabled=False, tooltip=None, + font=None, bind_return_key=False, focus=False, pad=None, p=None, key=None, k=None, visible=True, metadata=None, expand_x=False, expand_y=False): + """ + + :param button_text: text in the button (Default value = 'Exit') + :type button_text: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param bind_return_key: (Default = False) If True, this button will appear to be clicked when return key is pressed in other elements such as Input and elements with return key options + :type bind_return_key: (bool) + :param focus: if focus should be set to this + :type focus: + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + return Button(button_text=button_text, button_type=BUTTON_TYPE_READ_FORM, tooltip=tooltip, size=size, s=s, + auto_size_button=auto_size_button, button_color=button_color, font=font, disabled=disabled, + bind_return_key=bind_return_key, focus=focus, pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +# ------------------------- YES BUTTON Element lazy function ------------------------- # +def Yes(button_text='Yes', size=(None, None), s=(None, None), auto_size_button=None, button_color=None, disabled=False, tooltip=None, + font=None, bind_return_key=True, focus=False, pad=None, p=None, key=None, k=None, visible=True, metadata=None, expand_x=False, expand_y=False): + """ + + :param button_text: text in the button (Default value = 'Yes') + :type button_text: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param bind_return_key: (Default = True) If True, this button will appear to be clicked when return key is pressed in other elements such as Input and elements with return key options + :type bind_return_key: (bool) + :param focus: if focus should be set to this + :type focus: + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + return Button(button_text=button_text, button_type=BUTTON_TYPE_READ_FORM, tooltip=tooltip, size=size, s=s, + auto_size_button=auto_size_button, button_color=button_color, font=font, disabled=disabled, + bind_return_key=bind_return_key, focus=focus, pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +# ------------------------- NO BUTTON Element lazy function ------------------------- # +def No(button_text='No', size=(None, None), s=(None, None), auto_size_button=None, button_color=None, disabled=False, tooltip=None, + font=None, bind_return_key=False, focus=False, pad=None, p=None, key=None, k=None, visible=True, metadata=None, expand_x=False, expand_y=False): + """ + + :param button_text: text in the button (Default value = 'No') + :type button_text: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param bind_return_key: (Default = False) If True, then the return key will cause a the Listbox to generate an event + :type bind_return_key: (bool) + :param focus: if focus should be set to this + :type focus: + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + return Button(button_text=button_text, button_type=BUTTON_TYPE_READ_FORM, tooltip=tooltip, size=size, s=s, + auto_size_button=auto_size_button, button_color=button_color, font=font, disabled=disabled, + bind_return_key=bind_return_key, focus=focus, pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +# ------------------------- NO BUTTON Element lazy function ------------------------- # +def Help(button_text='Help', size=(None, None), s=(None, None), auto_size_button=None, button_color=None, disabled=False, font=None, + tooltip=None, bind_return_key=False, focus=False, pad=None, p=None, key=None, k=None, visible=True, metadata=None, expand_x=False, expand_y=False): + """ + + :param button_text: text in the button (Default value = 'Help') + :type button_text: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param bind_return_key: (Default = False) If True, this button will appear to be clicked when return key is pressed in other elements such as Input and elements with return key options + :type bind_return_key: (bool) + :param focus: if focus should be set to this + :type focus: + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + return Button(button_text=button_text, button_type=BUTTON_TYPE_READ_FORM, tooltip=tooltip, size=size, s=s, + auto_size_button=auto_size_button, button_color=button_color, font=font, disabled=disabled, + bind_return_key=bind_return_key, focus=focus, pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +# ------------------------- NO BUTTON Element lazy function ------------------------- # +def Debug(button_text='', size=(None, None), s=(None, None), auto_size_button=None, button_color=None, disabled=False, font=None, + tooltip=None, bind_return_key=False, focus=False, pad=None, p=None, key=None, k=None, visible=True, metadata=None, expand_x=False, expand_y=False): + """ + This Button has been changed in how it works!! + Your button has been replaced with a normal button that has the PySimpleGUI Debugger buggon logo on it. + In your event loop, you will need to check for the event of this button and then call: + show_debugger_popout_window() + :param button_text: text in the button (Default value = '') + :type button_text: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param bind_return_key: (Default = False) If True, this button will appear to be clicked when return key is pressed in other elements such as Input and elements with return key options + :type bind_return_key: (bool) + :param focus: if focus should be set to this + :type focus: + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + + user_key = key if key is not None else k if k is not None else button_text + + return Button(button_text='', button_type=BUTTON_TYPE_READ_FORM, tooltip=tooltip, size=size, s=s, + auto_size_button=auto_size_button, button_color=theme_button_color(), font=font, disabled=disabled, + bind_return_key=bind_return_key, focus=focus, pad=pad, p=p, key=user_key, k=k, visible=visible, image_data=PSG_DEBUGGER_LOGO, + image_subsample=2, border_width=0, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +# ------------------------- GENERIC BUTTON Element lazy function ------------------------- # +def SimpleButton(button_text, image_filename=None, image_data=None, image_size=(None, None), image_subsample=None, + border_width=None, tooltip=None, size=(None, None), s=(None, None), auto_size_button=None, button_color=None, + font=None, bind_return_key=False, disabled=False, focus=False, pad=None, p=None, key=None, k=None, metadata=None, expand_x=False, expand_y=False): + """ + DEPIRCATED + + This Button should not be used. + + :param button_text: text in the button + :type button_text: (str) + :param image_filename: image filename if there is a button image + :type image_filename: image filename if there is a button image + :param image_data: in-RAM image to be displayed on button + :type image_data: in-RAM image to be displayed on button + :param image_size: image size (O.K.) + :type image_size: (Default = (None)) + :param image_subsample: amount to reduce the size of the image + :type image_subsample: amount to reduce the size of the image + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param bind_return_key: (Default = False) If True, this button will appear to be clicked when return key is pressed in other elements such as Input and elements with return key options + :type bind_return_key: (bool) + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param focus: if focus should be set to this + :type focus: idk_yetReally + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + return Button(button_text=button_text, button_type=BUTTON_TYPE_CLOSES_WIN, image_filename=image_filename, + image_data=image_data, image_size=image_size, image_subsample=image_subsample, + border_width=border_width, tooltip=tooltip, disabled=disabled, size=size, s=s, + auto_size_button=auto_size_button, button_color=button_color, font=font, + bind_return_key=bind_return_key, focus=focus, pad=pad, p=p, key=key, k=k, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +# ------------------------- CLOSE BUTTON Element lazy function ------------------------- # +def CloseButton(button_text, image_filename=None, image_data=None, image_size=(None, None), image_subsample=None, + border_width=None, tooltip=None, size=(None, None), s=(None, None), auto_size_button=None, button_color=None, font=None, + bind_return_key=False, disabled=False, focus=False, pad=None, p=None, key=None, k=None, metadata=None, expand_x=False, expand_y=False): + """ + DEPRICATED + + This button should not be used. Instead explicitly close your windows by calling window.close() or by using + the close parameter in window.read + + :param button_text: text in the button + :type button_text: (str) + :param image_filename: image filename if there is a button image + :type image_filename: image filename if there is a button image + :param image_data: in-RAM image to be displayed on button + :type image_data: in-RAM image to be displayed on button + :param image_size: image size (O.K.) + :type image_size: (Default = (None)) + :param image_subsample: amount to reduce the size of the image + :type image_subsample: amount to reduce the size of the image + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param bind_return_key: (Default = False) If True, this button will appear to be clicked when return key is pressed in other elements such as Input and elements with return key options + :type bind_return_key: (bool) + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param focus: if focus should be set to this + :type focus: idk_yetReally + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + return Button(button_text=button_text, button_type=BUTTON_TYPE_CLOSES_WIN, image_filename=image_filename, + image_data=image_data, image_size=image_size, image_subsample=image_subsample, + border_width=border_width, tooltip=tooltip, disabled=disabled, size=size, s=s, + auto_size_button=auto_size_button, button_color=button_color, font=font, + bind_return_key=bind_return_key, focus=focus, pad=pad, p=p, key=key, k=k, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +CButton = CloseButton + + +# ------------------------- GENERIC BUTTON Element lazy function ------------------------- # +def ReadButton(button_text, image_filename=None, image_data=None, image_size=(None, None), image_subsample=None, + border_width=None, tooltip=None, size=(None, None), s=(None, None), auto_size_button=None, button_color=None, font=None, + bind_return_key=False, disabled=False, focus=False, pad=None, p=None, key=None, k=None, metadata=None, expand_x=False, expand_y=False): + """ + :param button_text: text in the button + :type button_text: (str) + :param image_filename: image filename if there is a button image + :type image_filename: image filename if there is a button image + :param image_data: in-RAM image to be displayed on button + :type image_data: in-RAM image to be displayed on button + :param image_size: image size (O.K.) + :type image_size: (Default = (None)) + :param image_subsample: amount to reduce the size of the image + :type image_subsample: amount to reduce the size of the image + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param bind_return_key: (Default = False) If True, this button will appear to be clicked when return key is pressed in other elements such as Input and elements with return key options + :type bind_return_key: (bool) + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param focus: if focus should be set to this + :type focus: idk_yetReally + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param border_width: width of border around element + :type border_width: (int) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: Button created + :rtype: (Button) + """ + + return Button(button_text=button_text, button_type=BUTTON_TYPE_READ_FORM, image_filename=image_filename, + image_data=image_data, image_size=image_size, image_subsample=image_subsample, + border_width=border_width, tooltip=tooltip, size=size, s=s, disabled=disabled, + auto_size_button=auto_size_button, button_color=button_color, font=font, + bind_return_key=bind_return_key, focus=focus, pad=pad, p=p, key=key, k=k, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +ReadFormButton = ReadButton +RButton = ReadFormButton + + +# ------------------------- Realtime BUTTON Element lazy function ------------------------- # +def RealtimeButton(button_text, image_filename=None, image_data=None, image_size=(None, None), image_subsample=None, + border_width=None, tooltip=None, size=(None, None), s=(None, None), auto_size_button=None, button_color=None, + font=None, disabled=False, bind_return_key=False, focus=False, pad=None, p=None, key=None, k=None, visible=True, metadata=None, expand_x=False, expand_y=False): + """ + + :param button_text: text in the button + :type button_text: (str) + :param image_filename: image filename if there is a button image + :type image_filename: image filename if there is a button image + :param image_data: in-RAM image to be displayed on button + :type image_data: in-RAM image to be displayed on button + :param image_size: image size (O.K.) + :type image_size: (Default = (None)) + :param image_subsample: amount to reduce the size of the image + :type image_subsample: amount to reduce the size of the image + :param border_width: width of border around element + :type border_width: (int) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param bind_return_key: (Default = False) If True, this button will appear to be clicked when return key is pressed in other elements such as Input and elements with return key options + :type bind_return_key: (bool) + :param focus: if focus should be set to this + :type focus: (bool) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: Button created + :rtype: (Button) + """ + return Button(button_text=button_text, button_type=BUTTON_TYPE_REALTIME, image_filename=image_filename, + image_data=image_data, image_size=image_size, image_subsample=image_subsample, + border_width=border_width, tooltip=tooltip, disabled=disabled, size=size, s=s, + auto_size_button=auto_size_button, button_color=button_color, font=font, + bind_return_key=bind_return_key, focus=focus, pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +# ------------------------- Dummy BUTTON Element lazy function ------------------------- # +def DummyButton(button_text, image_filename=None, image_data=None, image_size=(None, None), image_subsample=None, + border_width=None, tooltip=None, size=(None, None), s=(None, None), auto_size_button=None, button_color=None, font=None, + disabled=False, bind_return_key=False, focus=False, pad=None, p=None, key=None, k=None, visible=True, metadata=None, expand_x=False, expand_y=False): + """ + This is a special type of Button. + + It will close the window but NOT send an event that the window has been closed. + + It's used in conjunction with non-blocking windows to silently close them. They are used to + implement the non-blocking popup windows. They're also found in some Demo Programs, so look there for proper use. + + :param button_text: text in the button + :type button_text: (str) + :param image_filename: image filename if there is a button image + :type image_filename: image filename if there is a button image + :param image_data: in-RAM image to be displayed on button + :type image_data: in-RAM image to be displayed on button + :param image_size: image size (O.K.) + :type image_size: (Default = (None)) + :param image_subsample: amount to reduce the size of the image + :type image_subsample: amount to reduce the size of the image + :param border_width: width of border around element + :type border_width: (int) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param bind_return_key: (Default = False) If True, this button will appear to be clicked when return key is pressed in other elements such as Input and elements with return key options + :type bind_return_key: (bool) + :param focus: if focus should be set to this + :type focus: (bool) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + return Button(button_text=button_text, button_type=BUTTON_TYPE_CLOSES_WIN_ONLY, image_filename=image_filename, + image_data=image_data, image_size=image_size, image_subsample=image_subsample, + border_width=border_width, tooltip=tooltip, size=size, s=s, auto_size_button=auto_size_button, + button_color=button_color, font=font, disabled=disabled, bind_return_key=bind_return_key, focus=focus, + pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + + +# ------------------------- Calendar Chooser Button lazy function ------------------------- # +def CalendarButton(button_text, target=(ThisRow, -1), close_when_date_chosen=True, default_date_m_d_y=(None, None, None), + image_filename=None, image_data=None, image_size=(None, None), + image_subsample=None, tooltip=None, border_width=None, size=(None, None), s=(None, None), auto_size_button=None, + button_color=None, disabled=False, font=None, bind_return_key=False, focus=False, pad=None, p=None, enable_events=None, + key=None, k=None, visible=True, locale=None, format='%Y-%m-%d %H:%M:%S', begin_at_sunday_plus=0, month_names=None, day_abbreviations=None, + title='Choose Date', + no_titlebar=True, location=(None, None), metadata=None, expand_x=False, expand_y=False): + """ + Button that will show a calendar chooser window. Fills in the target element with result + + :param button_text: text in the button + :type button_text: (str) + :param target: Key or "coordinate" (see docs) of target element + :type target: (int, int) | Any + :param close_when_date_chosen: (Default = True) + :type close_when_date_chosen: bool + :param default_date_m_d_y: Beginning date to show + :type default_date_m_d_y: (int, int or None, int) + :param image_filename: image filename if there is a button image + :type image_filename: image filename if there is a button image + :param image_data: in-RAM image to be displayed on button + :type image_data: in-RAM image to be displayed on button + :param image_size: image size (O.K.) + :type image_size: (Default = (None)) + :param image_subsample: amount to reduce the size of the image + :type image_subsample: amount to reduce the size of the image + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param border_width: width of border around element + :type border_width: width of border around element + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param bind_return_key: (Default = False) If True, this button will appear to be clicked when return key is pressed in other elements such as Input and elements with return key options + :type bind_return_key: bool + :param focus: if focus should be set to this + :type focus: bool + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param locale: defines the locale used to get day names + :type locale: str + :param format: formats result using this strftime format + :type format: str + :param begin_at_sunday_plus: Determines the left-most day in the display. 0=sunday, 1=monday, etc + :type begin_at_sunday_plus: (int) + :param month_names: optional list of month names to use (should be 12 items) + :type month_names: List[str] + :param day_abbreviations: optional list of abbreviations to display as the day of week + :type day_abbreviations: List[str] + :param title: Title shown on the date chooser window + :type title: (str) + :param no_titlebar: if True no titlebar will be shown on the date chooser window + :type no_titlebar: bool + :param location: Location on the screen (x,y) to show the calendar popup window + :type location: (int, int) + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: Anything you want to store along with this button + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + button = Button(button_text=button_text, button_type=BUTTON_TYPE_CALENDAR_CHOOSER, target=target, + image_filename=image_filename, image_data=image_data, image_size=image_size, + image_subsample=image_subsample, border_width=border_width, tooltip=tooltip, size=size, s=s, + auto_size_button=auto_size_button, button_color=button_color, font=font, disabled=disabled, enable_events=enable_events, + bind_return_key=bind_return_key, focus=focus, pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + button.calendar_close_when_chosen = close_when_date_chosen + button.calendar_default_date_M_D_Y = default_date_m_d_y + button.calendar_locale = locale + button.calendar_format = format + button.calendar_no_titlebar = no_titlebar + button.calendar_location = location + button.calendar_begin_at_sunday_plus = begin_at_sunday_plus + button.calendar_month_names = month_names + button.calendar_day_abbreviations = day_abbreviations + button.calendar_title = title + + return button + + +# ------------------------- Calendar Chooser Button lazy function ------------------------- # +def ColorChooserButton(button_text, target=(ThisRow, -1), image_filename=None, image_data=None, image_size=(None, None), + image_subsample=None, tooltip=None, border_width=None, size=(None, None), s=(None, None), auto_size_button=None, + button_color=None, disabled=False, font=None, bind_return_key=False, focus=False, pad=None, p=None, + key=None, k=None, default_color=None, visible=True, metadata=None, expand_x=False, expand_y=False): + """ + + :param button_text: text in the button + :type button_text: (str) + :param target: key or (row,col) target for the button. Note that -1 for column means 1 element to the left of this one. The constant ThisRow is used to indicate the current row. The Button itself is a valid target for some types of button + :type target: str | (int, int) + :type image_filename: (str) + :param image_filename: image filename if there is a button image. GIFs and PNGs only. + :type image_filename: (str) + :param image_data: Raw or Base64 representation of the image to put on button. Choose either filename or data + :type image_data: bytes | str + :param image_size: Size of the image in pixels (width, height) + :type image_size: (int, int) + :param image_subsample: amount to reduce the size of the image. Divides the size by this number. 2=1/2, 3=1/3, 4=1/4, etc + :type image_subsample: (int) + :param tooltip: text, that will appear when mouse hovers over the element + :type tooltip: (str) + :param border_width: width of border around element + :type border_width: (int) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param s: Same as size parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, size will be used + :type s: (int, int) | (None, None) | int + :param auto_size_button: True if button size is determined by button text + :type auto_size_button: (bool) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param disabled: set disable state for element (Default = False) + :type disabled: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param bind_return_key: (Default = False) If True, this button will appear to be clicked when return key is pressed in other elements such as Input and elements with return key options + :type bind_return_key: (bool) + :param focus: Determines if initial focus should go to this element. + :type focus: (bool) + :param pad: Amount of padding to put around element in pixels (left/right, top/bottom) or ((left, right), (top, bottom)) or an int. If an int, then it's converted into a tuple (int, int) + :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param p: Same as pad parameter. It's an alias. If EITHER of them are set, then the one that's set will be used. If BOTH are set, pad will be used + :type p: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int) | int + :param key: key for uniquely identify this element (for window.find_element) + :type key: str | int | tuple | object + :param k: Same as the Key. You can use either k or key. Which ever is set will be used. + :type k: str | int | tuple | object + :param default_color: Color to be sent to tkinter to use as the default color + :type default_color: str + :param visible: set initial visibility state of the Button + :type visible: (bool) + :param metadata: User metadata that can be set to ANYTHING + :type metadata: (Any) + :param expand_x: If True Element will expand in the Horizontal directions + :type expand_x: (bool) + :param expand_y: If True Element will expand in the Vertical directions + :type expand_y: (bool) + :return: returns a button + :rtype: (Button) + """ + button = Button(button_text=button_text, button_type=BUTTON_TYPE_COLOR_CHOOSER, target=target, + image_filename=image_filename, image_data=image_data, image_size=image_size, + image_subsample=image_subsample, border_width=border_width, tooltip=tooltip, size=size, s=s, + auto_size_button=auto_size_button, button_color=button_color, font=font, disabled=disabled, + bind_return_key=bind_return_key, focus=focus, pad=pad, p=p, key=key, k=k, visible=visible, metadata=metadata, expand_x=expand_x, expand_y=expand_y) + button.default_color = default_color + return button + + +##################################### ----- BUTTON Functions ------ ################################################## + +def button_color_to_tuple(color_tuple_or_string, default=(None, None)): + """ + Convert a color tuple or color string into 2 components and returns them as a tuple + (Text Color, Button Background Color) + If None is passed in as the first parameter, then the theme's button color is + returned + + :param color_tuple_or_string: Button color - tuple or a simplied color string with word "on" between color + :type color_tuple_or_string: str | (str, str) + :param default: The 2 colors to use if there is a problem. Otherwise defaults to the theme's button color + :type default: (str, str) + :return: (str | (str, str) + :rtype: str | (str, str) + """ + if default == (None, None): + color_tuple = _simplified_dual_color_to_tuple(color_tuple_or_string, default=theme_button_color()) + elif color_tuple_or_string == COLOR_SYSTEM_DEFAULT: + color_tuple = (COLOR_SYSTEM_DEFAULT, COLOR_SYSTEM_DEFAULT) + else: + color_tuple = _simplified_dual_color_to_tuple(color_tuple_or_string, default=default) + + return color_tuple + + +def _simplified_dual_color_to_tuple(color_tuple_or_string, default=(None, None)): + """ + Convert a color tuple or color string into 2 components and returns them as a tuple + (Text Color, Button Background Color) + If None is passed in as the first parameter, theme_ + + :param color_tuple_or_string: Button color - tuple or a simplied color string with word "on" between color + :type color_tuple_or_string: str | (str, str} | (None, None) + :param default: The 2 colors to use if there is a problem. Otherwise defaults to the theme's button color + :type default: (str, str) + :return: (str | (str, str) + :rtype: str | (str, str) + """ + if color_tuple_or_string is None or color_tuple_or_string == (None, None): + color_tuple_or_string = default + if color_tuple_or_string == COLOR_SYSTEM_DEFAULT: + return (COLOR_SYSTEM_DEFAULT, COLOR_SYSTEM_DEFAULT) + text_color = background_color = COLOR_SYSTEM_DEFAULT + try: + if isinstance(color_tuple_or_string, (tuple, list)): + if len(color_tuple_or_string) >= 2: + text_color = color_tuple_or_string[0] or default[0] + background_color = color_tuple_or_string[1] or default[1] + elif len(color_tuple_or_string) == 1: + background_color = color_tuple_or_string[0] or default[1] + elif isinstance(color_tuple_or_string, str): + color_tuple_or_string = color_tuple_or_string.lower() + split_colors = color_tuple_or_string.split(' on ') + if len(split_colors) >= 2: + text_color = split_colors[0].strip() or default[0] + background_color = split_colors[1].strip() or default[1] + elif len(split_colors) == 1: + split_colors = color_tuple_or_string.split('on') + if len(split_colors) == 1: + text_color, background_color = default[0], split_colors[0].strip() + else: + split_colors = split_colors[0].strip(), split_colors[1].strip() + text_color = split_colors[0] or default[0] + background_color = split_colors[1] or default[1] + # text_color, background_color = color_tuple_or_string, default[1] + else: + text_color, background_color = default + else: + if not SUPPRESS_ERROR_POPUPS: + _error_popup_with_traceback('** Badly formatted dual-color... not a tuple nor string **', color_tuple_or_string) + else: + print('** Badly formatted dual-color... not a tuple nor string **', color_tuple_or_string) + text_color, background_color = default + except Exception as e: + if not SUPPRESS_ERROR_POPUPS: + _error_popup_with_traceback('** Badly formatted button color **', color_tuple_or_string, e) + else: + print('** Badly formatted button color... not a tuple nor string **', color_tuple_or_string, e) + text_color, background_color = default + if isinstance(text_color, int): + text_color = "#%06X" % text_color + if isinstance(background_color, int): + background_color = "#%06X" % background_color + # print('converted button color', color_tuple_or_string, 'to', (text_color, background_color)) + + return (text_color, background_color) + + +##################################### ----- RESULTS ------ ################################################## + +def AddToReturnDictionary(form, element, value): + form.ReturnValuesDictionary[element.Key] = value + # if element.Key is None: + # form.ReturnValuesDictionary[form.DictionaryKeyCounter] = value + # element.Key = form.DictionaryKeyCounter + # form.DictionaryKeyCounter += 1 + # else: + # form.ReturnValuesDictionary[element.Key] = value + + +def AddToReturnList(form, value): + form.ReturnValuesList.append(value) + + +# ----------------------------------------------------------------------------# +# ------- FUNCTION InitializeResults. Sets up form results matrix --------# +def InitializeResults(form): + _BuildResults(form, True, form) + return + + +# ===== Radio Button RadVar encoding and decoding =====# +# ===== The value is simply the row * 1000 + col =====# +def DecodeRadioRowCol(RadValue): + container = RadValue // 100000 + row = RadValue // 1000 + col = RadValue % 1000 + return container, row, col + + +def EncodeRadioRowCol(container, row, col): + RadValue = container * 100000 + row * 1000 + col + return RadValue + + +# ------- FUNCTION BuildResults. Form exiting so build the results to pass back ------- # +# format of return values is +# (Button Pressed, input_values) +def _BuildResults(form, initialize_only, top_level_form): + # Results for elements are: + # TEXT - Nothing + # INPUT - Read value from TK + # Button - Button Text and position as a Tuple + + # Get the initialized results so we don't have to rebuild + # form.DictionaryKeyCounter = 0 + form.ReturnValuesDictionary = {} + form.ReturnValuesList = [] + _BuildResultsForSubform(form, initialize_only, top_level_form) + if not top_level_form.LastButtonClickedWasRealtime: + top_level_form.LastButtonClicked = None + return form.ReturnValues + + +def _BuildResultsForSubform(form, initialize_only, top_level_form): + event = top_level_form.LastButtonClicked + for row_num, row in enumerate(form.Rows): + for col_num, element in enumerate(row): + if element.Key is not None and WRITE_ONLY_KEY in str(element.Key): + continue + value = None + if element.Type == ELEM_TYPE_COLUMN: + element.DictionaryKeyCounter = top_level_form.DictionaryKeyCounter + element.ReturnValuesList = [] + element.ReturnValuesDictionary = {} + _BuildResultsForSubform(element, initialize_only, top_level_form) + for item in element.ReturnValuesList: + AddToReturnList(top_level_form, item) + if element.UseDictionary: + top_level_form.UseDictionary = True + if element.ReturnValues[0] is not None: # if a button was clicked + event = element.ReturnValues[0] + + if element.Type == ELEM_TYPE_FRAME: + element.DictionaryKeyCounter = top_level_form.DictionaryKeyCounter + element.ReturnValuesList = [] + element.ReturnValuesDictionary = {} + _BuildResultsForSubform(element, initialize_only, top_level_form) + for item in element.ReturnValuesList: + AddToReturnList(top_level_form, item) + if element.UseDictionary: + top_level_form.UseDictionary = True + if element.ReturnValues[0] is not None: # if a button was clicked + event = element.ReturnValues[0] + + if element.Type == ELEM_TYPE_PANE: + element.DictionaryKeyCounter = top_level_form.DictionaryKeyCounter + element.ReturnValuesList = [] + element.ReturnValuesDictionary = {} + _BuildResultsForSubform(element, initialize_only, top_level_form) + for item in element.ReturnValuesList: + AddToReturnList(top_level_form, item) + if element.UseDictionary: + top_level_form.UseDictionary = True + if element.ReturnValues[0] is not None: # if a button was clicked + event = element.ReturnValues[0] + + if element.Type == ELEM_TYPE_TAB_GROUP: + element.DictionaryKeyCounter = top_level_form.DictionaryKeyCounter + element.ReturnValuesList = [] + element.ReturnValuesDictionary = {} + _BuildResultsForSubform(element, initialize_only, top_level_form) + for item in element.ReturnValuesList: + AddToReturnList(top_level_form, item) + if element.UseDictionary: + top_level_form.UseDictionary = True + if element.ReturnValues[0] is not None: # if a button was clicked + event = element.ReturnValues[0] + + if element.Type == ELEM_TYPE_TAB: + element.DictionaryKeyCounter = top_level_form.DictionaryKeyCounter + element.ReturnValuesList = [] + element.ReturnValuesDictionary = {} + _BuildResultsForSubform(element, initialize_only, top_level_form) + for item in element.ReturnValuesList: + AddToReturnList(top_level_form, item) + if element.UseDictionary: + top_level_form.UseDictionary = True + if element.ReturnValues[0] is not None: # if a button was clicked + event = element.ReturnValues[0] + + if not initialize_only: + if element.Type == ELEM_TYPE_INPUT_TEXT: + try: + value = element.TKStringVar.get() + except: + value = '' + if not top_level_form.NonBlocking and not element.do_not_clear and not top_level_form.ReturnKeyboardEvents: + element.TKStringVar.set('') + elif element.Type == ELEM_TYPE_INPUT_CHECKBOX: + value = element.TKIntVar.get() + value = (value != 0) + elif element.Type == ELEM_TYPE_INPUT_RADIO: + RadVar = element.TKIntVar.get() + this_rowcol = EncodeRadioRowCol(form.ContainerElemementNumber, row_num, col_num) + # this_rowcol = element.EncodedRadioValue # could use the saved one + value = RadVar == this_rowcol + elif element.Type == ELEM_TYPE_BUTTON: + if top_level_form.LastButtonClicked == element.Key: + event = top_level_form.LastButtonClicked + if element.BType != BUTTON_TYPE_REALTIME: # Do not clear realtime buttons + top_level_form.LastButtonClicked = None + if element.BType == BUTTON_TYPE_CALENDAR_CHOOSER: + # value = None + value = element.calendar_selection + else: + try: + value = element.TKStringVar.get() + except: + value = None + elif element.Type == ELEM_TYPE_INPUT_COMBO: + element = element # type: Combo + # value = element.TKStringVar.get() + try: + if element.TKCombo.current() == -1: # if the current value was not in the original list + value = element.TKCombo.get() + else: + value = element.Values[element.TKCombo.current()] # get value from original list given index + except: + value = '*Exception occurred*' + elif element.Type == ELEM_TYPE_INPUT_OPTION_MENU: + value = element.TKStringVar.get() + elif element.Type == ELEM_TYPE_INPUT_LISTBOX: + try: + items = element.TKListbox.curselection() + value = [element.Values[int(item)] for item in items] + except Exception as e: + value = '' + elif element.Type == ELEM_TYPE_INPUT_SPIN: + try: + value = element.TKStringVar.get() + for v in element.Values: + if str(v) == value: + value = v + break + except: + value = 0 + elif element.Type == ELEM_TYPE_INPUT_SLIDER: + try: + value = float(element.TKScale.get()) + except: + value = 0 + elif element.Type == ELEM_TYPE_INPUT_MULTILINE: + if element.WriteOnly: # if marked as "write only" when created, then don't include with the values being returned + continue + try: + value = element.TKText.get(1.0, tk.END) + if element.rstrip: + value = value.rstrip() + if not top_level_form.NonBlocking and not element.do_not_clear and not top_level_form.ReturnKeyboardEvents: + element.TKText.delete('1.0', tk.END) + except: + value = None + elif element.Type == ELEM_TYPE_TAB_GROUP: + try: + value = element.TKNotebook.tab(element.TKNotebook.index('current'))['text'] + tab_key = element.find_currently_active_tab_key() + # tab_key = element.FindKeyFromTabName(value) + if tab_key is not None: + value = tab_key + except: + value = None + elif element.Type == ELEM_TYPE_TABLE: + value = element.SelectedRows + elif element.Type == ELEM_TYPE_TREE: + value = element.SelectedRows + elif element.Type == ELEM_TYPE_GRAPH: + value = element.ClickPosition + elif element.Type == ELEM_TYPE_MENUBAR: + if element.MenuItemChosen is not None: + event = top_level_form.LastButtonClicked = element.MenuItemChosen + value = element.MenuItemChosen + element.MenuItemChosen = None + elif element.Type == ELEM_TYPE_BUTTONMENU: + element = element # type: ButtonMenu + value = element.MenuItemChosen + if element.part_of_custom_menubar: + if element.MenuItemChosen is not None: + value = event = element.MenuItemChosen + top_level_form.LastButtonClicked = element.MenuItemChosen + if element.custom_menubar_key is not None: + top_level_form.ReturnValuesDictionary[element.custom_menubar_key] = value + element.MenuItemChosen = None + else: + if element.custom_menubar_key not in top_level_form.ReturnValuesDictionary: + top_level_form.ReturnValuesDictionary[element.custom_menubar_key] = None + value = None + else: + element.MenuItemChosen = None + else: + value = None + + # if an input type element, update the results + if element.Type not in ( + ELEM_TYPE_BUTTON, ELEM_TYPE_TEXT, ELEM_TYPE_IMAGE, ELEM_TYPE_OUTPUT, ELEM_TYPE_PROGRESS_BAR, ELEM_TYPE_COLUMN, ELEM_TYPE_FRAME, ELEM_TYPE_SEPARATOR, + ELEM_TYPE_TAB): + if not (element.Type == ELEM_TYPE_BUTTONMENU and element.part_of_custom_menubar): + AddToReturnList(form, value) + AddToReturnDictionary(top_level_form, element, value) + elif (element.Type == ELEM_TYPE_BUTTON and + element.BType == BUTTON_TYPE_COLOR_CHOOSER and + element.Target == (None, None)) or \ + (element.Type == ELEM_TYPE_BUTTON + and element.Key is not None and + (element.BType in (BUTTON_TYPE_SAVEAS_FILE, BUTTON_TYPE_BROWSE_FILE, BUTTON_TYPE_BROWSE_FILES, + BUTTON_TYPE_BROWSE_FOLDER, BUTTON_TYPE_CALENDAR_CHOOSER))): + AddToReturnList(form, value) + AddToReturnDictionary(top_level_form, element, value) + + # if this is a column, then will fail so need to wrap with try + try: + if form.ReturnKeyboardEvents and form.LastKeyboardEvent is not None: + event = form.LastKeyboardEvent + form.LastKeyboardEvent = None + except: + pass + + try: + form.ReturnValuesDictionary.pop(None, None) # clean up dictionary include None was included + except: + pass + + # if no event was found + if not initialize_only and event is None and form == top_level_form: + queued_event_value = form._queued_thread_event_read() + if queued_event_value is not None: + event, value = queued_event_value + AddToReturnList(form, value) + form.ReturnValuesDictionary[event] = value + + if not form.UseDictionary: + form.ReturnValues = event, form.ReturnValuesList + else: + form.ReturnValues = event, form.ReturnValuesDictionary + + return form.ReturnValues + + +def fill_form_with_values(window, values_dict): + """ + Fills a window with values provided in a values dictionary { element_key : new_value } + + :param window: The window object to fill + :type window: (Window) + :param values_dict: A dictionary with element keys as key and value is values parm for Update call + :type values_dict: (Dict[Any, Any]) + :return: None + :rtype: None + """ + + for element_key in values_dict: + try: + window.AllKeysDict[element_key].Update(values_dict[element_key]) + except Exception as e: + print('Problem filling form. Perhaps bad key? This is a suspected bad key: {}'.format(element_key)) + + +def _FindElementWithFocusInSubForm(form): + """ + Searches through a "sub-form" (can be a window or container) for the current element with focus + + :param form: a Window, Column, Frame, or TabGroup (container elements) + :type form: container elements + :return: Element + :rtype: Element | None + """ + for row_num, row in enumerate(form.Rows): + for col_num, element in enumerate(row): + if element.Type == ELEM_TYPE_COLUMN: + matching_elem = _FindElementWithFocusInSubForm(element) + if matching_elem is not None: + return matching_elem + elif element.Type == ELEM_TYPE_FRAME: + matching_elem = _FindElementWithFocusInSubForm(element) + if matching_elem is not None: + return matching_elem + elif element.Type == ELEM_TYPE_TAB_GROUP: + matching_elem = _FindElementWithFocusInSubForm(element) + if matching_elem is not None: + return matching_elem + elif element.Type == ELEM_TYPE_TAB: + matching_elem = _FindElementWithFocusInSubForm(element) + if matching_elem is not None: + return matching_elem + elif element.Type == ELEM_TYPE_PANE: + matching_elem = _FindElementWithFocusInSubForm(element) + if matching_elem is not None: + return matching_elem + elif element.Type == ELEM_TYPE_INPUT_TEXT: + if element.TKEntry is not None: + if element.TKEntry is element.TKEntry.focus_get(): + return element + elif element.Type == ELEM_TYPE_INPUT_MULTILINE: + if element.TKText is not None: + if element.TKText is element.TKText.focus_get(): + return element + elif element.Type == ELEM_TYPE_BUTTON: + if element.TKButton is not None: + if element.TKButton is element.TKButton.focus_get(): + return element + else: # The "Catch All" - if type isn't one of the above, try generic element.Widget + try: + if element.Widget is not None: + if element.Widget is element.Widget.focus_get(): + return element + except: + return None + + return None + + +def AddMenuItem(top_menu, sub_menu_info, element, is_sub_menu=False, skip=False, right_click_menu=False): + """ + Only to be used internally. Not user callable + :param top_menu: ??? + :type top_menu: ??? + :param sub_menu_info: ??? + :type sub_menu_info: + :param element: ??? + :type element: idk_yetReally + :param is_sub_menu: (Default = False) + :type is_sub_menu: (bool) + :param skip: (Default = False) + :type skip: (bool) + + """ + return_val = None + if type(sub_menu_info) is str: + if not is_sub_menu and not skip: + pos = sub_menu_info.find(MENU_SHORTCUT_CHARACTER) + if pos != -1: + if pos < len(MENU_SHORTCUT_CHARACTER) or sub_menu_info[pos - len(MENU_SHORTCUT_CHARACTER)] != "\\": + sub_menu_info = sub_menu_info[:pos] + sub_menu_info[pos + len(MENU_SHORTCUT_CHARACTER):] + if sub_menu_info == '---': + top_menu.add('separator') + else: + try: + item_without_key = sub_menu_info[:sub_menu_info.index(MENU_KEY_SEPARATOR)] + except: + item_without_key = sub_menu_info + + if item_without_key[0] == MENU_DISABLED_CHARACTER: + top_menu.add_command(label=item_without_key[len(MENU_DISABLED_CHARACTER):], underline=pos - 1, + command=lambda: element._MenuItemChosenCallback(sub_menu_info)) + top_menu.entryconfig(item_without_key[len(MENU_DISABLED_CHARACTER):], state='disabled') + else: + top_menu.add_command(label=item_without_key, underline=pos, + command=lambda: element._MenuItemChosenCallback(sub_menu_info)) + else: + i = 0 + while i < (len(sub_menu_info)): + item = sub_menu_info[i] + if i != len(sub_menu_info) - 1: + if type(sub_menu_info[i + 1]) == list: + new_menu = tk.Menu(top_menu, tearoff=element.Tearoff) + # if a right click menu, then get styling from the top-level window + if right_click_menu: + window = element.ParentForm + if window.right_click_menu_background_color not in (COLOR_SYSTEM_DEFAULT, None): + new_menu.config(bg=window.right_click_menu_background_color) + new_menu.config(activeforeground=window.right_click_menu_background_color) + if window.right_click_menu_text_color not in (COLOR_SYSTEM_DEFAULT, None): + new_menu.config(fg=window.right_click_menu_text_color) + new_menu.config(activebackground=window.right_click_menu_text_color) + if window.right_click_menu_disabled_text_color not in (COLOR_SYSTEM_DEFAULT, None): + new_menu.config(disabledforeground=window.right_click_menu_disabled_text_color) + if window.right_click_menu_font is not None: + new_menu.config(font=window.right_click_menu_font) + else: + if element.Font is not None: + new_menu.config(font=element.Font) + if element.BackgroundColor not in (COLOR_SYSTEM_DEFAULT, None): + new_menu.config(bg=element.BackgroundColor) + new_menu.config(activeforeground=element.BackgroundColor) + if element.TextColor not in (COLOR_SYSTEM_DEFAULT, None): + new_menu.config(fg=element.TextColor) + new_menu.config(activebackground=element.TextColor) + if element.DisabledTextColor not in (COLOR_SYSTEM_DEFAULT, None): + new_menu.config(disabledforeground=element.DisabledTextColor) + if element.ItemFont is not None: + new_menu.config(font=element.ItemFont) + return_val = new_menu + pos = sub_menu_info[i].find(MENU_SHORTCUT_CHARACTER) + if pos != -1: + if pos < len(MENU_SHORTCUT_CHARACTER) or sub_menu_info[i][pos - len(MENU_SHORTCUT_CHARACTER)] != "\\": + sub_menu_info[i] = sub_menu_info[i][:pos] + sub_menu_info[i][pos + len(MENU_SHORTCUT_CHARACTER):] + if sub_menu_info[i][0] == MENU_DISABLED_CHARACTER: + top_menu.add_cascade(label=sub_menu_info[i][len(MENU_DISABLED_CHARACTER):], menu=new_menu, + underline=pos, state='disabled') + else: + top_menu.add_cascade(label=sub_menu_info[i], menu=new_menu, underline=pos) + AddMenuItem(new_menu, sub_menu_info[i + 1], element, is_sub_menu=True, right_click_menu=right_click_menu) + i += 1 # skip the next one + else: + AddMenuItem(top_menu, item, element, right_click_menu=right_click_menu) + else: + AddMenuItem(top_menu, item, element, right_click_menu=right_click_menu) + i += 1 + return return_val + + +# 888 888 d8b 888 +# 888 888 Y8P 888 +# 888 888 888 +# 888888 888 888 888 88888b. 888888 .d88b. 888d888 +# 888 888 .88P 888 888 "88b 888 d8P Y8b 888P" +# 888 888888K 888 888 888 888 88888888 888 +# Y88b. 888 "88b 888 888 888 Y88b. Y8b. 888 +# "Y888 888 888 888 888 888 "Y888 "Y8888 888 + + + +# Chr0nic || This is probably *very* bad practice. But it works. Simple, but it works... +class VarHolder(object): + canvas_holder = None + + def __init__(self): + self.canvas_holder = None + + +# Also, to get to the point in the code where each element's widget is created, look for element + "p lacement" (without the space) + + +# ======================== TK CODE STARTS HERE ========================================= # +def _fixed_map(style, style_name, option, highlight_colors=(None, None)): + # Fix for setting text colour for Tkinter 8.6.9 + # From: https://core.tcl.tk/tk/info/509cafafae + + default_map = [elm for elm in style.map("Treeview", query_opt=option) if '!' not in elm[0] and 'selected' not in elm[0]] + custom_map = [elm for elm in style.map(style_name, query_opt=option) if '!' not in elm[0] and 'selected' not in elm[0]] + if option == 'background': + custom_map.append(('selected', highlight_colors[1] if highlight_colors[1] is not None else ALTERNATE_TABLE_AND_TREE_SELECTED_ROW_COLORS[1])) + elif option == 'foreground': + custom_map.append(('selected', highlight_colors[0] if highlight_colors[0] is not None else ALTERNATE_TABLE_AND_TREE_SELECTED_ROW_COLORS[0])) + + new_map = custom_map + default_map + return new_map + +def _add_right_click_menu(element, toplevel_form): + if element.RightClickMenu == MENU_RIGHT_CLICK_DISABLED: + return + if element.RightClickMenu or toplevel_form.RightClickMenu: + menu = element.RightClickMenu or toplevel_form.RightClickMenu + top_menu = tk.Menu(toplevel_form.TKroot, tearoff=toplevel_form.right_click_menu_tearoff, tearoffcommand=element._tearoff_menu_callback) + + if toplevel_form.right_click_menu_background_color not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(bg=toplevel_form.right_click_menu_background_color) + if toplevel_form.right_click_menu_text_color not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(fg=toplevel_form.right_click_menu_text_color) + if toplevel_form.right_click_menu_disabled_text_color not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(disabledforeground=toplevel_form.right_click_menu_disabled_text_color) + if toplevel_form.right_click_menu_font is not None: + top_menu.config(font=toplevel_form.right_click_menu_font) + + if toplevel_form.right_click_menu_selected_colors[0] not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(activeforeground=toplevel_form.right_click_menu_selected_colors[0]) + if toplevel_form.right_click_menu_selected_colors[1] not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(activebackground=toplevel_form.right_click_menu_selected_colors[1]) + AddMenuItem(top_menu, menu[1], element, right_click_menu=True) + element.TKRightClickMenu = top_menu + if (running_mac()): + element.Widget.bind('', element._RightClickMenuCallback) + else: + element.Widget.bind('', element._RightClickMenuCallback) + + +def _change_ttk_theme(style, theme_name): + global ttk_theme_in_use + if theme_name not in style.theme_names(): + _error_popup_with_traceback('You are trying to use TTK theme "{}"'.format(theme_name), + 'This is not legal for your system', + 'The valid themes to choose from are: {}'.format(', '.join(style.theme_names()))) + return False + + style.theme_use(theme_name) + ttk_theme_in_use = theme_name + return True + + +def _make_ttk_style_name(base_style, element, primary_style=False): + Window._counter_for_ttk_widgets += 1 + style_name = str(Window._counter_for_ttk_widgets) + '___' + str(element.Key) + base_style + if primary_style: + element.ttk_style_name = style_name + return style_name + + +def _make_ttk_scrollbar(element, orientation, window): + """ + Creates a ttk scrollbar for elements as they are being added to the layout + + :param element: The element + :type element: (Element) + :param orientation: The orientation vertical ('v') or horizontal ('h') + :type orientation: (str) + :param window: The window containing the scrollbar + :type window: (Window) + """ + + style = ttk.Style() + _change_ttk_theme(style, window.TtkTheme) + if orientation[0].lower() == 'v': + orient = 'vertical' + style_name = _make_ttk_style_name('.Vertical.TScrollbar', element) + # style_name_thumb = _make_ttk_style_name('.Vertical.TScrollbar.thumb', element) + element.vsb_style = style + element.vsb = ttk.Scrollbar(element.element_frame, orient=orient, command=element.Widget.yview, style=style_name) + element.vsb_style_name = style_name + else: + orient = 'horizontal' + style_name = _make_ttk_style_name('.Horizontal.TScrollbar', element) + element.hsb_style = style + element.hsb = ttk.Scrollbar(element.element_frame, orient=orient, command=element.Widget.xview, style=style_name) + element.hsb_style_name = style_name + + # ------------------ Get the colors using heirarchy of element, window, options, settings ------------------ + # Trough Color + if element.ttk_part_overrides.sbar_trough_color is not None: + trough_color = element.ttk_part_overrides.sbar_trough_color + elif window.ttk_part_overrides.sbar_trough_color is not None: + trough_color = window.ttk_part_overrides.sbar_trough_color + elif ttk_part_overrides_from_options.sbar_trough_color is not None: + trough_color = ttk_part_overrides_from_options.sbar_trough_color + else: + trough_color = element.scroll_trough_color + # Relief + if element.ttk_part_overrides.sbar_relief is not None: + scroll_relief = element.ttk_part_overrides.sbar_relief + elif window.ttk_part_overrides.sbar_relief is not None: + scroll_relief = window.ttk_part_overrides.sbar_relief + elif ttk_part_overrides_from_options.sbar_relief is not None: + scroll_relief = ttk_part_overrides_from_options.sbar_relief + else: + scroll_relief = element.scroll_relief + # Frame Color + if element.ttk_part_overrides.sbar_frame_color is not None: + frame_color = element.ttk_part_overrides.sbar_frame_color + elif window.ttk_part_overrides.sbar_frame_color is not None: + frame_color = window.ttk_part_overrides.sbar_frame_color + elif ttk_part_overrides_from_options.sbar_frame_color is not None: + frame_color = ttk_part_overrides_from_options.sbar_frame_color + else: + frame_color = element.scroll_frame_color + # Background Color + if element.ttk_part_overrides.sbar_background_color is not None: + background_color = element.ttk_part_overrides.sbar_background_color + elif window.ttk_part_overrides.sbar_background_color is not None: + background_color = window.ttk_part_overrides.sbar_background_color + elif ttk_part_overrides_from_options.sbar_background_color is not None: + background_color = ttk_part_overrides_from_options.sbar_background_color + else: + background_color = element.scroll_background_color + # Arrow Color + if element.ttk_part_overrides.sbar_arrow_color is not None: + arrow_color = element.ttk_part_overrides.sbar_arrow_color + elif window.ttk_part_overrides.sbar_arrow_color is not None: + arrow_color = window.ttk_part_overrides.sbar_arrow_color + elif ttk_part_overrides_from_options.sbar_arrow_color is not None: + arrow_color = ttk_part_overrides_from_options.sbar_arrow_color + else: + arrow_color = element.scroll_arrow_color + # Arrow Width + if element.ttk_part_overrides.sbar_arrow_width is not None: + arrow_width = element.ttk_part_overrides.sbar_arrow_width + elif window.ttk_part_overrides.sbar_arrow_width is not None: + arrow_width = window.ttk_part_overrides.sbar_arrow_width + elif ttk_part_overrides_from_options.sbar_arrow_width is not None: + arrow_width = ttk_part_overrides_from_options.sbar_arrow_width + else: + arrow_width = element.scroll_arrow_width + # Scroll Width + if element.ttk_part_overrides.sbar_width is not None: + scroll_width = element.ttk_part_overrides.sbar_width + elif window.ttk_part_overrides.sbar_width is not None: + scroll_width = window.ttk_part_overrides.sbar_width + elif ttk_part_overrides_from_options.sbar_width is not None: + scroll_width = ttk_part_overrides_from_options.sbar_width + else: + scroll_width = element.scroll_width + + if trough_color not in (None, COLOR_SYSTEM_DEFAULT): + style.configure(style_name, troughcolor=trough_color) + + if frame_color not in (None, COLOR_SYSTEM_DEFAULT): + style.configure(style_name, framecolor=frame_color) + if frame_color not in (None, COLOR_SYSTEM_DEFAULT): + style.configure(style_name, bordercolor=frame_color) + + if (background_color not in (None, COLOR_SYSTEM_DEFAULT)) and \ + (arrow_color not in (None, COLOR_SYSTEM_DEFAULT)): + style.map(style_name, background=[("selected", background_color), ('active', arrow_color), ('background', background_color), ('!focus', background_color)]) + if (background_color not in (None, COLOR_SYSTEM_DEFAULT)) and \ + (arrow_color not in (None, COLOR_SYSTEM_DEFAULT)): + style.map(style_name, arrowcolor=[("selected", arrow_color), ('active', background_color), ('background', background_color),('!focus', arrow_color)]) + + if scroll_width not in (None, COLOR_SYSTEM_DEFAULT): + style.configure(style_name, width=scroll_width) + if arrow_width not in (None, COLOR_SYSTEM_DEFAULT): + style.configure(style_name, arrowsize=arrow_width) + + if scroll_relief not in (None, COLOR_SYSTEM_DEFAULT): + style.configure(style_name, relief=scroll_relief) + + +# @_timeit +def PackFormIntoFrame(form, containing_frame, toplevel_form): + """ + + :param form: a window class + :type form: (Window) + :param containing_frame: ??? + :type containing_frame: ??? + :param toplevel_form: ??? + :type toplevel_form: (Window) + + """ + + # Old bindings + def yscroll_old(event): + if VarHolder.canvas_holder is None: + return + if VarHolder.canvas_holder.yview() == (0.0, 1.0): + return + try: + if event.num == 5 or event.delta < 0: + VarHolder.canvas_holder.yview_scroll(1, "unit") + elif event.num == 4 or event.delta > 0: + VarHolder.canvas_holder.yview_scroll(-1, "unit") + except: + pass + + def xscroll_old(event): + if VarHolder.canvas_holder is None: + return + if VarHolder.canvas_holder.xview() == (0.0, 1.0): + return + try: + if event.num == 5 or event.delta < 0: + VarHolder.canvas_holder.xview_scroll(1, "unit") + elif event.num == 4 or event.delta > 0: + VarHolder.canvas_holder.xview_scroll(-1, "unit") + except: + pass + + # Chr0nic + def testMouseHook2(em): + combo = em.TKCombo + combo.unbind_class("TCombobox", "") + combo.unbind_class("TCombobox", "") + combo.unbind_class("TCombobox", "") + containing_frame.unbind_all('<4>') + containing_frame.unbind_all('<5>') + containing_frame.unbind_all("") + containing_frame.unbind_all("") + + # Chr0nic + def testMouseUnhook2(em): + containing_frame.bind_all('<4>', yscroll_old, add="+") + containing_frame.bind_all('<5>', yscroll_old, add="+") + containing_frame.bind_all("", yscroll_old, add="+") + containing_frame.bind_all("", xscroll_old, add="+") + + # Chr0nic + def testMouseHook(em): + containing_frame.unbind_all('<4>') + containing_frame.unbind_all('<5>') + containing_frame.unbind_all("") + containing_frame.unbind_all("") + + # Chr0nic + def testMouseUnhook(em): + containing_frame.bind_all('<4>', yscroll_old, add="+") + containing_frame.bind_all('<5>', yscroll_old, add="+") + containing_frame.bind_all("", yscroll_old, add="+") + containing_frame.bind_all("", xscroll_old, add="+") + + def _char_width_in_pixels(font): + return tkinter.font.Font(font=font).measure('A') # single character width + + def _char_height_in_pixels(font): + return tkinter.font.Font(font=font).metrics('linespace') + + def _string_width_in_pixels(font, string): + return tkinter.font.Font(font=font).measure(string) # single character width + + + def _add_grab(element): + + try: + if form.Grab is True or element.Grab is True: + # if something already about to the button, then don't do the grab stuff + if '' not in element.Widget.bind(): + element.Widget.bind("", toplevel_form._StartMoveGrabAnywhere) + element.Widget.bind("", toplevel_form._StopMove) + element.Widget.bind("", toplevel_form._OnMotionGrabAnywhere) + element.ParentRowFrame.bind("", toplevel_form._StartMoveGrabAnywhere) + element.ParentRowFrame.bind("", toplevel_form._StopMove) + element.ParentRowFrame.bind("", toplevel_form._OnMotionGrabAnywhere) + if element.Type == ELEM_TYPE_COLUMN: + element.TKColFrame.canvas.bind("", toplevel_form._StartMoveGrabAnywhere) + element.TKColFrame.canvas.bind("", toplevel_form._StopMove) + element.TKColFrame.canvas.bind("", toplevel_form._OnMotionGrabAnywhere) + except Exception as e: + pass + # print(e) + + def _add_right_click_menu_and_grab(element): + if element.RightClickMenu == MENU_RIGHT_CLICK_DISABLED: + return + if element.Type == ELEM_TYPE_TAB_GROUP: # unless everything disabled, then need to always set a right click menu for tabgroups + if toplevel_form.RightClickMenu == MENU_RIGHT_CLICK_DISABLED: + return + menu = _MENU_RIGHT_CLICK_TABGROUP_DEFAULT + else: + menu = element.RightClickMenu or form.RightClickMenu or toplevel_form.RightClickMenu + + if menu: + top_menu = tk.Menu(toplevel_form.TKroot, tearoff=toplevel_form.right_click_menu_tearoff, tearoffcommand=element._tearoff_menu_callback) + + if toplevel_form.right_click_menu_background_color not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(bg=toplevel_form.right_click_menu_background_color) + if toplevel_form.right_click_menu_text_color not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(fg=toplevel_form.right_click_menu_text_color) + if toplevel_form.right_click_menu_disabled_text_color not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(disabledforeground=toplevel_form.right_click_menu_disabled_text_color) + if toplevel_form.right_click_menu_font is not None: + top_menu.config(font=toplevel_form.right_click_menu_font) + + if toplevel_form.right_click_menu_selected_colors[0] not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(activeforeground=toplevel_form.right_click_menu_selected_colors[0]) + if toplevel_form.right_click_menu_selected_colors[1] not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(activebackground=toplevel_form.right_click_menu_selected_colors[1]) + AddMenuItem(top_menu, menu[1], element, right_click_menu=True) + element.TKRightClickMenu = top_menu + if toplevel_form.RightClickMenu: # if the top level has a right click menu, then setup a callback for the Window itself + if toplevel_form.TKRightClickMenu is None: + toplevel_form.TKRightClickMenu = top_menu + if (running_mac()): + toplevel_form.TKroot.bind('', toplevel_form._RightClickMenuCallback) + else: + toplevel_form.TKroot.bind('', toplevel_form._RightClickMenuCallback) + if (running_mac()): + element.Widget.bind('', element._RightClickMenuCallback) + else: + element.Widget.bind('', element._RightClickMenuCallback) + try: + if element.Type == ELEM_TYPE_COLUMN: + element.TKColFrame.canvas.bind('', element._RightClickMenuCallback) + except: + pass + _add_grab(element) + + def _add_expansion(element, row_should_expand, row_fill_direction): + expand = True + if element.expand_x and element.expand_y: + fill = tk.BOTH + row_fill_direction = tk.BOTH + row_should_expand = True + elif element.expand_x: + fill = tk.X + row_fill_direction = tk.X if row_fill_direction == tk.NONE else tk.BOTH if row_fill_direction == tk.Y else tk.X + elif element.expand_y: + fill = tk.Y + row_fill_direction = tk.Y if row_fill_direction == tk.NONE else tk.BOTH if row_fill_direction == tk.X else tk.Y + row_should_expand = True + else: + fill = tk.NONE + expand = False + return expand, fill, row_should_expand, row_fill_direction + + # --------------------------------------------------------------------------- # + # **************** Use FlexForm to build the tkinter window ********** ----- # + # Building is done row by row. # + # WARNING - You can't use print in this function. If the user has rerouted # + # stdout then there will be an error saying the window isn't finalized # + # --------------------------------------------------------------------------- # + ######################### LOOP THROUGH ROWS ######################### + # *********** ------- Loop through ROWS ------- ***********# + for row_num, flex_row in enumerate(form.Rows): + ######################### LOOP THROUGH ELEMENTS ON ROW ######################### + # *********** ------- Loop through ELEMENTS ------- ***********# + # *********** Make TK Row ***********# + tk_row_frame = tk.Frame(containing_frame) + row_should_expand = False + row_fill_direction = tk.NONE + + if form.ElementJustification is not None: + row_justify = form.ElementJustification + else: + row_justify = 'l' + + for col_num, element in enumerate(flex_row): + element.ParentRowFrame = tk_row_frame + element.element_frame = None # for elements that have a scrollbar too + element.ParentForm = toplevel_form # save the button's parent form object + if toplevel_form.Font and (element.Font == DEFAULT_FONT or element.Font is None): + font = toplevel_form.Font + elif element.Font is not None: + font = element.Font + else: + font = DEFAULT_FONT + element.font_used = font + # ------- Determine Auto-Size setting on a cascading basis ------- # + if element.AutoSizeText is not None: # if element overide + auto_size_text = element.AutoSizeText + elif toplevel_form.AutoSizeText is not None: # if form override + auto_size_text = toplevel_form.AutoSizeText + else: + auto_size_text = DEFAULT_AUTOSIZE_TEXT + element_type = element.Type + # Set foreground color + text_color = element.TextColor + elementpad = element.Pad if element.Pad is not None else toplevel_form.ElementPadding + # element.pad_used = elementpad # store the value used back into the element + # Determine Element size + element_size = element.Size + if (element_size == (None, None) and element_type not in ( + ELEM_TYPE_BUTTON, ELEM_TYPE_BUTTONMENU)): # user did not specify a size + element_size = toplevel_form.DefaultElementSize + elif (element_size == (None, None) and element_type in (ELEM_TYPE_BUTTON, ELEM_TYPE_BUTTONMENU)): + element_size = toplevel_form.DefaultButtonElementSize + else: + auto_size_text = False # if user has specified a size then it shouldn't autosize + + border_depth = toplevel_form.BorderDepth if toplevel_form.BorderDepth is not None else DEFAULT_BORDER_WIDTH + try: + if element.BorderWidth is not None: + border_depth = element.BorderWidth + except: + pass + + # ------------------------- COLUMN placement element ------------------------- # + if element_type == ELEM_TYPE_COLUMN: + element = element # type: Column + # ----------------------- SCROLLABLE Column ---------------------- + if element.Scrollable: + element.Widget = element.TKColFrame = TkScrollableFrame(tk_row_frame, element.VerticalScrollOnly, element, toplevel_form) # do not use yet! not working + PackFormIntoFrame(element, element.TKColFrame.TKFrame, toplevel_form) + element.TKColFrame.TKFrame.update() + if element.Size == (None, None): # if no size specified, use column width x column height/2 + element.TKColFrame.canvas.config(width=element.TKColFrame.TKFrame.winfo_reqwidth() // element.size_subsample_width, + height=element.TKColFrame.TKFrame.winfo_reqheight() // element.size_subsample_height) + else: + element.TKColFrame.canvas.config(width=element.TKColFrame.TKFrame.winfo_reqwidth() // element.size_subsample_width, + height=element.TKColFrame.TKFrame.winfo_reqheight() // element.size_subsample_height) + if None not in (element.Size[0], element.Size[1]): + element.TKColFrame.canvas.config(width=element.Size[0], height=element.Size[1]) + elif element.Size[1] is not None: + element.TKColFrame.canvas.config(height=element.Size[1]) + elif element.Size[0] is not None: + element.TKColFrame.canvas.config(width=element.Size[0]) + if not element.BackgroundColor in (None, COLOR_SYSTEM_DEFAULT): + element.TKColFrame.canvas.config(background=element.BackgroundColor) + element.TKColFrame.TKFrame.config(background=element.BackgroundColor, borderwidth=0, highlightthickness=0) + element.TKColFrame.config(background=element.BackgroundColor, borderwidth=0, + highlightthickness=0) + # ----------------------- PLAIN Column ---------------------- + else: + if element.Size != (None, None): + element.Widget = element.TKColFrame = TkFixedFrame(tk_row_frame) + PackFormIntoFrame(element, element.TKColFrame.TKFrame, toplevel_form) + element.TKColFrame.TKFrame.update() + if None not in (element.Size[0], element.Size[1]): + element.TKColFrame.canvas.config(width=element.Size[0], height=element.Size[1]) + elif element.Size[1] is not None: + element.TKColFrame.canvas.config(height=element.Size[1]) + elif element.Size[0] is not None: + element.TKColFrame.canvas.config(width=element.Size[0]) + if not element.BackgroundColor in (None, COLOR_SYSTEM_DEFAULT): + element.TKColFrame.canvas.config(background=element.BackgroundColor) + element.TKColFrame.TKFrame.config(background=element.BackgroundColor, borderwidth=0, highlightthickness=0) + else: + element.Widget = element.TKColFrame = tk.Frame(tk_row_frame) + PackFormIntoFrame(element, element.TKColFrame, toplevel_form) + if element.BackgroundColor not in (None, COLOR_SYSTEM_DEFAULT): + element.TKColFrame.config(background=element.BackgroundColor, borderwidth=0, highlightthickness=0) + + if element.Justification is None: + pass + elif element.Justification.lower().startswith('l'): + row_justify = 'l' + elif element.Justification.lower().startswith('c'): + row_justify = 'c' + elif element.Justification.lower().startswith('r'): + row_justify = 'r' + + # anchor=tk.NW + # side = tk.LEFT + # row_justify = element.Justification + + # element.Widget = element.TKColFrame + + expand = True + if element.expand_x and element.expand_y: + fill = tk.BOTH + row_fill_direction = tk.BOTH + row_should_expand = True + elif element.expand_x: + fill = tk.X + row_fill_direction = tk.X + elif element.expand_y: + fill = tk.Y + row_fill_direction = tk.Y + row_should_expand = True + else: + fill = tk.NONE + expand = False + + if element.VerticalAlignment is not None: + anchor = tk.CENTER # Default to center if a bad choice is made + + if element.VerticalAlignment.lower().startswith('t'): + anchor = tk.N + if element.VerticalAlignment.lower().startswith('c'): + anchor = tk.CENTER + if element.VerticalAlignment.lower().startswith('b'): + anchor = tk.S + element.TKColFrame.pack(side=tk.LEFT, anchor=anchor, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + else: + element.TKColFrame.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + + # element.TKColFrame.pack(side=side, padx=elementpad[0], pady=elementpad[1], expand=True, fill='both') + if element.visible is False: + element._pack_forget_save_settings() + # element.TKColFrame.pack_forget() + + _add_right_click_menu_and_grab(element) + # if element.Grab: + # element._grab_anywhere_on() + # row_should_expand = True + # ------------------------- Pane placement element ------------------------- # + if element_type == ELEM_TYPE_PANE: + bd = element.BorderDepth if element.BorderDepth is not None else border_depth + element.PanedWindow = element.Widget = tk.PanedWindow(tk_row_frame, + orient=tk.VERTICAL if element.Orientation.startswith( + 'v') else tk.HORIZONTAL, + borderwidth=bd, + bd=bd, + ) + if element.Relief is not None: + element.PanedWindow.configure(relief=element.Relief) + element.PanedWindow.configure(handlesize=element.HandleSize) + if element.ShowHandle: + element.PanedWindow.config(showhandle=True) + if element.Size != (None, None): + element.PanedWindow.config(width=element.Size[0], height=element.Size[1]) + if element.BackgroundColor is not None and element.BackgroundColor != COLOR_SYSTEM_DEFAULT: + element.PanedWindow.configure(background=element.BackgroundColor) + for pane in element.PaneList: + pane.Widget = pane.TKColFrame = tk.Frame(element.PanedWindow) + pane.ParentPanedWindow = element.PanedWindow + PackFormIntoFrame(pane, pane.TKColFrame, toplevel_form) + if pane.visible: + element.PanedWindow.add(pane.TKColFrame) + if pane.BackgroundColor != COLOR_SYSTEM_DEFAULT and pane.BackgroundColor is not None: + pane.TKColFrame.configure(background=pane.BackgroundColor, + highlightbackground=pane.BackgroundColor, + highlightcolor=pane.BackgroundColor) + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + element.PanedWindow.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + # element.PanedWindow.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=True, fill='both') + if element.visible is False: + element._pack_forget_save_settings() + # element.PanedWindow.pack_forget() + # ------------------------- TEXT placement element ------------------------- # + elif element_type == ELEM_TYPE_TEXT: + # auto_size_text = element.AutoSizeText + element = element # type: Text + display_text = element.DisplayText # text to display + if auto_size_text is False: + width, height = element_size + else: + width, height = None, None + + # ---===--- LABEL widget create and place --- # + element = element # type: Text + bd = element.BorderWidth if element.BorderWidth is not None else border_depth + stringvar = tk.StringVar() + element.TKStringVar = stringvar + stringvar.set(str(display_text)) + if auto_size_text: + width = 0 + if element.Justification is not None: + justification = element.Justification + elif toplevel_form.TextJustification is not None: + justification = toplevel_form.TextJustification + else: + justification = DEFAULT_TEXT_JUSTIFICATION + justify = tk.LEFT if justification.startswith('l') else tk.CENTER if justification.startswith('c') else tk.RIGHT + anchor = tk.NW if justification.startswith('l') else tk.N if justification.startswith('c') else tk.NE + tktext_label = element.Widget = tk.Label(tk_row_frame, textvariable=stringvar, width=width, + height=height, justify=justify, bd=bd, font=font) + # Set wrap-length for text (in PIXELS) == PAIN IN THE ASS + wraplen = tktext_label.winfo_reqwidth() # width of widget in Pixels + if auto_size_text or (not auto_size_text and height == 1): # if just 1 line high, ensure no wrap happens + wraplen = 0 + tktext_label.configure(anchor=anchor, wraplen=wraplen) # set wrap to width of widget + if element.Relief is not None: + tktext_label.configure(relief=element.Relief) + if element.BackgroundColor is not None and element.BackgroundColor != COLOR_SYSTEM_DEFAULT: + tktext_label.configure(background=element.BackgroundColor) + if element.TextColor != COLOR_SYSTEM_DEFAULT and element.TextColor is not None: + tktext_label.configure(fg=element.TextColor) + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + tktext_label.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + if element.visible is False: + element._pack_forget_save_settings() + # tktext_label.pack_forget() + element.TKText = tktext_label + if element.ClickSubmits: + tktext_label.bind('', element._TextClickedHandler) + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element.TKText, text=element.Tooltip, timeout=DEFAULT_TOOLTIP_TIME) + _add_right_click_menu_and_grab(element) + if element.Grab: + element._grab_anywhere_on() + if element.Key == var_eeUSKe: + element.set_cursor('hand1') + # ------------------------- BUTTON placement element non-ttk version ------------------------- # + elif (element_type == ELEM_TYPE_BUTTON and element.UseTtkButtons is False) or \ + (element_type == ELEM_TYPE_BUTTON and element.UseTtkButtons is not True and toplevel_form.UseTtkButtons is not True): + element = element # type: Button + element.UseTtkButtons = False # indicate that ttk button was not used + stringvar = tk.StringVar() + element.TKStringVar = stringvar + element.Location = (row_num, col_num) + btext = element.ButtonText + btype = element.BType + if element.AutoSizeButton is not None: + auto_size = element.AutoSizeButton + else: + auto_size = toplevel_form.AutoSizeButtons + if auto_size is False or element.Size[0] is not None: + width, height = element_size + else: + width = 0 + height = toplevel_form.DefaultButtonElementSize[1] + if element.ButtonColor != (None, None) and element.ButtonColor != DEFAULT_BUTTON_COLOR: + bc = element.ButtonColor + elif toplevel_form.ButtonColor != (None, None) and toplevel_form.ButtonColor != DEFAULT_BUTTON_COLOR: + bc = toplevel_form.ButtonColor + else: + bc = DEFAULT_BUTTON_COLOR + + bd = element.BorderWidth + pos = -1 + if DEFAULT_USE_BUTTON_SHORTCUTS is True: + pos = btext.find(MENU_SHORTCUT_CHARACTER) + if pos != -1: + if pos < len(MENU_SHORTCUT_CHARACTER) or btext[pos - len(MENU_SHORTCUT_CHARACTER)] != "\\": + btext = btext[:pos] + btext[pos + len(MENU_SHORTCUT_CHARACTER):] + else: + btext = btext.replace('\\'+MENU_SHORTCUT_CHARACTER, MENU_SHORTCUT_CHARACTER) + pos = -1 + tkbutton = element.Widget = tk.Button(tk_row_frame, text=btext, width=width, height=height, justify=tk.CENTER, bd=bd, font=font) + if pos != -1: + tkbutton.config(underline=pos) + try: + if btype != BUTTON_TYPE_REALTIME: + tkbutton.config( command=element.ButtonCallBack) + + else: + tkbutton.bind('', element.ButtonReleaseCallBack) + tkbutton.bind('', element.ButtonPressCallBack) + if bc != (None, None) and COLOR_SYSTEM_DEFAULT not in bc: + tkbutton.config(foreground=bc[0], background=bc[1]) + else: + if bc[0] != COLOR_SYSTEM_DEFAULT: + tkbutton.config(foreground=bc[0]) + if bc[1] != COLOR_SYSTEM_DEFAULT: + tkbutton.config(background=bc[1]) + except Exception as e: + _error_popup_with_traceback('Button has a problem....', + 'The traceback information will not show the line in your layout with the problem, but it does tell you which window.', + 'Error {}'.format(e), + # 'Button Text: {}'.format(btext), + # 'Button key: {}'.format(element.Key), + # 'Color string: {}'.format(bc), + "Parent Window's Title: {}".format(toplevel_form.Title)) + + if bd == 0 and not running_mac(): + tkbutton.config(relief=tk.FLAT) + + element.TKButton = tkbutton # not used yet but save the TK button in case + if elementpad[0] == 0 or elementpad[1] == 0: + tkbutton.config(highlightthickness=0) + + ## -------------- TK Button With Image -------------- ## + if element.ImageFilename: # if button has an image on it + tkbutton.config(highlightthickness=0) + try: + photo = tk.PhotoImage(file=element.ImageFilename) + if element.ImageSubsample: + photo = photo.subsample(element.ImageSubsample) + if element.zoom: + photo = photo.zoom(element.zoom) + if element.ImageSize != (None, None): + width, height = element.ImageSize + else: + width, height = photo.width(), photo.height() + except Exception as e: + _error_popup_with_traceback('Button Element error {}'.format(e), 'Image filename: {}'.format(element.ImageFilename), + 'NOTE - file format must be PNG or GIF!', + 'Button element key: {}'.format(element.Key), + "Parent Window's Title: {}".format(toplevel_form.Title)) + tkbutton.config(image=photo, compound=tk.CENTER, width=width, height=height) + tkbutton.image = photo + if element.ImageData: # if button has an image on it + tkbutton.config(highlightthickness=0) + try: + photo = tk.PhotoImage(data=element.ImageData) + if element.ImageSubsample: + photo = photo.subsample(element.ImageSubsample) + if element.zoom: + photo = photo.zoom(element.zoom) + if element.ImageSize != (None, None): + width, height = element.ImageSize + else: + width, height = photo.width(), photo.height() + tkbutton.config(image=photo, compound=tk.CENTER, width=width, height=height) + tkbutton.image = photo + except Exception as e: + _error_popup_with_traceback('Button Element error {}'.format(e), + 'Problem using BASE64 Image data Image Susample', + 'Buton element key: {}'.format(element.Key), + "Parent Window's Title: {}".format(toplevel_form.Title)) + + if width != 0: + wraplen = width * _char_width_in_pixels(font) + tkbutton.configure(wraplength=wraplen) # set wrap to width of widget + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + + tkbutton.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + if element.visible is False: + element._pack_forget_save_settings() + # tkbutton.pack_forget() + if element.BindReturnKey: + element.TKButton.bind('', element._ReturnKeyHandler) + if element.Focus is True or (toplevel_form.UseDefaultFocus and not toplevel_form.FocusSet): + toplevel_form.FocusSet = True + element.TKButton.bind('', element._ReturnKeyHandler) + element.TKButton.focus_set() + toplevel_form.TKroot.focus_force() + if element.Disabled is True: + element.TKButton['state'] = 'disabled' + if element.DisabledButtonColor != (None, None) and element.DisabledButtonColor != (COLOR_SYSTEM_DEFAULT, COLOR_SYSTEM_DEFAULT): + if element.DisabledButtonColor[0] not in (None, COLOR_SYSTEM_DEFAULT): + element.TKButton['disabledforeground'] = element.DisabledButtonColor[0] + if element.MouseOverColors[1] not in (COLOR_SYSTEM_DEFAULT, None): + tkbutton.config(activebackground=element.MouseOverColors[1]) + if element.MouseOverColors[0] not in (COLOR_SYSTEM_DEFAULT, None): + tkbutton.config(activeforeground=element.MouseOverColors[0]) + + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element.TKButton, text=element.Tooltip, + timeout=DEFAULT_TOOLTIP_TIME) + try: + if element.HighlightColors[1] != COLOR_SYSTEM_DEFAULT: + tkbutton.config(highlightbackground=element.HighlightColors[1]) + if element.HighlightColors[0] != COLOR_SYSTEM_DEFAULT: + tkbutton.config(highlightcolor=element.HighlightColors[0]) + except Exception as e: + _error_popup_with_traceback('Button Element error {}'.format(e), + 'Button element key: {}'.format(element.Key), + 'Button text: {}'.format(btext), + 'Has a bad highlight color {}'.format(element.HighlightColors), + "Parent Window's Title: {}".format(toplevel_form.Title)) + # print('Button with text: ', btext, 'has a bad highlight color', element.HighlightColors) + _add_right_click_menu_and_grab(element) + + # ------------------------- BUTTON placement element ttk version ------------------------- # + elif element_type == ELEM_TYPE_BUTTON: + element = element # type: Button + element.UseTtkButtons = True # indicate that ttk button was used + stringvar = tk.StringVar() + element.TKStringVar = stringvar + element.Location = (row_num, col_num) + btext = element.ButtonText + pos = -1 + if DEFAULT_USE_BUTTON_SHORTCUTS is True: + pos = btext.find(MENU_SHORTCUT_CHARACTER) + if pos != -1: + if pos < len(MENU_SHORTCUT_CHARACTER) or btext[pos - len(MENU_SHORTCUT_CHARACTER)] != "\\": + btext = btext[:pos] + btext[pos + len(MENU_SHORTCUT_CHARACTER):] + else: + btext = btext.replace('\\'+MENU_SHORTCUT_CHARACTER, MENU_SHORTCUT_CHARACTER) + pos = -1 + btype = element.BType + if element.AutoSizeButton is not None: + auto_size = element.AutoSizeButton + else: + auto_size = toplevel_form.AutoSizeButtons + if auto_size is False or element.Size[0] is not None: + width, height = element_size + else: + width = 0 + height = toplevel_form.DefaultButtonElementSize[1] + if element.ButtonColor != (None, None) and element.ButtonColor != COLOR_SYSTEM_DEFAULT: + bc = element.ButtonColor + elif toplevel_form.ButtonColor != (None, None) and toplevel_form.ButtonColor != COLOR_SYSTEM_DEFAULT: + bc = toplevel_form.ButtonColor + else: + bc = DEFAULT_BUTTON_COLOR + bd = element.BorderWidth + tkbutton = element.Widget = ttk.Button(tk_row_frame, text=btext, width=width) + if pos != -1: + tkbutton.config(underline=pos) + if btype != BUTTON_TYPE_REALTIME: + tkbutton.config(command=element.ButtonCallBack) + else: + tkbutton.bind('', element.ButtonReleaseCallBack) + tkbutton.bind('', element.ButtonPressCallBack) + style_name = _make_ttk_style_name('.TButton', element, primary_style=True) + button_style = ttk.Style() + element.ttk_style = button_style + _change_ttk_theme(button_style, toplevel_form.TtkTheme) + button_style.configure(style_name, font=font) + + if bc != (None, None) and COLOR_SYSTEM_DEFAULT not in bc: + button_style.configure(style_name, foreground=bc[0], background=bc[1]) + elif bc[0] != COLOR_SYSTEM_DEFAULT: + button_style.configure(style_name, foreground=bc[0]) + elif bc[1] != COLOR_SYSTEM_DEFAULT: + button_style.configure(style_name, background=bc[1]) + + if bd == 0 and not running_mac(): + button_style.configure(style_name, relief=tk.FLAT) + button_style.configure(style_name, borderwidth=0) + else: + button_style.configure(style_name, borderwidth=bd) + button_style.configure(style_name, justify=tk.CENTER) + + if element.MouseOverColors[1] not in (COLOR_SYSTEM_DEFAULT, None): + button_style.map(style_name, background=[('active', element.MouseOverColors[1])]) + if element.MouseOverColors[0] not in (COLOR_SYSTEM_DEFAULT, None): + button_style.map(style_name, foreground=[('active', element.MouseOverColors[0])]) + + if element.DisabledButtonColor[0] not in (COLOR_SYSTEM_DEFAULT, None): + button_style.map(style_name, foreground=[('disabled', element.DisabledButtonColor[0])]) + if element.DisabledButtonColor[1] not in (COLOR_SYSTEM_DEFAULT, None): + button_style.map(style_name, background=[('disabled', element.DisabledButtonColor[1])]) + + if height > 1: + button_style.configure(style_name, padding=height * _char_height_in_pixels(font)) # should this be height instead? + if width != 0: + wraplen = width * _char_width_in_pixels(font) # width of widget in Pixels + button_style.configure(style_name, wraplength=wraplen) # set wrap to width of widget + + ## -------------- TTK Button With Image -------------- ## + if element.ImageFilename: # if button has an image on it + button_style.configure(style_name, borderwidth=0) + # tkbutton.configure(highlightthickness=0) + photo = tk.PhotoImage(file=element.ImageFilename) + if element.ImageSubsample: + photo = photo.subsample(element.ImageSubsample) + if element.zoom: + photo = photo.zoom(element.zoom) + if element.ImageSize != (None, None): + width, height = element.ImageSize + else: + width, height = photo.width(), photo.height() + button_style.configure(style_name, image=photo, compound=tk.CENTER, width=width, height=height) + tkbutton.image = photo + if element.ImageData: # if button has an image on it + # tkbutton.configure(highlightthickness=0) + button_style.configure(style_name, borderwidth=0) + + photo = tk.PhotoImage(data=element.ImageData) + if element.ImageSubsample: + photo = photo.subsample(element.ImageSubsample) + if element.zoom: + photo = photo.zoom(element.zoom) + if element.ImageSize != (None, None): + width, height = element.ImageSize + else: + width, height = photo.width(), photo.height() + button_style.configure(style_name, image=photo, compound=tk.CENTER, width=width, height=height) + # tkbutton.configure(image=photo, compound=tk.CENTER, width=width, height=height) + tkbutton.image = photo + + element.TKButton = tkbutton # not used yet but save the TK button in case + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + tkbutton.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + if element.visible is False: + element._pack_forget_save_settings() + # tkbutton.pack_forget() + if element.BindReturnKey: + element.TKButton.bind('', element._ReturnKeyHandler) + if element.Focus is True or (toplevel_form.UseDefaultFocus and not toplevel_form.FocusSet): + toplevel_form.FocusSet = True + element.TKButton.bind('', element._ReturnKeyHandler) + element.TKButton.focus_set() + toplevel_form.TKroot.focus_force() + if element.Disabled is True: + element.TKButton['state'] = 'disabled' + + tkbutton.configure(style=style_name) # IMPORTANT! Apply the style to the button! + _add_right_click_menu_and_grab(element) + + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element.TKButton, text=element.Tooltip, + timeout=DEFAULT_TOOLTIP_TIME) + # ------------------------- BUTTONMENU placement element ------------------------- # + elif element_type == ELEM_TYPE_BUTTONMENU: + element = element # type: ButtonMenu + element.Location = (row_num, col_num) + btext = element.ButtonText + if element.AutoSizeButton is not None: + auto_size = element.AutoSizeButton + else: + auto_size = toplevel_form.AutoSizeButtons + if auto_size is False or element.Size[0] is not None: + width, height = element_size + else: + width = 0 + height = toplevel_form.DefaultButtonElementSize[1] + if element.ButtonColor != (None, None) and element.ButtonColor != DEFAULT_BUTTON_COLOR: + bc = element.ButtonColor + elif toplevel_form.ButtonColor != (None, None) and toplevel_form.ButtonColor != DEFAULT_BUTTON_COLOR: + bc = toplevel_form.ButtonColor + else: + bc = DEFAULT_BUTTON_COLOR + bd = element.BorderWidth + if element.ItemFont is None: + element.ItemFont = font + tkbutton = element.Widget = tk.Menubutton(tk_row_frame, text=btext, width=width, height=height, justify=tk.LEFT, bd=bd, font=font) + element.TKButtonMenu = tkbutton + if bc != (None, None) and bc != COLOR_SYSTEM_DEFAULT and bc[1] != COLOR_SYSTEM_DEFAULT: + tkbutton.config(foreground=bc[0], background=bc[1]) + tkbutton.config(activebackground=bc[0]) + tkbutton.config(activeforeground=bc[1]) + elif bc[0] != COLOR_SYSTEM_DEFAULT: + tkbutton.config(foreground=bc[0]) + tkbutton.config(activebackground=bc[0]) + if bd == 0 and not running_mac(): + tkbutton.config(relief=RELIEF_FLAT) + elif bd != 0: + tkbutton.config(relief=RELIEF_RAISED) + + element.TKButton = tkbutton # not used yet but save the TK button in case + wraplen = tkbutton.winfo_reqwidth() # width of widget in Pixels + if element.ImageFilename: # if button has an image on it + photo = tk.PhotoImage(file=element.ImageFilename) + if element.ImageSubsample: + photo = photo.subsample(element.ImageSubsample) + if element.zoom: + photo = photo.zoom(element.zoom) + if element.ImageSize != (None, None): + width, height = element.ImageSize + else: + width, height = photo.width(), photo.height() + tkbutton.config(image=photo, compound=tk.CENTER, width=width, height=height) + tkbutton.image = photo + if element.ImageData: # if button has an image on it + photo = tk.PhotoImage(data=element.ImageData) + if element.ImageSubsample: + photo = photo.subsample(element.ImageSubsample) + if element.zoom: + photo = photo.zoom(element.zoom) + if element.ImageSize != (None, None): + width, height = element.ImageSize + else: + width, height = photo.width(), photo.height() + tkbutton.config(image=photo, compound=tk.CENTER, width=width, height=height) + tkbutton.image = photo + if width != 0: + tkbutton.configure(wraplength=wraplen + 10) # set wrap to width of widget + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + tkbutton.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + + menu_def = element.MenuDefinition + + element.TKMenu = top_menu = tk.Menu(tkbutton, tearoff=element.Tearoff, font=element.ItemFont, tearoffcommand=element._tearoff_menu_callback) + + if element.BackgroundColor not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(bg=element.BackgroundColor) + top_menu.config(activeforeground=element.BackgroundColor) + if element.TextColor not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(fg=element.TextColor) + top_menu.config(activebackground=element.TextColor) + if element.DisabledTextColor not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(disabledforeground=element.DisabledTextColor) + if element.ItemFont is not None: + top_menu.config(font=element.ItemFont) + + AddMenuItem(top_menu, menu_def[1], element) + if elementpad[0] == 0 or elementpad[1] == 0: + tkbutton.config(highlightthickness=0) + tkbutton.configure(menu=top_menu) + element.TKMenu = top_menu + if element.visible is False: + element._pack_forget_save_settings() + # tkbutton.pack_forget() + if element.Disabled == True: + element.TKButton['state'] = 'disabled' + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element.TKButton, text=element.Tooltip, timeout=DEFAULT_TOOLTIP_TIME) + + # ------------------------- INPUT placement element ------------------------- # + elif element_type == ELEM_TYPE_INPUT_TEXT: + element = element # type: InputText + default_text = element.DefaultText + element.TKStringVar = tk.StringVar() + element.TKStringVar.set(default_text) + show = element.PasswordCharacter if element.PasswordCharacter else "" + bd = border_depth + if element.Justification is not None: + justification = element.Justification + else: + justification = DEFAULT_TEXT_JUSTIFICATION + justify = tk.LEFT if justification.startswith('l') else tk.CENTER if justification.startswith('c') else tk.RIGHT + # anchor = tk.NW if justification == 'left' else tk.N if justification == 'center' else tk.NE + element.TKEntry = element.Widget = tk.Entry(tk_row_frame, width=element_size[0], + textvariable=element.TKStringVar, bd=bd, + font=font, show=show, justify=justify) + if element.ChangeSubmits: + element.TKEntry.bind('', element._KeyboardHandler) + element.TKEntry.bind('', element._ReturnKeyHandler) + + if element.BackgroundColor not in (None, COLOR_SYSTEM_DEFAULT): + element.TKEntry.configure(background=element.BackgroundColor, selectforeground=element.BackgroundColor) + + if text_color not in (None, COLOR_SYSTEM_DEFAULT): + element.TKEntry.configure(fg=text_color, selectbackground=text_color) + element.TKEntry.config(insertbackground=text_color) + if element.selected_background_color not in (None, COLOR_SYSTEM_DEFAULT): + element.TKEntry.configure(selectbackground=element.selected_background_color) + if element.selected_text_color not in (None, COLOR_SYSTEM_DEFAULT): + element.TKEntry.configure(selectforeground=element.selected_text_color) + if element.disabled_readonly_background_color not in (None, COLOR_SYSTEM_DEFAULT): + element.TKEntry.config(readonlybackground=element.disabled_readonly_background_color) + if element.disabled_readonly_text_color not in (None, COLOR_SYSTEM_DEFAULT) and element.Disabled: + element.TKEntry.config(fg=element.disabled_readonly_text_color) + + element.Widget.config(highlightthickness=0) + # element.pack_keywords = {'side':tk.LEFT, 'padx':elementpad[0], 'pady':elementpad[1], 'expand':False, 'fill':tk.NONE } + # element.TKEntry.pack(**element.pack_keywords) + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + element.TKEntry.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + if element.visible is False: + element._pack_forget_save_settings() + # element.TKEntry.pack_forget() + if element.Focus is True or (toplevel_form.UseDefaultFocus and not toplevel_form.FocusSet): + toplevel_form.FocusSet = True + element.TKEntry.focus_set() + if element.Disabled: + element.TKEntry['state'] = 'readonly' if element.UseReadonlyForDisable else 'disabled' + if element.ReadOnly: + element.TKEntry['state'] = 'readonly' + + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element.TKEntry, text=element.Tooltip, timeout=DEFAULT_TOOLTIP_TIME) + _add_right_click_menu_and_grab(element) + + # row_should_expand = True + + # ------------------------- COMBO placement element ------------------------- # + elif element_type == ELEM_TYPE_INPUT_COMBO: + element = element # type: Combo + max_line_len = max([len(str(l)) for l in element.Values]) if len(element.Values) else 0 + if auto_size_text is False: + width = element_size[0] + else: + width = max_line_len + 1 + element.TKStringVar = tk.StringVar() + style_name = _make_ttk_style_name('.TCombobox', element, primary_style=True) + combostyle = ttk.Style() + element.ttk_style = combostyle + _change_ttk_theme(combostyle, toplevel_form.TtkTheme) + + # Creates a unique name for each field element(Sure there is a better way to do this) + # unique_field = _make_ttk_style_name('.TCombobox.field', element) + + # Set individual widget options + try: + if element.TextColor not in (None, COLOR_SYSTEM_DEFAULT): + combostyle.configure(style_name, foreground=element.TextColor) + combostyle.configure(style_name, selectbackground=element.TextColor) + combostyle.configure(style_name, insertcolor=element.TextColor) + combostyle.map(style_name, fieldforeground=[('readonly', element.TextColor)]) + if element.BackgroundColor not in (None, COLOR_SYSTEM_DEFAULT): + combostyle.configure(style_name, selectforeground=element.BackgroundColor) + combostyle.map(style_name, fieldbackground=[('readonly', element.BackgroundColor)]) + combostyle.configure(style_name, fieldbackground=element.BackgroundColor) + + if element.button_arrow_color not in (None, COLOR_SYSTEM_DEFAULT): + combostyle.configure(style_name, arrowcolor=element.button_arrow_color) + if element.button_background_color not in (None, COLOR_SYSTEM_DEFAULT): + combostyle.configure(style_name, background=element.button_background_color) + if element.Readonly is True: + if element.TextColor not in (None, COLOR_SYSTEM_DEFAULT): + combostyle.configure(style_name, selectforeground=element.TextColor) + if element.BackgroundColor not in (None, COLOR_SYSTEM_DEFAULT): + combostyle.configure(style_name, selectbackground=element.BackgroundColor) + + + except Exception as e: + _error_popup_with_traceback('Combo Element error {}'.format(e), + 'Combo element key: {}'.format(element.Key), + 'One of your colors is bad. Check the text, background, button background and button arrow colors', + "Parent Window's Title: {}".format(toplevel_form.Title)) + + # Strange code that is needed to set the font for the drop-down list + element._dropdown_newfont = tkinter.font.Font(font=font) + tk_row_frame.option_add("*TCombobox*Listbox*Font", element._dropdown_newfont) + + element.TKCombo = element.Widget = ttk.Combobox(tk_row_frame, width=width, textvariable=element.TKStringVar, font=font, style=style_name) + + # make tcl call to deal with colors for the drop-down formatting + try: + if element.BackgroundColor not in (None, COLOR_SYSTEM_DEFAULT) and \ + element.TextColor not in (None, COLOR_SYSTEM_DEFAULT): + element.Widget.tk.eval( + '[ttk::combobox::PopdownWindow {}].f.l configure -foreground {} -background {} -selectforeground {} -selectbackground {}'.format(element.Widget, element.TextColor, element.BackgroundColor, element.BackgroundColor, element.TextColor)) + except Exception as e: + pass # going to let this one slide + + # Chr0nic + element.TKCombo.bind("", lambda event, em=element: testMouseHook2(em)) + element.TKCombo.bind("", lambda event, em=element: testMouseUnhook2(em)) + + if toplevel_form.UseDefaultFocus and not toplevel_form.FocusSet: + toplevel_form.FocusSet = True + element.TKCombo.focus_set() + + if element.Size[1] != 1 and element.Size[1] is not None: + element.TKCombo.configure(height=element.Size[1]) + element.TKCombo['values'] = element.Values + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + element.TKCombo.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + if element.visible is False: + element._pack_forget_save_settings() + # element.TKCombo.pack_forget() + if element.DefaultValue is not None: + element.TKCombo.set(element.DefaultValue) + # for i, v in enumerate(element.Values): + # if v == element.DefaultValue: + # element.TKCombo.current(i) + # break + # elif element.Values: + # element.TKCombo.current(0) + if element.ChangeSubmits: + element.TKCombo.bind('<>', element._ComboboxSelectHandler) + if element.BindReturnKey: + element.TKCombo.bind('', element._ComboboxSelectHandler) + if element.enable_per_char_events: + element.TKCombo.bind('', element._KeyboardHandler) + if element.Readonly: + element.TKCombo['state'] = 'readonly' + if element.Disabled is True: # note overrides readonly if disabled + element.TKCombo['state'] = 'disabled' + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element.TKCombo, text=element.Tooltip, timeout=DEFAULT_TOOLTIP_TIME) + _add_right_click_menu_and_grab(element) + + # ------------------------- OPTIONMENU placement Element (Like ComboBox but different) element ------------------------- # + elif element_type == ELEM_TYPE_INPUT_OPTION_MENU: + element = element # type: OptionMenu + max_line_len = max([len(str(l)) for l in element.Values]) + if auto_size_text is False: + width = element_size[0] + else: + width = max_line_len + element.TKStringVar = tk.StringVar() + if element.DefaultValue: + element.TKStringVar.set(element.DefaultValue) + element.TKOptionMenu = element.Widget = tk.OptionMenu(tk_row_frame, element.TKStringVar, *element.Values) + element.TKOptionMenu.config(highlightthickness=0, font=font, width=width) + element.TKOptionMenu['menu'].config(font=font) + element.TKOptionMenu.config(borderwidth=border_depth) + if element.BackgroundColor is not None and element.BackgroundColor != COLOR_SYSTEM_DEFAULT: + element.TKOptionMenu.configure(background=element.BackgroundColor) + element.TKOptionMenu['menu'].config(background=element.BackgroundColor) + if element.TextColor != COLOR_SYSTEM_DEFAULT and element.TextColor is not None: + element.TKOptionMenu.configure(fg=element.TextColor) + element.TKOptionMenu['menu'].config(fg=element.TextColor) + if element.ChangeSubmits: + element.TKStringVar.trace('w', element._OptionMenuSelectHandler) + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + element.TKOptionMenu.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + if element.visible is False: + element._pack_forget_save_settings() + # element.TKOptionMenu.pack_forget() + if element.Disabled == True: + element.TKOptionMenu['state'] = 'disabled' + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element.TKOptionMenu, text=element.Tooltip, + timeout=DEFAULT_TOOLTIP_TIME) + # ------------------------- LISTBOX placement element ------------------------- # + elif element_type == ELEM_TYPE_INPUT_LISTBOX: + element = element # type: Listbox + max_line_len = max([len(str(l)) for l in element.Values]) if len(element.Values) else 0 + if auto_size_text is False: + width = element_size[0] + else: + width = max_line_len + element_frame = tk.Frame(tk_row_frame) + element.element_frame = element_frame + + justification = tk.LEFT + if element.justification is not None: + if element.justification.startswith('l'): + justification = tk.LEFT + elif element.justification.startswith('r'): + justification = tk.RIGHT + elif element.justification.startswith('c'): + justification = tk.CENTER + + element.TKStringVar = tk.StringVar() + element.TKListbox = element.Widget = tk.Listbox(element_frame, height=element_size[1], width=width, + selectmode=element.SelectMode, font=font, exportselection=False) + # On OLD versions of tkinter the justify option isn't available + try: + element.Widget.config(justify=justification) + except: + pass + + element.Widget.config(highlightthickness=0) + for index, item in enumerate(element.Values): + element.TKListbox.insert(tk.END, item) + if element.DefaultValues is not None and item in element.DefaultValues: + element.TKListbox.selection_set(index) + if element.BackgroundColor is not None and element.BackgroundColor != COLOR_SYSTEM_DEFAULT: + element.TKListbox.configure(background=element.BackgroundColor) + if element.HighlightBackgroundColor is not None and element.HighlightBackgroundColor != COLOR_SYSTEM_DEFAULT: + element.TKListbox.config(selectbackground=element.HighlightBackgroundColor) + if text_color is not None and text_color != COLOR_SYSTEM_DEFAULT: + element.TKListbox.configure(fg=text_color) + if element.HighlightTextColor is not None and element.HighlightTextColor != COLOR_SYSTEM_DEFAULT: + element.TKListbox.config(selectforeground=element.HighlightTextColor) + if element.ChangeSubmits: + element.TKListbox.bind('<>', element._ListboxSelectHandler) + + if not element.NoScrollbar: + _make_ttk_scrollbar(element, 'v', toplevel_form) + element.Widget.configure(yscrollcommand=element.vsb.set) + element.vsb.pack(side=tk.RIGHT, fill='y') + + # Horizontal scrollbar + if element.HorizontalScroll: + _make_ttk_scrollbar(element, 'h', toplevel_form) + element.hsb.pack(side=tk.BOTTOM, fill='x') + element.Widget.configure(xscrollcommand=element.hsb.set) + + if not element.NoScrollbar or element.HorizontalScroll: + # Chr0nic + element.Widget.bind("", lambda event, em=element: testMouseHook(em)) + element.Widget.bind("", lambda event, em=element: testMouseUnhook(em)) + + + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + element_frame.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], fill=fill, expand=expand) + element.TKListbox.pack(side=tk.LEFT, fill=fill, expand=expand) + if element.visible is False: + element._pack_forget_save_settings(alternate_widget=element_frame) + # element_frame.pack_forget() + if element.BindReturnKey: + element.TKListbox.bind('', element._ListboxSelectHandler) + element.TKListbox.bind('', element._ListboxSelectHandler) + if element.Disabled is True: + element.TKListbox['state'] = 'disabled' + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element.TKListbox, text=element.Tooltip, + timeout=DEFAULT_TOOLTIP_TIME) + _add_right_click_menu_and_grab(element) + # ------------------------- MULTILINE placement element ------------------------- # + elif element_type == ELEM_TYPE_INPUT_MULTILINE: + element = element # type: Multiline + width, height = element_size + bd = element.BorderWidth + element.element_frame = element_frame = tk.Frame(tk_row_frame) + + element.TKText = element.Widget = tk.Text(element_frame, width=width, height=height, bd=bd, font=font, relief=RELIEF_SUNKEN) + + if not element.no_scrollbar: + _make_ttk_scrollbar(element, 'v', toplevel_form) + + element.Widget.configure(yscrollcommand=element.vsb.set) + element.vsb.pack(side=tk.RIGHT, fill='y') + + # Horizontal scrollbar + if element.HorizontalScroll: + element.TKText.config(wrap='none') + _make_ttk_scrollbar(element, 'h', toplevel_form) + element.hsb.pack(side=tk.BOTTOM, fill='x') + element.Widget.configure(xscrollcommand=element.hsb.set) + else: + element.TKText.config(wrap='word') + + if element.wrap_lines is True: + element.TKText.config(wrap='word') + elif element.wrap_lines is False: + element.TKText.config(wrap='none') + + if not element.no_scrollbar or element.HorizontalScroll: + # Chr0nic + element.TKText.bind("", lambda event, em=element: testMouseHook(em)) + element.TKText.bind("", lambda event, em=element: testMouseUnhook(em)) + + if element.DefaultText: + element.TKText.insert(1.0, element.DefaultText) # set the default text + element.TKText.config(highlightthickness=0) + if text_color is not None and text_color != COLOR_SYSTEM_DEFAULT: + element.TKText.configure(fg=text_color, selectbackground=text_color) + element.TKText.config(insertbackground=text_color) + if element.BackgroundColor is not None and element.BackgroundColor != COLOR_SYSTEM_DEFAULT: + element.TKText.configure(background=element.BackgroundColor, selectforeground=element.BackgroundColor) + if element.selected_background_color not in (None, COLOR_SYSTEM_DEFAULT): + element.TKText.configure(selectbackground=element.selected_background_color) + if element.selected_text_color not in (None, COLOR_SYSTEM_DEFAULT): + element.TKText.configure(selectforeground=element.selected_text_color) + element.TKText.tag_configure("center", justify='center') + element.TKText.tag_configure("left", justify='left') + element.TKText.tag_configure("right", justify='right') + + if element.Justification.startswith('l'): + element.TKText.tag_add("left", 1.0, "end") + element.justification_tag = 'left' + elif element.Justification.startswith('r'): + element.TKText.tag_add("right", 1.0, "end") + element.justification_tag = 'right' + elif element.Justification.startswith('c'): + element.TKText.tag_add("center", 1.0, "end") + element.justification_tag = 'center' + # if DEFAULT_SCROLLBAR_COLOR not in (None, COLOR_SYSTEM_DEFAULT): # only works on Linux so not including it + # element.TKText.vbar.config(troughcolor=DEFAULT_SCROLLBAR_COLOR) + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + + element.element_frame.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], fill=fill, expand=expand) + element.Widget.pack(side=tk.LEFT, fill=fill, expand=expand) + + if element.visible is False: + element._pack_forget_save_settings(alternate_widget=element_frame) + # element.element_frame.pack_forget() + else: + # Chr0nic + element.TKText.bind("", lambda event, em=element: testMouseHook(em)) + element.TKText.bind("", lambda event, em=element: testMouseUnhook(em)) + if element.ChangeSubmits: + element.TKText.bind('', element._KeyboardHandler) + if element.EnterSubmits: + element.TKText.bind('', element._ReturnKeyHandler) + if element.Focus is True or (toplevel_form.UseDefaultFocus and not toplevel_form.FocusSet): + toplevel_form.FocusSet = True + element.TKText.focus_set() + + if element.Disabled is True: + element.TKText['state'] = 'disabled' + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element.TKText, text=element.Tooltip, timeout=DEFAULT_TOOLTIP_TIME) + + if element.reroute_cprint: + cprint_set_output_destination(toplevel_form, element.Key) + + _add_right_click_menu_and_grab(element) + + if element.reroute_stdout: + element.reroute_stdout_to_here() + if element.reroute_stderr: + element.reroute_stderr_to_here() + + # row_should_expand = True + # ------------------------- CHECKBOX pleacement element ------------------------- # + elif element_type == ELEM_TYPE_INPUT_CHECKBOX: + element = element # type: Checkbox + width = 0 if auto_size_text else element_size[0] + default_value = element.InitialState + element.TKIntVar = tk.IntVar() + element.TKIntVar.set(default_value if default_value is not None else 0) + + element.TKCheckbutton = element.Widget = tk.Checkbutton(tk_row_frame, anchor=tk.NW, + text=element.Text, width=width, + variable=element.TKIntVar, bd=border_depth, + font=font) + if element.ChangeSubmits: + element.TKCheckbutton.configure(command=element._CheckboxHandler) + if element.Disabled: + element.TKCheckbutton.configure(state='disable') + if element.BackgroundColor is not None and element.BackgroundColor != COLOR_SYSTEM_DEFAULT: + element.TKCheckbutton.configure(background=element.BackgroundColor) + element.TKCheckbutton.configure(selectcolor=element.CheckboxBackgroundColor) # The background of the checkbox + element.TKCheckbutton.configure(activebackground=element.BackgroundColor) + if text_color is not None and text_color != COLOR_SYSTEM_DEFAULT: + element.TKCheckbutton.configure(fg=text_color) + element.TKCheckbutton.configure(activeforeground=element.TextColor) + + element.Widget.configure(highlightthickness=element.highlight_thickness) + if element.BackgroundColor != COLOR_SYSTEM_DEFAULT: + element.TKCheckbutton.config(highlightbackground=element.BackgroundColor) + if element.TextColor != COLOR_SYSTEM_DEFAULT: + element.TKCheckbutton.config(highlightcolor=element.TextColor) + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + element.TKCheckbutton.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + if element.visible is False: + element._pack_forget_save_settings() + # element.TKCheckbutton.pack_forget() + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element.TKCheckbutton, text=element.Tooltip, + timeout=DEFAULT_TOOLTIP_TIME) + _add_right_click_menu_and_grab(element) + + # ------------------------- PROGRESS placement element ------------------------- # + elif element_type == ELEM_TYPE_PROGRESS_BAR: + element = element # type: ProgressBar + if element.size_px != (None, None): + progress_length, progress_width = element.size_px + else: + width = element_size[0] + fnt = tkinter.font.Font() + char_width = fnt.measure('A') # single character width + progress_length = width * char_width + progress_width = element_size[1] + direction = element.Orientation + if element.BarColor != (None, None): # if element has a bar color, use it + bar_color = element.BarColor + else: + bar_color = DEFAULT_PROGRESS_BAR_COLOR + if element.Orientation.lower().startswith('h'): + base_style_name = ".Horizontal.TProgressbar" + else: + base_style_name = ".Vertical.TProgressbar" + style_name = _make_ttk_style_name(base_style_name, element, primary_style=True) + element.TKProgressBar = TKProgressBar(tk_row_frame, element.MaxValue, progress_length, progress_width, + orientation=direction, BarColor=bar_color, + border_width=element.BorderWidth, relief=element.Relief, + ttk_theme=toplevel_form.TtkTheme, key=element.Key, style_name=style_name) + element.Widget = element.TKProgressBar.TKProgressBarForReal + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + element.TKProgressBar.TKProgressBarForReal.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + if element.visible is False: + element._pack_forget_save_settings(alternate_widget=element.TKProgressBar.TKProgressBarForReal) + # element.TKProgressBar.TKProgressBarForReal.pack_forget() + _add_right_click_menu_and_grab(element) + + # ------------------------- RADIO placement element ------------------------- # + elif element_type == ELEM_TYPE_INPUT_RADIO: + element = element # type: Radio + width = 0 if auto_size_text else element_size[0] + default_value = element.InitialState + ID = element.GroupID + # see if ID has already been placed + value = EncodeRadioRowCol(form.ContainerElemementNumber, row_num, + col_num) # value to set intvar to if this radio is selected + element.EncodedRadioValue = value + if ID in toplevel_form.RadioDict: + RadVar = toplevel_form.RadioDict[ID] + else: + RadVar = tk.IntVar() + toplevel_form.RadioDict[ID] = RadVar + element.TKIntVar = RadVar # store the RadVar in Radio object + if default_value: # if this radio is the one selected, set RadVar to match + element.TKIntVar.set(value) + element.TKRadio = element.Widget = tk.Radiobutton(tk_row_frame, anchor=tk.NW, text=element.Text, + width=width, variable=element.TKIntVar, value=value, + bd=border_depth, font=font) + if element.ChangeSubmits: + element.TKRadio.configure(command=element._RadioHandler) + if not element.BackgroundColor in (None, COLOR_SYSTEM_DEFAULT): + element.TKRadio.configure(background=element.BackgroundColor) + element.TKRadio.configure(selectcolor=element.CircleBackgroundColor) + element.TKRadio.configure(activebackground=element.BackgroundColor) + if text_color is not None and text_color != COLOR_SYSTEM_DEFAULT: + element.TKRadio.configure(fg=text_color) + element.TKRadio.configure(activeforeground=text_color) + + element.Widget.configure(highlightthickness=1) + if element.BackgroundColor != COLOR_SYSTEM_DEFAULT: + element.TKRadio.config(highlightbackground=element.BackgroundColor) + if element.TextColor != COLOR_SYSTEM_DEFAULT: + element.TKRadio.config(highlightcolor=element.TextColor) + + if element.Disabled: + element.TKRadio['state'] = 'disabled' + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + element.TKRadio.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + if element.visible is False: + element._pack_forget_save_settings() + # element.TKRadio.pack_forget() + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element.TKRadio, text=element.Tooltip, timeout=DEFAULT_TOOLTIP_TIME) + _add_right_click_menu_and_grab(element) + + # ------------------------- SPIN placement element ------------------------- # + elif element_type == ELEM_TYPE_INPUT_SPIN: + element = element # type: Spin + width, height = element_size + width = 0 if auto_size_text else element_size[0] + element.TKStringVar = tk.StringVar() + element.TKSpinBox = element.Widget = tk.Spinbox(tk_row_frame, values=element.Values, textvariable=element.TKStringVar, width=width, bd=border_depth) + if element.DefaultValue is not None: + element.TKStringVar.set(element.DefaultValue) + element.TKSpinBox.configure(font=font) # set wrap to width of widget + if element.BackgroundColor is not None and element.BackgroundColor != COLOR_SYSTEM_DEFAULT: + element.TKSpinBox.configure(background=element.BackgroundColor) + element.TKSpinBox.configure(buttonbackground=element.BackgroundColor) + if text_color not in (None, COLOR_SYSTEM_DEFAULT): + element.TKSpinBox.configure(fg=text_color) + element.TKSpinBox.config(insertbackground=text_color) + element.Widget.config(highlightthickness=0) + if element.wrap is True: + element.Widget.configure(wrap=True) + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + element.TKSpinBox.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + if element.visible is False: + element._pack_forget_save_settings() + # element.TKSpinBox.pack_forget() + if element.ChangeSubmits: + element.TKSpinBox.configure(command=element._SpinboxSelectHandler) + # element.TKSpinBox.bind('', element._SpinChangedHandler) + # element.TKSpinBox.bind('', element._SpinChangedHandler) + # element.TKSpinBox.bind('', element._SpinChangedHandler) + if element.Readonly: + element.TKSpinBox['state'] = 'readonly' + if element.Disabled is True: # note overrides readonly if disabled + element.TKSpinBox['state'] = 'disabled' + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element.TKSpinBox, text=element.Tooltip, timeout=DEFAULT_TOOLTIP_TIME) + if element.BindReturnKey: + element.TKSpinBox.bind('', element._SpinboxSelectHandler) + _add_right_click_menu_and_grab(element) + # ------------------------- IMAGE placement element ------------------------- # + elif element_type == ELEM_TYPE_IMAGE: + element = element # type: Image + try: + if element.Filename is not None: + photo = tk.PhotoImage(file=element.Filename) + elif element.Data is not None: + photo = tk.PhotoImage(data=element.Data) + else: + photo = None + + if photo is not None: + if element.ImageSubsample: + photo = photo.subsample(element.ImageSubsample) + if element.zoom: + photo = photo.zoom(element.zoom) + # print('*ERROR laying out form.... Image Element has no image specified*') + except Exception as e: + photo = None + _error_popup_with_traceback('Your Window has an Image Element with a problem', + 'The traceback will show you the Window with the problem layout', + 'Look in this Window\'s layout for an Image element that has a key of {}'.format(element.Key), + 'The error occuring is:', e) + + element.tktext_label = element.Widget = tk.Label(tk_row_frame, bd=0) + + if photo is not None: + if element_size == (None, None) or element_size is None or element_size == toplevel_form.DefaultElementSize: + width, height = photo.width(), photo.height() + else: + width, height = element_size + element.tktext_label.config(image=photo, width=width, height=height) + + if not element.BackgroundColor in (None, COLOR_SYSTEM_DEFAULT): + element.tktext_label.config(background=element.BackgroundColor) + + element.tktext_label.image = photo + # tktext_label.configure(anchor=tk.NW, image=photo) + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + element.tktext_label.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + + if element.visible is False: + element._pack_forget_save_settings() + # element.tktext_label.pack_forget() + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element.tktext_label, text=element.Tooltip, + timeout=DEFAULT_TOOLTIP_TIME) + if element.EnableEvents and element.tktext_label is not None: + element.tktext_label.bind('', element._ClickHandler) + + _add_right_click_menu_and_grab(element) + + # ------------------------- Canvas placement element ------------------------- # + elif element_type == ELEM_TYPE_CANVAS: + element = element # type: Canvas + width, height = element_size + if element._TKCanvas is None: + element._TKCanvas = tk.Canvas(tk_row_frame, width=width, height=height, bd=border_depth) + else: + element._TKCanvas.master = tk_row_frame + element.Widget = element._TKCanvas + + if element.BackgroundColor is not None and element.BackgroundColor != COLOR_SYSTEM_DEFAULT: + element._TKCanvas.configure(background=element.BackgroundColor, highlightthickness=0) + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + element._TKCanvas.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + if element.visible is False: + element._pack_forget_save_settings() + # element._TKCanvas.pack_forget() + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element._TKCanvas, text=element.Tooltip, + timeout=DEFAULT_TOOLTIP_TIME) + _add_right_click_menu_and_grab(element) + + # ------------------------- Graph placement element ------------------------- # + elif element_type == ELEM_TYPE_GRAPH: + element = element # type: Graph + width, height = element_size + # I don't know why TWO canvases were being defined, on inside the other. Was it so entire canvas can move? + # if element._TKCanvas is None: + # element._TKCanvas = tk.Canvas(tk_row_frame, width=width, height=height, bd=border_depth) + # else: + # element._TKCanvas.master = tk_row_frame + element._TKCanvas2 = element.Widget = tk.Canvas(tk_row_frame, width=width, height=height, + bd=border_depth) + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + element._TKCanvas2.pack(side=tk.LEFT, expand=expand, fill=fill) + element._TKCanvas2.addtag_all('mytag') + if element.BackgroundColor is not None and element.BackgroundColor != COLOR_SYSTEM_DEFAULT: + element._TKCanvas2.configure(background=element.BackgroundColor, highlightthickness=0) + # element._TKCanvas.configure(background=element.BackgroundColor, highlightthickness=0) + element._TKCanvas2.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + if element.visible is False: + element._pack_forget_save_settings() + # element._TKCanvas2.pack_forget() + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element._TKCanvas2, text=element.Tooltip, + timeout=DEFAULT_TOOLTIP_TIME) + if element.ChangeSubmits: + element._TKCanvas2.bind('', element.ButtonReleaseCallBack) + element._TKCanvas2.bind('', element.ButtonPressCallBack) + if element.DragSubmits: + element._TKCanvas2.bind('', element.MotionCallBack) + _add_right_click_menu_and_grab(element) + # ------------------------- MENU placement element ------------------------- # + elif element_type == ELEM_TYPE_MENUBAR: + element = element # type: MenuBar + menu_def = element.MenuDefinition + element.TKMenu = element.Widget = tk.Menu(toplevel_form.TKroot, tearoff=element.Tearoff, + tearoffcommand=element._tearoff_menu_callback) # create the menubar + menubar = element.TKMenu + if font is not None: # if a font is used, make sure it's saved in the element + element.Font = font + for menu_entry in menu_def: + baritem = tk.Menu(menubar, tearoff=element.Tearoff, tearoffcommand=element._tearoff_menu_callback) + if element.BackgroundColor not in (COLOR_SYSTEM_DEFAULT, None): + baritem.config(bg=element.BackgroundColor) + baritem.config(activeforeground=element.BackgroundColor) + if element.TextColor not in (COLOR_SYSTEM_DEFAULT, None): + baritem.config(fg=element.TextColor) + baritem.config(activebackground=element.TextColor) + if element.DisabledTextColor not in (COLOR_SYSTEM_DEFAULT, None): + baritem.config(disabledforeground=element.DisabledTextColor) + if font is not None: + baritem.config(font=font) + pos = menu_entry[0].find(MENU_SHORTCUT_CHARACTER) + # print(pos) + if pos != -1: + if pos == 0 or menu_entry[0][pos - len(MENU_SHORTCUT_CHARACTER)] != "\\": + menu_entry[0] = menu_entry[0][:pos] + menu_entry[0][pos + 1:] + if menu_entry[0][0] == MENU_DISABLED_CHARACTER: + label = menu_entry[0][len(MENU_DISABLED_CHARACTER):] + try: + label_without_key = label[:label.index(MENU_KEY_SEPARATOR)] + except: + label_without_key = label + menubar.add_cascade(label=label_without_key, menu=baritem, underline=pos - 1) + menubar.entryconfig(label_without_key, state='disabled') + else: + label = menu_entry[0] + try: + label_without_key = label[:label.index(MENU_KEY_SEPARATOR)] + except: + label_without_key = label + menubar.add_cascade(label=label_without_key, menu=baritem, underline=pos) + + if len(menu_entry) > 1: + AddMenuItem(baritem, menu_entry[1], element) + else: + if menu_entry[0][0] != MENU_DISABLED_CHARACTER: + # If there's a menu item key then need to remove before putting into the menu + + menubar.entryconfig(label_without_key, menu='', command=lambda element=element, item=label: element._MenuItemChosenCallback(item)) + + toplevel_form.TKroot.configure(menu=element.TKMenu) + # ------------------------- Frame placement element ------------------------- # + elif element_type == ELEM_TYPE_FRAME: + element = element # type: Frame + labeled_frame = element.Widget = tk.LabelFrame(tk_row_frame, text=element.Title, relief=element.Relief) + element.TKFrame = labeled_frame + PackFormIntoFrame(element, labeled_frame, toplevel_form) + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + if element.VerticalAlignment is not None: + anchor = tk.CENTER # Default to center if a bad choice is made + if element.VerticalAlignment.lower().startswith('t'): + anchor = tk.N + if element.VerticalAlignment.lower().startswith('c'): + anchor = tk.CENTER + if element.VerticalAlignment.lower().startswith('b'): + anchor = tk.S + labeled_frame.pack(side=tk.LEFT, anchor=anchor, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + else: + labeled_frame.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + + if element.Size != (None, None): + labeled_frame.config(width=element.Size[0], height=element.Size[1]) + labeled_frame.pack_propagate(0) + if not element.visible: + element._pack_forget_save_settings() + # labeled_frame.pack_forget() + if element.BackgroundColor != COLOR_SYSTEM_DEFAULT and element.BackgroundColor is not None: + labeled_frame.configure(background=element.BackgroundColor, + highlightbackground=element.BackgroundColor, + highlightcolor=element.BackgroundColor) + if element.TextColor != COLOR_SYSTEM_DEFAULT and element.TextColor is not None: + labeled_frame.configure(foreground=element.TextColor) + if font is not None: + labeled_frame.configure(font=font) + if element.TitleLocation is not None: + labeled_frame.configure(labelanchor=element.TitleLocation) + if element.BorderWidth is not None: + labeled_frame.configure(borderwidth=element.BorderWidth) + if element.Tooltip is not None: + element.TooltipObject = ToolTip(labeled_frame, text=element.Tooltip, timeout=DEFAULT_TOOLTIP_TIME) + _add_right_click_menu_and_grab(element) + # row_should_expand=True + # ------------------------- Tab placement element ------------------------- # + elif element_type == ELEM_TYPE_TAB: + element = element # type: Tab + form = form # type: TabGroup + element.TKFrame = element.Widget = tk.Frame(form.TKNotebook) + PackFormIntoFrame(element, element.TKFrame, toplevel_form) + state = 'normal' + if element.Disabled: + state = 'disabled' + if element.visible is False: + state = 'hidden' + # this code will add an image to the tab. Use it when adding the image on a tab enhancement + try: + if element.Filename is not None: + photo = tk.PhotoImage(file=element.Filename) + elif element.Data is not None: + photo = tk.PhotoImage(data=element.Data) + else: + photo = None + + if element.ImageSubsample and photo is not None: + photo = photo.subsample(element.ImageSubsample) + if element.zoom and photo is not None: + photo = photo.zoom(element.zoom) + # print('*ERROR laying out form.... Image Element has no image specified*') + except Exception as e: + photo = None + _error_popup_with_traceback('Your Window has an Tab Element with an IMAGE problem', + 'The traceback will show you the Window with the problem layout', + 'Look in this Window\'s layout for an Image element that has a key of {}'.format(element.Key), + 'The error occuring is:', e) + + element.photo = photo + if photo is not None: + if element_size == (None, None) or element_size is None or element_size == toplevel_form.DefaultElementSize: + width, height = photo.width(), photo.height() + else: + width, height = element_size + element.tktext_label = tk.Label(tk_row_frame, image=photo, width=width, height=height, bd=0) + else: + element.tktext_label = tk.Label(tk_row_frame, bd=0) + if photo is not None: + form.TKNotebook.add(element.TKFrame, text=element.Title, compound=tk.LEFT, state=state,image=photo) + + # element.photo_image = tk.PhotoImage(data=DEFAULT_BASE64_ICON) + # form.TKNotebook.add(element.TKFrame, text=element.Title, compound=tk.LEFT, state=state,image = element.photo_image) + + form.TKNotebook.add(element.TKFrame, text=element.Title, state=state) + # July 28 2022 removing the expansion and pack as a test + # expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + # form.TKNotebook.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], fill=fill, expand=expand) + + element.ParentNotebook = form.TKNotebook + element.TabID = form.TabCount + form.tab_index_to_key[element.TabID] = element.key # has a list of the tabs in the notebook and their associated key + form.TabCount += 1 + if element.BackgroundColor not in (COLOR_SYSTEM_DEFAULT, None): + element.TKFrame.configure(background=element.BackgroundColor, highlightbackground=element.BackgroundColor, highlightcolor=element.BackgroundColor) + + # if element.BorderWidth is not None: + # element.TKFrame.configure(borderwidth=element.BorderWidth) + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element.TKFrame, text=element.Tooltip, timeout=DEFAULT_TOOLTIP_TIME) + _add_right_click_menu_and_grab(element) + # row_should_expand = True + # ------------------------- TabGroup placement element ------------------------- # + elif element_type == ELEM_TYPE_TAB_GROUP: + element = element # type: TabGroup + # custom_style = str(element.Key) + 'customtab.TNotebook' + custom_style = _make_ttk_style_name('.TNotebook', element, primary_style=True) + style = ttk.Style() + _change_ttk_theme(style, toplevel_form.TtkTheme) + + if element.TabLocation is not None: + position_dict = {'left': 'w', 'right': 'e', 'top': 'n', 'bottom': 's', 'lefttop': 'wn', + 'leftbottom': 'ws', 'righttop': 'en', 'rightbottom': 'es', 'bottomleft': 'sw', + 'bottomright': 'se', 'topleft': 'nw', 'topright': 'ne'} + try: + tab_position = position_dict[element.TabLocation] + except: + tab_position = position_dict['top'] + style.configure(custom_style, tabposition=tab_position) + + if element.BackgroundColor is not None and element.BackgroundColor != COLOR_SYSTEM_DEFAULT: + style.configure(custom_style, background=element.BackgroundColor) + + # FINALLY the proper styling to get tab colors! + if element.SelectedTitleColor is not None and element.SelectedTitleColor != COLOR_SYSTEM_DEFAULT: + style.map(custom_style + '.Tab', foreground=[("selected", element.SelectedTitleColor)]) + if element.SelectedBackgroundColor is not None and element.SelectedBackgroundColor != COLOR_SYSTEM_DEFAULT: + style.map(custom_style + '.Tab', background=[("selected", element.SelectedBackgroundColor)]) + if element.TabBackgroundColor is not None and element.TabBackgroundColor != COLOR_SYSTEM_DEFAULT: + style.configure(custom_style + '.Tab', background=element.TabBackgroundColor) + if element.TextColor is not None and element.TextColor != COLOR_SYSTEM_DEFAULT: + style.configure(custom_style + '.Tab', foreground=element.TextColor) + if element.BorderWidth is not None: + style.configure(custom_style, borderwidth=element.BorderWidth) + if element.TabBorderWidth is not None: + style.configure(custom_style + '.Tab', borderwidth=element.TabBorderWidth) # if ever want to get rid of border around the TABS themselves + if element.FocusColor not in (None, COLOR_SYSTEM_DEFAULT): + style.configure(custom_style + '.Tab', focuscolor=element.FocusColor) + + style.configure(custom_style + '.Tab', font=font) + element.Style = style + element.StyleName = custom_style + element.TKNotebook = element.Widget = ttk.Notebook(tk_row_frame, style=custom_style) + + PackFormIntoFrame(element, toplevel_form.TKroot, toplevel_form) + + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + element.TKNotebook.pack(anchor=tk.SW, side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], fill=fill, expand=expand) + + if element.ChangeSubmits: + element.TKNotebook.bind('<>', element._TabGroupSelectHandler) + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element.TKNotebook, text=element.Tooltip, timeout=DEFAULT_TOOLTIP_TIME) + if element.Size != (None, None): + element.TKNotebook.configure(width=element.Size[0], height=element.Size[1]) + _add_right_click_menu_and_grab(element) + if element.visible is False: + element._pack_forget_save_settings() + # row_should_expand = True + # ------------------- SLIDER placement element ------------------------- # + elif element_type == ELEM_TYPE_INPUT_SLIDER: + element = element # type: Slider + slider_length = element_size[0] * _char_width_in_pixels(font) + slider_width = element_size[1] + element.TKIntVar = tk.IntVar() + element.TKIntVar.set(element.DefaultValue) + if element.Orientation.startswith('v'): + range_from = element.Range[1] + range_to = element.Range[0] + slider_length += DEFAULT_MARGINS[1] * (element_size[0] * 2) # add in the padding + else: + range_from = element.Range[0] + range_to = element.Range[1] + tkscale = element.Widget = tk.Scale(tk_row_frame, orient=element.Orientation, + variable=element.TKIntVar, + from_=range_from, to_=range_to, resolution=element.Resolution, + length=slider_length, width=slider_width, + bd=element.BorderWidth, + relief=element.Relief, font=font, + tickinterval=element.TickInterval) + tkscale.config(highlightthickness=0) + if element.ChangeSubmits: + tkscale.config(command=element._SliderChangedHandler) + if element.BackgroundColor not in (None, COLOR_SYSTEM_DEFAULT): + tkscale.configure(background=element.BackgroundColor) + if element.TroughColor != COLOR_SYSTEM_DEFAULT: + tkscale.config(troughcolor=element.TroughColor) + if element.DisableNumericDisplay: + tkscale.config(showvalue=0) + if text_color not in (None, COLOR_SYSTEM_DEFAULT): + tkscale.configure(fg=text_color) + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + tkscale.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + if element.visible is False: + element._pack_forget_save_settings() + # tkscale.pack_forget() + element.TKScale = tkscale + if element.Disabled == True: + element.TKScale['state'] = 'disabled' + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element.TKScale, text=element.Tooltip, timeout=DEFAULT_TOOLTIP_TIME) + _add_right_click_menu_and_grab(element) + + # ------------------------- TABLE placement element ------------------------- # + elif element_type == ELEM_TYPE_TABLE: + element = element # type: Table + element.element_frame = frame = tk.Frame(tk_row_frame) + element.table_frame = frame + height = element.NumRows + if element.Justification.startswith('l'): + anchor = tk.W + elif element.Justification.startswith('r'): + anchor = tk.E + else: + anchor = tk.CENTER + column_widths = {} + # create column width list + for row in element.Values: + for i, col in enumerate(row): + col_width = min(len(str(col)), element.MaxColumnWidth) + try: + if col_width > column_widths[i]: + column_widths[i] = col_width + except: + column_widths[i] = col_width + + if element.ColumnsToDisplay is None: + displaycolumns = element.ColumnHeadings if element.ColumnHeadings is not None else element.Values[0] + else: + displaycolumns = [] + for i, should_display in enumerate(element.ColumnsToDisplay): + if should_display: + if element.ColumnHeadings is not None: + displaycolumns.append(element.ColumnHeadings[i]) + else: + displaycolumns.append(str(i)) + + column_headings = element.ColumnHeadings if element.ColumnHeadings is not None else displaycolumns + if element.DisplayRowNumbers: # if display row number, tack on the numbers to front of columns + displaycolumns = [element.RowHeaderText, ] + displaycolumns + if column_headings is not None: + column_headings = [element.RowHeaderText, ] + element.ColumnHeadings + else: + column_headings = [element.RowHeaderText, ] + displaycolumns + element.TKTreeview = element.Widget = ttk.Treeview(frame, columns=column_headings, + displaycolumns=displaycolumns, show='headings', + height=height, + selectmode=element.SelectMode, ) + element.Widget.entry = None + treeview = element.TKTreeview + if element.DisplayRowNumbers: + treeview.heading(element.RowHeaderText, text=element.RowHeaderText) # make a dummy heading + row_number_header_width =_string_width_in_pixels(element.HeaderFont, element.RowHeaderText) + 10 + row_number_width = _string_width_in_pixels(font, str(len(element.Values))) + 10 + row_number_width = max(row_number_header_width, row_number_width) + treeview.column(element.RowHeaderText, width=row_number_width, minwidth=10, anchor=anchor, stretch=0) + + headings = element.ColumnHeadings if element.ColumnHeadings is not None else element.Values[0] + for i, heading in enumerate(headings): + heading = str(heading) + treeview.heading(heading, text=heading) + if element.AutoSizeColumns: + col_width = column_widths.get(i, len(heading)) # in case more headings than there are columns of data + width = max(col_width * _char_width_in_pixels(font), len(heading)*_char_width_in_pixels(element.HeaderFont)) + else: + try: + width = element.ColumnWidths[i] * _char_width_in_pixels(font) + except: + width = element.DefaultColumnWidth * _char_width_in_pixels(font) + if element.cols_justification is not None: + try: + if element.cols_justification[i].startswith('l'): + col_anchor = tk.W + elif element.cols_justification[i].startswith('r'): + col_anchor = tk.E + elif element.cols_justification[i].startswith('c'): + col_anchor = tk.CENTER + else: + col_anchor = anchor + + except: # likely didn't specify enough entries (must be one per col) + col_anchor = anchor + else: + col_anchor = anchor + treeview.column(heading, width=width, minwidth=10, anchor=col_anchor, stretch=element.expand_x) + # Insert values into the tree + for i, value in enumerate(element.Values): + if element.DisplayRowNumbers: + value = [i + element.StartingRowNumber] + value + id = treeview.insert('', 'end', text=value, iid=i + 1, values=value, tag=i) + element.tree_ids.append(id) + if element.AlternatingRowColor not in (None, COLOR_SYSTEM_DEFAULT): # alternating colors + for row in range(0, len(element.Values), 2): + treeview.tag_configure(row, background=element.AlternatingRowColor) + if element.RowColors is not None: # individual row colors + for row_def in element.RowColors: + if len(row_def) == 2: # only background is specified + treeview.tag_configure(row_def[0], background=row_def[1]) + else: + treeview.tag_configure(row_def[0], background=row_def[2], foreground=row_def[1]) + # ------ Do Styling of Colors ----- + # style_name = str(element.Key) + 'customtable.Treeview' + style_name = _make_ttk_style_name( '.Treeview', element, primary_style=True) + element.table_ttk_style_name = style_name + table_style = ttk.Style() + element.ttk_style = table_style + + _change_ttk_theme(table_style, toplevel_form.TtkTheme) + + if element.BackgroundColor is not None and element.BackgroundColor != COLOR_SYSTEM_DEFAULT: + table_style.configure(style_name, background=element.BackgroundColor, fieldbackground=element.BackgroundColor, ) + if element.SelectedRowColors[1] is not None: + table_style.map(style_name, background=_fixed_map(table_style, style_name, 'background', element.SelectedRowColors)) + if element.TextColor is not None and element.TextColor != COLOR_SYSTEM_DEFAULT: + table_style.configure(style_name, foreground=element.TextColor) + if element.SelectedRowColors[0] is not None: + table_style.map(style_name, foreground=_fixed_map(table_style, style_name, 'foreground', element.SelectedRowColors)) + if element.RowHeight is not None: + table_style.configure(style_name, rowheight=element.RowHeight) + else: + table_style.configure(style_name, rowheight=_char_height_in_pixels(font)) + if element.HeaderTextColor is not None and element.HeaderTextColor != COLOR_SYSTEM_DEFAULT: + table_style.configure(style_name + '.Heading', foreground=element.HeaderTextColor) + if element.HeaderBackgroundColor is not None and element.HeaderBackgroundColor != COLOR_SYSTEM_DEFAULT: + table_style.configure(style_name + '.Heading', background=element.HeaderBackgroundColor) + if element.HeaderFont is not None: + table_style.configure(style_name + '.Heading', font=element.HeaderFont) + else: + table_style.configure(style_name + '.Heading', font=font) + if element.HeaderBorderWidth is not None: + table_style.configure(style_name + '.Heading', borderwidth=element.HeaderBorderWidth) + if element.HeaderRelief is not None: + table_style.configure(style_name + '.Heading', relief=element.HeaderRelief) + table_style.configure(style_name, font=font) + if element.BorderWidth is not None: + table_style.configure(style_name, borderwidth=element.BorderWidth) + + if element.HeaderBackgroundColor not in (None, COLOR_SYSTEM_DEFAULT) and element.HeaderTextColor not in (None, COLOR_SYSTEM_DEFAULT): + table_style.map(style_name + ".Heading", background=[('pressed', '!focus', element.HeaderBackgroundColor), + ('active', element.HeaderTextColor),]) + table_style.map(style_name + ".Heading", foreground=[('pressed', '!focus', element.HeaderTextColor), + ('active', element.HeaderBackgroundColor),]) + + + treeview.configure(style=style_name) + # scrollable_frame.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=True, fill='both') + if element.enable_click_events is True: + treeview.bind('', element._table_clicked) + if element.right_click_selects: + if running_mac(): + treeview.bind('', element._table_clicked) + else: + treeview.bind('', element._table_clicked) + treeview.bind("<>", element._treeview_selected) + if element.BindReturnKey or element.enable_cell_editing: + treeview.bind('', element._treeview_double_click) + treeview.bind('', element._treeview_double_click) + + if not element.HideVerticalScroll: + _make_ttk_scrollbar(element, 'v', toplevel_form) + + element.Widget.configure(yscrollcommand=element.vsb.set) + element.vsb.pack(side=tk.RIGHT, fill='y') + + # Horizontal scrollbar + if not element.VerticalScrollOnly: + # element.Widget.config(wrap='none') + _make_ttk_scrollbar(element, 'h', toplevel_form) + element.hsb.pack(side=tk.BOTTOM, fill='x') + element.Widget.configure(xscrollcommand=element.hsb.set) + + if not element.HideVerticalScroll or not element.VerticalScrollOnly: + # Chr0nic + element.Widget.bind("", lambda event, em=element: testMouseHook(em)) + element.Widget.bind("", lambda event, em=element: testMouseUnhook(em)) + + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + element.TKTreeview.pack(side=tk.LEFT, padx=0, pady=0, expand=expand, fill=fill) + frame.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + if element.visible is False: + element._pack_forget_save_settings(alternate_widget=element.element_frame) # seems like it should be the frame if following other elements conventions + # element.TKTreeview.pack_forget() + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element.TKTreeview, text=element.Tooltip, + timeout=DEFAULT_TOOLTIP_TIME) + _add_right_click_menu_and_grab(element) + + if tclversion_detailed == '8.6.9' and ENABLE_TREEVIEW_869_PATCH: + # print('*** tk version 8.6.9 detected.... patching ttk treeview code ***') + table_style.map(style_name, + foreground=_fixed_map(table_style, style_name, 'foreground', element.SelectedRowColors), + background=_fixed_map(table_style, style_name, 'background', element.SelectedRowColors)) + # ------------------------- Tree placement element ------------------------- # + elif element_type == ELEM_TYPE_TREE: + element = element # type: Tree + element.element_frame = element_frame = tk.Frame(tk_row_frame) + + height = element.NumRows + if element.Justification.startswith('l'): # justification + anchor = tk.W + elif element.Justification.startswith('r'): + anchor = tk.E + else: + anchor = tk.CENTER + + if element.ColumnsToDisplay is None: # Which cols to display + displaycolumns = element.ColumnHeadings + else: + displaycolumns = [] + for i, should_display in enumerate(element.ColumnsToDisplay): + if should_display: + displaycolumns.append(element.ColumnHeadings[i]) + column_headings = element.ColumnHeadings + # ------------- GET THE TREEVIEW WIDGET ------------- + element.TKTreeview = element.Widget = ttk.Treeview(element_frame, columns=column_headings, + displaycolumns=displaycolumns, + show='tree headings' if column_headings is not None else 'tree', + height=height, + selectmode=element.SelectMode) + treeview = element.TKTreeview + max_widths = {} + for key, node in element.TreeData.tree_dict.items(): + for i, value in enumerate(node.values): + max_width = max_widths.get(i, 0) + if len(str(value)) > max_width: + max_widths[i] = len(str(value)) + + if element.ColumnHeadings is not None: + for i, heading in enumerate(element.ColumnHeadings): # Configure cols + headings + treeview.heading(heading, text=heading) + if element.AutoSizeColumns: + max_width = max_widths.get(i, 0) + max_width = max(max_width, len(heading)) + width = min(element.MaxColumnWidth, max_width+1) + else: + try: + width = element.ColumnWidths[i] + except: + width = element.DefaultColumnWidth + treeview.column(heading, width=width * _char_width_in_pixels(font) + 10, anchor=anchor) + + def add_treeview_data(node): + """ + + :param node: + :type node: + + """ + if node.key != '': + if node.icon: + if node.icon not in element.image_dict: + if type(node.icon) is bytes: + photo = tk.PhotoImage(data=node.icon) + else: + photo = tk.PhotoImage(file=node.icon) + element.image_dict[node.icon] = photo + else: + photo = element.image_dict.get(node.icon) + + node.photo = photo + try: + id = treeview.insert(element.KeyToID[node.parent], 'end', iid=None, text=node.text, values=node.values, open=element.ShowExpanded, image=node.photo) + element.IdToKey[id] = node.key + element.KeyToID[node.key] = id + except Exception as e: + print('Error inserting image into tree', e) + else: + id = treeview.insert(element.KeyToID[node.parent], 'end', iid=None, text=node.text, values=node.values, open=element.ShowExpanded) + element.IdToKey[id] = node.key + element.KeyToID[node.key] = id + + for node in node.children: + add_treeview_data(node) + + add_treeview_data(element.TreeData.root_node) + treeview.column('#0', width=element.Col0Width * _char_width_in_pixels(font), anchor=tk.W) + treeview.heading('#0', text=element.col0_heading) + + # ----- configure colors ----- + # style_name = str(element.Key) + '.Treeview' + style_name = _make_ttk_style_name('.Treeview', element, primary_style=True) + tree_style = ttk.Style() + _change_ttk_theme(tree_style, toplevel_form.TtkTheme) + + if element.BackgroundColor is not None and element.BackgroundColor != COLOR_SYSTEM_DEFAULT: + tree_style.configure(style_name, background=element.BackgroundColor, fieldbackground=element.BackgroundColor) + if element.SelectedRowColors[1] is not None: + tree_style.map(style_name, background=_fixed_map(tree_style, style_name, 'background', element.SelectedRowColors)) + if element.TextColor is not None and element.TextColor != COLOR_SYSTEM_DEFAULT: + tree_style.configure(style_name, foreground=element.TextColor) + if element.SelectedRowColors[0] is not None: + tree_style.map(style_name, foreground=_fixed_map(tree_style, style_name, 'foreground', element.SelectedRowColors)) + if element.HeaderTextColor is not None and element.HeaderTextColor != COLOR_SYSTEM_DEFAULT: + tree_style.configure(style_name + '.Heading', foreground=element.HeaderTextColor) + if element.HeaderBackgroundColor is not None and element.HeaderBackgroundColor != COLOR_SYSTEM_DEFAULT: + tree_style.configure(style_name + '.Heading', background=element.HeaderBackgroundColor) + if element.HeaderFont is not None: + tree_style.configure(style_name + '.Heading', font=element.HeaderFont) + else: + tree_style.configure(style_name + '.Heading', font=font) + if element.HeaderBorderWidth is not None: + tree_style.configure(style_name + '.Heading', borderwidth=element.HeaderBorderWidth) + if element.HeaderRelief is not None: + tree_style.configure(style_name + '.Heading', relief=element.HeaderRelief) + tree_style.configure(style_name, font=font) + if element.RowHeight: + tree_style.configure(style_name, rowheight=element.RowHeight) + else: + tree_style.configure(style_name, rowheight=_char_height_in_pixels(font)) + if element.BorderWidth is not None: + tree_style.configure(style_name, borderwidth=element.BorderWidth) + + treeview.configure(style=style_name) # IMPORTANT! Be sure and set the style name for this widget + + if not element.HideVerticalScroll: + _make_ttk_scrollbar(element, 'v', toplevel_form) + + element.Widget.configure(yscrollcommand=element.vsb.set) + element.vsb.pack(side=tk.RIGHT, fill='y') + + # Horizontal scrollbar + if not element.VerticalScrollOnly: + # element.Widget.config(wrap='none') + _make_ttk_scrollbar(element, 'h', toplevel_form) + element.hsb.pack(side=tk.BOTTOM, fill='x') + element.Widget.configure(xscrollcommand=element.hsb.set) + + if not element.HideVerticalScroll or not element.VerticalScrollOnly: + # Chr0nic + element.Widget.bind("", lambda event, em=element: testMouseHook(em)) + element.Widget.bind("", lambda event, em=element: testMouseUnhook(em)) + + + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + element.TKTreeview.pack(side=tk.LEFT, padx=0, pady=0, expand=expand, fill=fill) + element_frame.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], expand=expand, fill=fill) + if element.visible is False: + element._pack_forget_save_settings(alternate_widget=element.element_frame) # seems like it should be the frame if following other elements conventions + # element.TKTreeview.pack_forget() + treeview.bind("<>", element._treeview_selected) + if element.Tooltip is not None: # tooltip + element.TooltipObject = ToolTip(element.TKTreeview, text=element.Tooltip, + timeout=DEFAULT_TOOLTIP_TIME) + _add_right_click_menu_and_grab(element) + + if tclversion_detailed == '8.6.9' and ENABLE_TREEVIEW_869_PATCH: + # print('*** tk version 8.6.9 detected.... patching ttk treeview code ***') + tree_style.map(style_name, + foreground=_fixed_map(tree_style, style_name, 'foreground', element.SelectedRowColors), + background=_fixed_map(tree_style, style_name, 'background', element.SelectedRowColors)) + + # ------------------------- Separator placement element ------------------------- # + elif element_type == ELEM_TYPE_SEPARATOR: + element = element # type: VerticalSeparator + # style_name = str(element.Key) + "Line.TSeparator" + style_name = _make_ttk_style_name(".Line.TSeparator", element, primary_style=True) + style = ttk.Style() + + _change_ttk_theme(style, toplevel_form.TtkTheme) + + if element.color not in (None, COLOR_SYSTEM_DEFAULT): + style.configure(style_name, background=element.color) + separator = element.Widget = ttk.Separator(tk_row_frame, orient=element.Orientation, ) + + expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction) + + if element.Orientation.startswith('h'): + separator.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], fill=tk.X, expand=True) + else: + separator.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], fill=tk.Y, expand=False) + element.Widget.configure(style=style_name) # IMPORTANT! Apply the style + # ------------------------- SizeGrip placement element ------------------------- # + elif element_type == ELEM_TYPE_SIZEGRIP: + element = element # type: Sizegrip + style_name = "Sizegrip.TSizegrip" + style = ttk.Style() + + _change_ttk_theme(style, toplevel_form.TtkTheme) + + size_grip = element.Widget = ttk.Sizegrip(tk_row_frame) + toplevel_form.sizegrip_widget = size_grip + # if no size is specified, then use the background color for the window + if element.BackgroundColor != COLOR_SYSTEM_DEFAULT: + style.configure(style_name, background=element.BackgroundColor) + else: + style.configure(style_name, background=toplevel_form.TKroot['bg']) + size_grip.configure(style=style_name) + + size_grip.pack(side=tk.BOTTOM, anchor='se', padx=elementpad[0], pady=elementpad[1], fill=tk.X, expand=True) + # tricky part of sizegrip... it shouldn't cause the row to expand, but should expand and should add X axis if + # not already filling in that direction. Otherwise, leaves things alone! + # row_should_expand = True + row_fill_direction = tk.BOTH if row_fill_direction in (tk.Y, tk.BOTH) else tk.X + # ------------------------- StatusBar placement element ------------------------- # + elif element_type == ELEM_TYPE_STATUSBAR: + # auto_size_text = element.AutoSizeText + display_text = element.DisplayText # text to display + if auto_size_text is False: + width, height = element_size + else: + lines = display_text.split('\n') + max_line_len = max([len(l) for l in lines]) + num_lines = len(lines) + if max_line_len > element_size[0]: # if text exceeds element size, the will have to wrap + width = element_size[0] + else: + width = max_line_len + height = num_lines + # ---===--- LABEL widget create and place --- # + stringvar = tk.StringVar() + element.TKStringVar = stringvar + stringvar.set(display_text) + if auto_size_text: + width = 0 + if element.Justification is not None: + justification = element.Justification + elif toplevel_form.TextJustification is not None: + justification = toplevel_form.TextJustification + else: + justification = DEFAULT_TEXT_JUSTIFICATION + justify = tk.LEFT if justification.startswith('l') else tk.CENTER if justification.startswith('c') else tk.RIGHT + anchor = tk.NW if justification.startswith('l') else tk.N if justification.startswith('c') else tk.NE + # tktext_label = tk.Label(tk_row_frame, textvariable=stringvar, width=width, height=height, + # justify=justify, bd=border_depth, font=font) + tktext_label = element.Widget = tk.Label(tk_row_frame, textvariable=stringvar, width=width, + height=height, + justify=justify, bd=border_depth, font=font) + # Set wrap-length for text (in PIXELS) == PAIN IN THE ASS + wraplen = tktext_label.winfo_reqwidth() + 40 # width of widget in Pixels + if not auto_size_text and height == 1: + wraplen = 0 + # print("wraplen, width, height", wraplen, width, height) + tktext_label.configure(anchor=anchor, wraplen=wraplen) # set wrap to width of widget + if element.Relief is not None: + tktext_label.configure(relief=element.Relief) + if element.BackgroundColor is not None and element.BackgroundColor != COLOR_SYSTEM_DEFAULT: + tktext_label.configure(background=element.BackgroundColor) + if element.TextColor != COLOR_SYSTEM_DEFAULT and element.TextColor is not None: + tktext_label.configure(fg=element.TextColor) + tktext_label.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], fill=tk.X, expand=True) + row_fill_direction = tk.X + if element.visible is False: + element._pack_forget_save_settings() + # tktext_label.pack_forget() + element.TKText = tktext_label + if element.ClickSubmits: + tktext_label.bind('', element._TextClickedHandler) + if element.Tooltip is not None: + element.TooltipObject = ToolTip(element.TKText, text=element.Tooltip, timeout=DEFAULT_TOOLTIP_TIME) + _add_right_click_menu_and_grab(element) + + # ............................DONE WITH ROW pack the row of widgets ..........................# + # done with row, pack the row of widgets + # tk_row_frame.grid(row=row_num+2, sticky=tk.NW, padx=DEFAULT_MARGINS[0]) + + anchor = 'nw' + + if row_justify.lower().startswith('c'): + anchor = 'n' + side = tk.LEFT + elif row_justify.lower().startswith('r'): + anchor = 'ne' + side = tk.RIGHT + elif row_justify.lower().startswith('l'): + anchor = 'nw' + side = tk.LEFT + + tk_row_frame.pack(side=tk.TOP, anchor=anchor, padx=0, pady=0, expand=row_should_expand, fill=row_fill_direction) + if form.BackgroundColor is not None and form.BackgroundColor != COLOR_SYSTEM_DEFAULT: + tk_row_frame.configure(background=form.BackgroundColor) + + return + + +def _get_hidden_master_root(): + """ + Creates the hidden master root window. This window is never visible and represents the overall "application" + """ + + # if one is already made, then skip making another + if Window.hidden_master_root is None: + Window._IncrementOpenCount() + Window.hidden_master_root = tk.Tk() + Window.hidden_master_root.attributes('-alpha', 0) # HIDE this window really really really + # if not running_mac(): + try: + Window.hidden_master_root.wm_overrideredirect(True) + except Exception as e: + if not running_mac(): + print('* Error performing wm_overrideredirect while hiding the hidden master root*', e) + Window.hidden_master_root.withdraw() + return Window.hidden_master_root + + +def _no_titlebar_setup(window): + """ + Does the operations required to turn off the titlebar for the window. + The Raspberry Pi required the settings to be make after the window's creation. + Calling twice seems to have had better overall results so that's what's currently done. + The MAC has been the problem with this feature. It's been a chronic problem on the Mac. + :param window: window to turn off the titlebar if indicated in the settings + :type window: Window + """ + try: + if window.NoTitleBar: + if running_linux(): + # window.TKroot.wm_attributes("-type", 'splash') + window.TKroot.wm_attributes("-type", 'dock') + else: + window.TKroot.wm_overrideredirect(True) + # Special case for Mac. Need to clear flag again if not tkinter version 8.6.10+ + # Previously restricted patch to only certain tkinter versions. Now use the patch setting exclusively regardless of tk ver + # if running_mac() and ENABLE_MAC_NOTITLEBAR_PATCH and (sum([int(i) for i in tclversion_detailed.split('.')]) < 24): + # if running_mac() and ENABLE_MAC_NOTITLEBAR_PATCH: + if _mac_should_apply_notitlebar_patch(): + print('* Applying Mac no_titlebar patch *') + window.TKroot.wm_overrideredirect(False) + except Exception as e: + warnings.warn('** Problem setting no titlebar {} **'.format(e), UserWarning) + + +# ----====----====----====----====----==== STARTUP TK ====----====----====----====----====----# +def StartupTK(window): + """ + NOT user callable + Creates the window (for real) lays out all the elements, etc. It's a HUGE set of things it does. It's the basic + "porting layer" that will change depending on the GUI framework PySimpleGUI is running on top of. + + :param window: you window object + :type window: (Window) + + """ + window = window # type: Window + # global _my_windows + # ow = _my_windows.NumOpenWindows + ow = Window.NumOpenWindows + # print('Starting TK open Windows = {}'.format(ow)) + if ENABLE_TK_WINDOWS: + root = tk.Tk() + elif not ow and not window.ForceTopLevel: + # if first window being created, make a throwaway, hidden master root. This stops one user + # window from becoming the child of another user window. All windows are children of this hidden window + _get_hidden_master_root() + root = tk.Toplevel(class_=window.Title) + else: + root = tk.Toplevel(class_=window.Title) + if window.DebuggerEnabled: + root.bind('', window._callback_main_debugger_window_create_keystroke) + root.bind('', window._callback_popout_window_create_keystroke) + + # If location is None, then there's no need to hide the window. Let it build where it is going to end up being. + if DEFAULT_HIDE_WINDOW_WHEN_CREATING is True and window.Location is not None: + try: + if not running_mac() or \ + (running_mac() and not window.NoTitleBar) or \ + (running_mac() and window.NoTitleBar and not _mac_should_apply_notitlebar_patch()): + + root.attributes('-alpha', 0) # hide window while building it. makes for smoother 'paint' + except Exception as e: + print('*** Exception setting alpha channel to zero while creating window ***', e) + + if window.BackgroundColor is not None and window.BackgroundColor != COLOR_SYSTEM_DEFAULT: + root.configure(background=window.BackgroundColor) + Window._IncrementOpenCount() + + window.TKroot = root + + window._create_thread_queue() + + # for the Raspberry Pi. Need to set the attributes here, prior to the building of the window + # so going ahead and doing it for all platforms, in addition to doing it after the window is packed + # 2023-April - this call seems to be causing problems on MacOS 13.2.1 Ventura. Input elements become non-responsive + # if this call is made here and at the end of building the window + if not running_mac(): + _no_titlebar_setup(window) + + if not window.Resizable: + root.resizable(False, False) + + if window.DisableMinimize: + root.attributes("-toolwindow", 1) + + if window.KeepOnTop: + root.wm_attributes("-topmost", 1) + + if window.TransparentColor is not None: + window.SetTransparentColor(window.TransparentColor) + + if window.scaling is not None: + root.tk.call('tk', 'scaling', window.scaling) + + __27kMD(window) + + # Make moveable window + if (window.GrabAnywhere is not False and not ( + window.NonBlocking and window.GrabAnywhere is not True)): + if not (ENABLE_MAC_DISABLE_GRAB_ANYWHERE_WITH_TITLEBAR and running_mac() and not window.NoTitleBar): + root.bind("", window._StartMoveGrabAnywhere) + root.bind("", window._StopMove) + root.bind("", window._OnMotionGrabAnywhere) + if (window.GrabAnywhereUsingControlKey is not False and not ( + window.NonBlocking and window.GrabAnywhereUsingControlKey is not True)): + root.bind("", window._StartMoveUsingControlKey) + root.bind("", window._StopMove) + root.bind("", window._OnMotionUsingControlKey) + # also enable movement using Control + Arrow key + root.bind("", window._move_callback) + root.bind("", window._move_callback) + root.bind("", window._move_callback) + root.bind("", window._move_callback) + + window.set_icon(window.WindowIcon) + try: + alpha_channel = 1 if window.AlphaChannel is None else window.AlphaChannel + root.attributes('-alpha', alpha_channel) # Make window visible again + except Exception as e: + print('**** Error setting Alpha Channel to {} after window was created ****'.format(alpha_channel), e) + # pass + + if window.ReturnKeyboardEvents and not window.NonBlocking: + root.bind("", window._KeyboardCallback) + root.bind("", window._MouseWheelCallback) + root.bind("", window._MouseWheelCallback) + root.bind("", window._MouseWheelCallback) + elif window.ReturnKeyboardEvents: + root.bind("", window._KeyboardCallback) + root.bind("", window._MouseWheelCallback) + root.bind("", window._MouseWheelCallback) + root.bind("", window._MouseWheelCallback) + + DEFAULT_WINDOW_SNAPSHOT_KEY_CODE = main_global_get_screen_snapshot_symcode() + + if DEFAULT_WINDOW_SNAPSHOT_KEY_CODE: + # print('**** BINDING THE SNAPSHOT!', DEFAULT_WINDOW_SNAPSHOT_KEY_CODE, DEFAULT_WINDOW_SNAPSHOT_KEY) + window.bind(DEFAULT_WINDOW_SNAPSHOT_KEY_CODE, DEFAULT_WINDOW_SNAPSHOT_KEY, propagate=False) + # window.bind('', DEFAULT_WINDOW_SNAPSHOT_KEY, ) + + if window.NoTitleBar: + window.TKroot.focus_force() + + if window.AutoClose: + # if the window is being finalized, then don't start the autoclose timer + if not window.finalize_in_progress: + window._start_autoclose_timer() + # duration = DEFAULT_AUTOCLOSE_TIME if window.AutoCloseDuration is None else window.AutoCloseDuration + # window.TKAfterID = root.after(int(duration * 1000), window._AutoCloseAlarmCallback) + + if window.Timeout != None: + window.TKAfterID = root.after(int(window.Timeout), window._TimeoutAlarmCallback) + if window.NonBlocking: + window.TKroot.protocol("WM_DESTROY_WINDOW", window._OnClosingCallback) + window.TKroot.protocol("WM_DELETE_WINDOW", window._OnClosingCallback) + window.TKroot.bind("", window._config_callback) + + else: # it's a blocking form + # print('..... CALLING MainLoop') + window.CurrentlyRunningMainloop = True + window.TKroot.protocol("WM_DESTROY_WINDOW", window._OnClosingCallback) + window.TKroot.protocol("WM_DELETE_WINDOW", window._OnClosingCallback) + + if window.modal or DEFAULT_MODAL_WINDOWS_FORCED: + window.make_modal() + + # if window.enable_window_config_events: + # ALWAYS enable config callbacks + window.TKroot.bind("", window._config_callback) + + # ----------------------------------- tkinter mainloop call ----------------------------------- + Window._window_running_mainloop = window + Window._root_running_mainloop = window.TKroot + window.TKroot.mainloop() + window.CurrentlyRunningMainloop = False + window.TimerCancelled = True + # print('..... BACK from MainLoop') + if not window.FormRemainedOpen: + Window._DecrementOpenCount() + # _my_windows.Decrement() + if window.RootNeedsDestroying: + try: + window.TKroot.destroy() + except: + pass + window.RootNeedsDestroying = False + return + + +def _set_icon_for_tkinter_window(root, icon=None, pngbase64=None): + """ + At the moment, this function is only used by the get_filename or folder with the no_window option set. + Changes the icon that is shown on the title bar and on the task bar. + NOTE - The file type is IMPORTANT and depends on the OS! + Can pass in: + * filename which must be a .ICO icon file for windows, PNG file for Linux + * bytes object + * BASE64 encoded file held in a variable + + :param root: The window being modified + :type root: (tk.Tk or tk.TopLevel) + :param icon: Filename or bytes object + :type icon: (str | bytes) + :param pngbase64: Base64 encoded image + :type pngbase64: (bytes) + """ + + if type(icon) is bytes or pngbase64 is not None: + wicon = tkinter.PhotoImage(data=icon if icon is not None else pngbase64) + try: + root.tk.call('wm', 'iconphoto', root._w, wicon) + except: + wicon = tkinter.PhotoImage(data=DEFAULT_BASE64_ICON) + try: + root.tk.call('wm', 'iconphoto', root._w, wicon) + except Exception as e: + print('Set icon exception', e) + pass + return + + wicon = icon + try: + root.iconbitmap(icon) + except Exception as e: + try: + wicon = tkinter.PhotoImage(file=icon) + root.tk.call('wm', 'iconphoto', root._w, wicon) + except Exception as e: + try: + wicon = tkinter.PhotoImage(data=DEFAULT_BASE64_ICON) + try: + root.tk.call('wm', 'iconphoto', root._w, wicon) + except Exception as e: + print('Set icon exception', e) + pass + except: + print('Set icon exception', e) + pass + + +# ==============================_GetNumLinesNeeded ==# +# Helper function for determining how to wrap text # +# ===================================================# +def _GetNumLinesNeeded(text, max_line_width): + if max_line_width == 0: + return 1 + lines = text.split('\n') + num_lines = len(lines) # number of original lines of text + max_line_len = max([len(l) for l in lines]) # longest line + lines_used = [] + for L in lines: + lines_used.append(len(L) // max_line_width + (len(L) % max_line_width > 0)) # fancy math to round up + total_lines_needed = sum(lines_used) + return total_lines_needed + + +# ============================== PROGRESS METER ========================================== # + +def convert_args_to_single_string(*args): + """ + + :param *args: + :type *args: + + """ + max_line_total, width_used, total_lines, = 0, 0, 0 + single_line_message = '' + # loop through args and built a SINGLE string from them + for message in args: + # fancy code to check if string and convert if not is not need. Just always convert to string :-) + # if not isinstance(message, str): message = str(message) + message = str(message) + longest_line_len = max([len(l) for l in message.split('\n')]) + width_used = max(longest_line_len, width_used) + max_line_total = max(max_line_total, width_used) + lines_needed = _GetNumLinesNeeded(message, width_used) + total_lines += lines_needed + single_line_message += message + '\n' + return single_line_message, width_used, total_lines + + +METER_REASON_CANCELLED = 'cancelled' +METER_REASON_CLOSED = 'closed' +METER_REASON_REACHED_MAX = 'finished' +METER_OK = True +METER_STOPPED = False + + +class _QuickMeter(object): + active_meters = {} + exit_reasons = {} + + def __init__(self, title, current_value, max_value, key, *args, orientation='v', bar_color=(None, None), button_color=(None, None), + size=DEFAULT_PROGRESS_BAR_SIZE, border_width=None, grab_anywhere=False, no_titlebar=False, keep_on_top=None, no_button=False): + """ + + :param title: text to display in element + :type title: (str) + :param current_value: current value + :type current_value: (int) + :param max_value: max value of progress meter + :type max_value: (int) + :param key: Used with window.find_element and with return values to uniquely identify this element + :type key: str | int | tuple | object + :param *args: stuff to output + :type *args: (Any) + :param orientation: 'horizontal' or 'vertical' ('h' or 'v' work) (Default value = 'vertical' / 'v') + :type orientation: (str) + :param bar_color: The 2 colors that make up a progress bar. Either a tuple of 2 strings or a string. Tuple - (bar, background). A string with 1 color changes the background of the bar only. A string with 2 colors separated by "on" like "red on blue" specifies a red bar on a blue background. + :type bar_color: (str, str) or str + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param size: (w,h) w=characters-wide, h=rows-high (Default value = DEFAULT_PROGRESS_BAR_SIZE) + :type size: (int, int) + :param border_width: width of border around element + :type border_width: (int) + :param grab_anywhere: If True: can grab anywhere to move the window (Default = False) + :type grab_anywhere: (bool) + :param no_titlebar: If True: window will be created without a titlebar + :type no_titlebar: (bool) + :param keep_on_top: If True the window will remain above all current windows + :type keep_on_top: (bool) + :param no_button: If True: window will be created without a cancel button + :type no_button: (bool) + """ + self.start_time = datetime.datetime.utcnow() + self.key = key + self.orientation = orientation + self.bar_color = bar_color + self.size = size + self.grab_anywhere = grab_anywhere + self.button_color = button_color + self.border_width = border_width + self.no_titlebar = no_titlebar + self.title = title + self.current_value = current_value + self.max_value = max_value + self.close_reason = None + self.keep_on_top = keep_on_top + self.no_button = no_button + self.window = self.BuildWindow(*args) + + def BuildWindow(self, *args): + layout = [] + if self.orientation.lower().startswith('h'): + col = [] + col += [[T(''.join(map(lambda x: str(x) + '\n', args)), + key='-OPTMSG-')]] ### convert all *args into one string that can be updated + col += [[T('', size=(30, 10), key='-STATS-')], + [ProgressBar(max_value=self.max_value, orientation='h', key='-PROG-', size=self.size, + bar_color=self.bar_color)]] + if not self.no_button: + col += [[Cancel(button_color=self.button_color), Stretch()]] + layout = [Column(col)] + else: + col = [[ProgressBar(max_value=self.max_value, orientation='v', key='-PROG-', size=self.size, + bar_color=self.bar_color)]] + col2 = [] + col2 += [[T(''.join(map(lambda x: str(x) + '\n', args)), + key='-OPTMSG-')]] ### convert all *args into one string that can be updated + col2 += [[T('', size=(30, 10), key='-STATS-')]] + if not self.no_button: + col2 += [[Cancel(button_color=self.button_color), Stretch()]] + + layout = [Column(col), Column(col2)] + self.window = Window(self.title, grab_anywhere=self.grab_anywhere, border_depth=self.border_width, no_titlebar=self.no_titlebar, disable_close=True, + keep_on_top=self.keep_on_top) + self.window.Layout([layout]).Finalize() + + return self.window + + def UpdateMeter(self, current_value, max_value, *args): ### support for *args when updating + + self.current_value = current_value + self.max_value = max_value + self.window.Element('-PROG-').UpdateBar(self.current_value, self.max_value) + self.window.Element('-STATS-').Update('\n'.join(self.ComputeProgressStats())) + self.window.Element('-OPTMSG-').Update( + value=''.join(map(lambda x: str(x) + '\n', args))) ### update the string with the args + event, values = self.window.read(timeout=0) + if event in ('Cancel', None) or current_value >= max_value: + exit_reason = METER_REASON_CANCELLED if event in ('Cancel', None) else METER_REASON_REACHED_MAX if current_value >= max_value else METER_STOPPED + self.window.close() + del (_QuickMeter.active_meters[self.key]) + _QuickMeter.exit_reasons[self.key] = exit_reason + return _QuickMeter.exit_reasons[self.key] + return METER_OK + + def ComputeProgressStats(self): + utc = datetime.datetime.utcnow() + time_delta = utc - self.start_time + total_seconds = time_delta.total_seconds() + if not total_seconds: + total_seconds = 1 + try: + time_per_item = total_seconds / self.current_value + except: + time_per_item = 1 + seconds_remaining = (self.max_value - self.current_value) * time_per_item + time_remaining = str(datetime.timedelta(seconds=seconds_remaining)) + time_remaining_short = (time_remaining).split(".")[0] + time_delta_short = str(time_delta).split(".")[0] + total_time = time_delta + datetime.timedelta(seconds=seconds_remaining) + total_time_short = str(total_time).split(".")[0] + self.stat_messages = [ + '{} of {}'.format(self.current_value, self.max_value), + '{} %'.format(100 * self.current_value // self.max_value), + '', + ' {:6.2f} Iterations per Second'.format(self.current_value / total_seconds), + ' {:6.2f} Seconds per Iteration'.format(total_seconds / (self.current_value if self.current_value else 1)), + '', + '{} Elapsed Time'.format(time_delta_short), + '{} Time Remaining'.format(time_remaining_short), + '{} Estimated Total Time'.format(total_time_short)] + return self.stat_messages + + +def one_line_progress_meter(title, current_value, max_value, *args, key='OK for 1 meter', orientation='v', bar_color=(None, None), button_color=None, + size=DEFAULT_PROGRESS_BAR_SIZE, border_width=None, grab_anywhere=False, no_titlebar=False, keep_on_top=None, no_button=False): + """ + :param title: text to display in titlebar of window + :type title: (str) + :param current_value: current value + :type current_value: (int) + :param max_value: max value of progress meter + :type max_value: (int) + :param *args: stuff to output as text in the window along with the meter + :type *args: (Any) + :param key: Used to differentiate between multiple meters. Used to cancel meter early. Now optional as there is a default value for single meters + :type key: str | int | tuple | object + :param orientation: 'horizontal' or 'vertical' ('h' or 'v' work) (Default value = 'vertical' / 'v') + :type orientation: (str) + :param bar_color: The 2 colors that make up a progress bar. Either a tuple of 2 strings or a string. Tuple - (bar, background). A string with 1 color changes the background of the bar only. A string with 2 colors separated by "on" like "red on blue" specifies a red bar on a blue background. + :type bar_color: (str, str) or str + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param size: (w,h) w=characters-wide, h=rows-high (Default value = DEFAULT_PROGRESS_BAR_SIZE) + :type size: (int, int) + :param border_width: width of border around element + :type border_width: (int) + :param grab_anywhere: If True: can grab anywhere to move the window (Default = False) + :type grab_anywhere: (bool) + :param no_titlebar: If True: no titlebar will be shown on the window + :type no_titlebar: (bool) + :param keep_on_top: If True the window will remain above all current windows + :type keep_on_top: (bool) + :param no_button: If True: window will be created without a cancel button + :type no_button: (bool) + :return: True if updated successfully. False if user closed the meter with the X or Cancel button + :rtype: (bool) + """ + if key not in _QuickMeter.active_meters: + meter = _QuickMeter(title, current_value, max_value, key, *args, orientation=orientation, bar_color=bar_color, button_color=button_color, size=size, + border_width=border_width, grab_anywhere=grab_anywhere, no_titlebar=no_titlebar, keep_on_top=keep_on_top, no_button=no_button) + _QuickMeter.active_meters[key] = meter + _QuickMeter.exit_reasons[key] = None + + else: + meter = _QuickMeter.active_meters[key] + + rc = meter.UpdateMeter(current_value, max_value, *args) ### pass the *args to to UpdateMeter function + OneLineProgressMeter.exit_reasons = getattr(OneLineProgressMeter, 'exit_reasons', _QuickMeter.exit_reasons) + exit_reason = OneLineProgressMeter.exit_reasons.get(key) + return METER_OK if exit_reason in (None, METER_REASON_REACHED_MAX) else METER_STOPPED + + +def one_line_progress_meter_cancel(key='OK for 1 meter'): + """ + Cancels and closes a previously created One Line Progress Meter window + + :param key: Key used when meter was created + :type key: (Any) + :return: None + :rtype: None + """ + try: + meter = _QuickMeter.active_meters[key] + meter.window.Close() + del (_QuickMeter.active_meters[key]) + _QuickMeter.exit_reasons[key] = METER_REASON_CANCELLED + except: # meter is already deleted + return + + +def get_complimentary_hex(color): + """ + :param color: color string, like "#RRGGBB" + :type color: (str) + :return: color string, like "#RRGGBB" + :rtype: (str) + """ + + # strip the # from the beginning + color = color[1:] + # convert the string into hex + color = int(color, 16) + # invert the three bytes + # as good as substracting each of RGB component by 255(FF) + comp_color = 0xFFFFFF ^ color + # convert the color back to hex by prefixing a # + comp_color = "#%06X" % comp_color + return comp_color + + +# ======================== EasyPrint =====# +# ===================================================# +class _DebugWin(): + debug_window = None + + def __init__(self, size=(None, None), location=(None, None), relative_location=(None, None), font=None, no_titlebar=False, no_button=False, + grab_anywhere=False, keep_on_top=None, do_not_reroute_stdout=True, echo_stdout=False, resizable=True, blocking=False): + """ + + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param location: Location of upper left corner of the window + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param no_titlebar: If True no titlebar will be shown + :type no_titlebar: (bool) + :param no_button: show button + :type no_button: (bool) + :param grab_anywhere: If True: can grab anywhere to move the window (Default = False) + :type grab_anywhere: (bool) + :param location: Location of upper left corner of the window + :type location: (int, int) + :param do_not_reroute_stdout: bool value + :type do_not_reroute_stdout: (bool) + :param echo_stdout: If True stdout is sent to both the console and the debug window + :type echo_stdout: (bool) + :param resizable: if True, makes the window resizble + :type resizable: (bool) + :param blocking: if True, makes the window block instead of returning immediately + :type blocking: (bool) + """ + + # Show a form that's a running counter + self.size = size + self.location = location + self.relative_location = relative_location + self.font = font + self.no_titlebar = no_titlebar + self.no_button = no_button + self.grab_anywhere = grab_anywhere + self.keep_on_top = keep_on_top + self.do_not_reroute_stdout = do_not_reroute_stdout + self.echo_stdout = echo_stdout + self.resizable = resizable + self.blocking = blocking + + win_size = size if size != (None, None) else DEFAULT_DEBUG_WINDOW_SIZE + self.output_element = Multiline(size=win_size, autoscroll=True, auto_refresh=True, reroute_stdout=False if do_not_reroute_stdout else True, + echo_stdout_stderr=self.echo_stdout, reroute_stderr=False if do_not_reroute_stdout else True, expand_x=True, expand_y=True, autoscroll_only_at_bottom=True, + key='-MULTILINE-') + if no_button: + self.layout = [[self.output_element]] + else: + if blocking: + self.quit_button = Button('Quit', key='Quit') + else: + self.quit_button = DummyButton('Quit', key='Quit') + self.layout = [[self.output_element], + [pin(self.quit_button), pin(B('Pause', key='-PAUSE-')), Stretch()]] + + self.layout[-1] += [Sizegrip()] + + self.window = Window('Debug Window', self.layout, no_titlebar=no_titlebar, auto_size_text=True, location=location, relative_location=relative_location, + font=font or ('Courier New', 10), grab_anywhere=grab_anywhere, keep_on_top=keep_on_top, finalize=True, resizable=resizable) + return + + def reopen_window(self): + if self.window is None or (self.window is not None and self.window.is_closed()): + self.__init__(size=self.size, location=self.location, relative_location=self.relative_location, font=self.font, no_titlebar=self.no_titlebar, + no_button=self.no_button, grab_anywhere=self.grab_anywhere, keep_on_top=self.keep_on_top, + do_not_reroute_stdout=self.do_not_reroute_stdout, resizable=self.resizable, echo_stdout=self.echo_stdout) + + def Print(self, *args, end=None, sep=None, text_color=None, background_color=None, erase_all=False, font=None, blocking=None): + global SUPPRESS_WIDGET_NOT_FINALIZED_WARNINGS + suppress = SUPPRESS_WIDGET_NOT_FINALIZED_WARNINGS + SUPPRESS_WIDGET_NOT_FINALIZED_WARNINGS = True + sepchar = sep if sep is not None else ' ' + endchar = end if end is not None else '\n' + self.reopen_window() # if needed, open the window again + + timeout = 0 if not blocking else None + if erase_all: + self.output_element.update('') + + if self.do_not_reroute_stdout: + end_str = str(end) if end is not None else '\n' + sep_str = str(sep) if sep is not None else ' ' + + outstring = '' + num_args = len(args) + for i, arg in enumerate(args): + outstring += str(arg) + if i != num_args - 1: + outstring += sep_str + outstring += end_str + try: + self.output_element.update(outstring, append=True, text_color_for_value=text_color, background_color_for_value=background_color, font_for_value=font) + except: + self.window = None + self.reopen_window() + self.output_element.update(outstring, append=True, text_color_for_value=text_color, background_color_for_value=background_color, font_for_value=font) + + else: + print(*args, sep=sepchar, end=endchar) + # This is tricky....changing the button type depending on the blocking parm. If blocking, then the "Quit" button should become a normal button + if blocking and not self.no_button: + self.quit_button.BType = BUTTON_TYPE_READ_FORM + try: # The window may be closed by user at any time, so have to protect + self.quit_button.update(text='Click to continue...') + except: + self.window = None + elif not self.no_button: + self.quit_button.BType = BUTTON_TYPE_CLOSES_WIN_ONLY + try: # The window may be closed by user at any time, so have to protect + self.quit_button.update(text='Quit') + except: + self.window = None + + try: # The window may be closed by user at any time, so have to protect + if blocking and not self.no_button: + self.window['-PAUSE-'].update(visible=False) + elif not self.no_button: + self.window['-PAUSE-'].update(visible=True) + except: + self.window = None + + self.reopen_window() # if needed, open the window again + + paused = None + while True: + event, values = self.window.read(timeout=timeout) + + if event == WIN_CLOSED: + self.Close() + break + elif blocking and event == 'Quit': + break + elif not paused and event == TIMEOUT_EVENT and not blocking: + break + elif event == '-PAUSE-': + if blocking or self.no_button: # if blocking or shouldn't have been a button event, ignore the pause button entirely + continue + if paused: + self.window['-PAUSE-'].update(text='Pause') + self.quit_button.update(visible=True) + break + paused = True + self.window['-PAUSE-'].update(text='Resume') + self.quit_button.update(visible=False) + timeout = None + + SUPPRESS_WIDGET_NOT_FINALIZED_WARNINGS = suppress + + def Close(self): + if self.window.XFound: # increment the number of open windows to get around a bug with debug windows + Window._IncrementOpenCount() + self.window.close() + self.window = None + + +def easy_print(*args, size=(None, None), end=None, sep=None, location=(None, None), relative_location=(None, None), font=None, no_titlebar=False, + no_button=False, grab_anywhere=False, keep_on_top=None, do_not_reroute_stdout=True, echo_stdout=False, text_color=None, background_color=None, colors=None, c=None, + erase_all=False, resizable=True, blocking=None, wait=None): + """ + Works like a "print" statement but with windowing options. Routes output to the "Debug Window" + + In addition to the normal text and background colors, you can use a "colors" tuple/string + The "colors" or "c" parameter defines both the text and background in a single parm. + It can be a tuple or a single single. Both text and background colors need to be specified + colors -(str, str) or str. A combined text/background color definition in a single parameter + c - (str, str) - Colors tuple has format (foreground, backgrouned) + c - str - can also be a string of the format "foreground on background" ("white on red") + + :param *args: stuff to output + :type *args: (Any) + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param end: end character + :type end: (str) + :param sep: separator character + :type sep: (str) + :param location: Location of upper left corner of the window + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param no_titlebar: If True no titlebar will be shown + :type no_titlebar: (bool) + :param no_button: don't show button + :type no_button: (bool) + :param grab_anywhere: If True: can grab anywhere to move the window (Default = False) + :type grab_anywhere: (bool) + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param keep_on_top: If True the window will remain above all current windows + :type keep_on_top: (bool) + :param location: Location of upper left corner of the window + :type location: (int, int) + :param do_not_reroute_stdout: do not reroute stdout and stderr. If False, both stdout and stderr will reroute to here + :type do_not_reroute_stdout: (bool) + :param echo_stdout: If True stdout is sent to both the console and the debug window + :type echo_stdout: (bool) + :param colors: Either a tuple or a string that has both the text and background colors + :type colors: (str) or (str, str) + :param c: Either a tuple or a string that has both the text and background colors + :type c: (str) or (str, str) + :param resizable: if True, the user can resize the debug window. Default is True + :type resizable: (bool) + :param erase_all: If True when erase the output before printing + :type erase_all: (bool) + :param blocking: if True, makes the window block instead of returning immediately. The "Quit" button changers to "More" + :type blocking: (bool | None) + :param wait: Same as the "blocking" parm. It's an alias. if True, makes the window block instead of returning immediately. The "Quit" button changes to "Click to Continue..." + :type wait: (bool | None) + :return: + :rtype: + """ + + blocking = blocking or wait + if _DebugWin.debug_window is None: + _DebugWin.debug_window = _DebugWin(size=size, location=location, relative_location=relative_location, font=font, no_titlebar=no_titlebar, + no_button=no_button, grab_anywhere=grab_anywhere, keep_on_top=keep_on_top, + do_not_reroute_stdout=do_not_reroute_stdout, echo_stdout=echo_stdout, resizable=resizable, blocking=blocking) + txt_color, bg_color = _parse_colors_parm(c or colors) + _DebugWin.debug_window.Print(*args, end=end, sep=sep, text_color=text_color or txt_color, background_color=background_color or bg_color, + erase_all=erase_all, font=font, blocking=blocking) + + +def easy_print_close(): + """ + Close a previously opened EasyPrint window + + :return: + :rtype: + """ + if _DebugWin.debug_window is not None: + _DebugWin.debug_window.Close() + _DebugWin.debug_window = None + + +# d8b 888 +# Y8P 888 +# 888 +# .d8888b 88888b. 888d888 888 88888b. 888888 +# d88P" 888 "88b 888P" 888 888 "88b 888 +# 888 888 888 888 888 888 888 888 +# Y88b. 888 d88P 888 888 888 888 Y88b. +# "Y8888P 88888P" 888 888 888 888 "Y888 +# 888 +# 888 +# 888 + + +CPRINT_DESTINATION_WINDOW = None +CPRINT_DESTINATION_MULTILINE_ELMENT_KEY = None + + +def cprint_set_output_destination(window, multiline_key): + """ + Sets up the color print (cprint) output destination + :param window: The window that the cprint call will route the output to + :type window: (Window) + :param multiline_key: Key for the Multiline Element where output will be sent + :type multiline_key: (Any) + :return: None + :rtype: None + """ + + global CPRINT_DESTINATION_WINDOW, CPRINT_DESTINATION_MULTILINE_ELMENT_KEY + + CPRINT_DESTINATION_WINDOW = window + CPRINT_DESTINATION_MULTILINE_ELMENT_KEY = multiline_key + + +def cprint(*args, end=None, sep=' ', text_color=None, font=None, t=None, background_color=None, b=None, colors=None, c=None, window=None, key=None, + justification=None, autoscroll=True, erase_all=False): + """ + Color print to a multiline element in a window of your choice. + Must have EITHER called cprint_set_output_destination prior to making this call so that the + window and element key can be saved and used here to route the output, OR used the window + and key parameters to the cprint function to specicy these items. + + args is a variable number of things you want to print. + + end - The end char to use just like print uses + sep - The separation character like print uses + text_color - The color of the text + key - overrides the previously defined Multiline key + window - overrides the previously defined window to output to + background_color - The color of the background + colors -(str, str) or str. A combined text/background color definition in a single parameter + + There are also "aliases" for text_color, background_color and colors (t, b, c) + t - An alias for color of the text (makes for shorter calls) + b - An alias for the background_color parameter + c - (str, str) - "shorthand" way of specifying color. (foreground, backgrouned) + c - str - can also be a string of the format "foreground on background" ("white on red") + + With the aliases it's possible to write the same print but in more compact ways: + cprint('This will print white text on red background', c=('white', 'red')) + cprint('This will print white text on red background', c='white on red') + cprint('This will print white text on red background', text_color='white', background_color='red') + cprint('This will print white text on red background', t='white', b='red') + + :param *args: stuff to output + :type *args: (Any) + :param text_color: Color of the text + :type text_color: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike for the value being updated + :type font: (str or (str, int[, str]) or None) + :param background_color: The background color of the line + :type background_color: (str) + :param colors: Either a tuple or a string that has both the text and background colors "text on background" or just the text color + :type colors: (str) or (str, str) + :param t: Color of the text + :type t: (str) + :param b: The background color of the line + :type b: (str) + :param c: Either a tuple or a string. Same as the color parm + :type c: (str) or (str, str) + :param end: end character + :type end: (str) + :param sep: separator character + :type sep: (str) + :param key: key of multiline to output to (if you want to override the one previously set) + :type key: (Any) + :param window: Window containing the multiline to output to (if you want to override the one previously set) + :type window: (Window) + :param justification: text justification. left, right, center. Can use single characters l, r, c. Sets only for this value, not entire element + :type justification: (str) + :param autoscroll: If True the contents of the element will automatically scroll as more data added to the end + :type autoscroll: (bool) + :param erase_all If True the contents of the element will be cleared before printing happens + :type erase_all (bool) + """ + + destination_key = CPRINT_DESTINATION_MULTILINE_ELMENT_KEY if key is None else key + destination_window = window or CPRINT_DESTINATION_WINDOW + + if (destination_window is None and window is None) or (destination_key is None and key is None): + print('** Warning ** Attempting to perform a cprint without a valid window & key', + 'Will instead print on Console', + 'You can specify window and key in this cprint call, or set ahead of time using cprint_set_output_destination') + print(*args) + return + + kw_text_color = text_color or t + kw_background_color = background_color or b + dual_color = colors or c + try: + if isinstance(dual_color, tuple): + kw_text_color = dual_color[0] + kw_background_color = dual_color[1] + elif isinstance(dual_color, str): + if ' on ' in dual_color: # if has "on" in the string, then have both text and background + kw_text_color = dual_color.split(' on ')[0] + kw_background_color = dual_color.split(' on ')[1] + else: # if no "on" then assume the color string is just the text color + kw_text_color = dual_color + except Exception as e: + print('* cprint warning * you messed up with color formatting', e) + + mline = destination_window.find_element(destination_key, silent_on_error=True) # type: Multiline + try: + # mline = destination_window[destination_key] # type: Multiline + if erase_all is True: + mline.update('') + if end is None: + mline.print(*args, text_color=kw_text_color, background_color=kw_background_color, end='', sep=sep, justification=justification, font=font, + autoscroll=autoscroll) + mline.print('', justification=justification, autoscroll=autoscroll) + else: + mline.print(*args, text_color=kw_text_color, background_color=kw_background_color, end=end, sep=sep, justification=justification, font=font, + autoscroll=autoscroll) + except Exception as e: + print('** cprint error trying to print to the multiline. Printing to console instead **', e) + print(*args, end=end, sep=sep) + + +# ------------------------------------------------------------------------------------------------ # +# A print-like call that can be used to output to a multiline element as if it's an Output element # +# ------------------------------------------------------------------------------------------------ # + +def _print_to_element(multiline_element, *args, end=None, sep=None, text_color=None, background_color=None, autoscroll=None, justification=None, font=None): + """ + Print like Python normally prints except route the output to a multiline element and also add colors if desired + + :param multiline_element: The multiline element to be output to + :type multiline_element: (Multiline) + :param args: The arguments to print + :type args: List[Any] + :param end: The end char to use just like print uses + :type end: (str) + :param sep: The separation character like print uses + :type sep: (str) + :param text_color: color of the text + :type text_color: (str) + :param background_color: The background color of the line + :type background_color: (str) + :param autoscroll: If True (the default), the element will scroll to bottom after updating + :type autoscroll: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike for the value being updated + :type font: str | (str, int) + """ + end_str = str(end) if end is not None else '\n' + sep_str = str(sep) if sep is not None else ' ' + + outstring = '' + num_args = len(args) + for i, arg in enumerate(args): + outstring += str(arg) + if i != num_args - 1: + outstring += sep_str + outstring += end_str + + multiline_element.update(outstring, append=True, text_color_for_value=text_color, background_color_for_value=background_color, autoscroll=autoscroll, + justification=justification, font_for_value=font) + + try: # if the element is set to autorefresh, then refresh the parent window + if multiline_element.AutoRefresh: + multiline_element.ParentForm.refresh() + except: + pass + + +def _parse_colors_parm(colors): + """ + Parse a colors parameter into its separate colors. + Some functions accept a dual colors string/tuple. + This function parses the parameter into the component colors + + :param colors: Either a tuple or a string that has both the text and background colors + :type colors: (str) or (str, str) + :return: tuple with the individual text and background colors + :rtype: (str, str) + """ + if colors is None: + return None, None + dual_color = colors + kw_text_color = kw_background_color = None + try: + if isinstance(dual_color, tuple): + kw_text_color = dual_color[0] + kw_background_color = dual_color[1] + elif isinstance(dual_color, str): + if ' on ' in dual_color: # if has "on" in the string, then have both text and background + kw_text_color = dual_color.split(' on ')[0] + kw_background_color = dual_color.split(' on ')[1] + else: # if no "on" then assume the color string is just the text color + kw_text_color = dual_color + except Exception as e: + print('* warning * you messed up with color formatting', e) + + return kw_text_color, kw_background_color + + +# ============================== set_global_icon ====# +# Sets the icon to be used by default # +# ===================================================# +def set_global_icon(icon): + """ + Sets the icon which will be used any time a window is created if an icon is not provided when the + window is created. + + :param icon: Either a Base64 byte string or a filename + :type icon: bytes | str + """ + + Window._user_defined_icon = icon + + +# ============================== set_options ========# +# Sets the icon to be used by default # +# ===================================================# +def set_options(icon=None, button_color=None, element_size=(None, None), button_element_size=(None, None), + margins=(None, None), + element_padding=(None, None), auto_size_text=None, auto_size_buttons=None, font=None, border_width=None, + slider_border_width=None, slider_relief=None, slider_orientation=None, + autoclose_time=None, message_box_line_width=None, + progress_meter_border_depth=None, progress_meter_style=None, + progress_meter_relief=None, progress_meter_color=None, progress_meter_size=None, + text_justification=None, background_color=None, element_background_color=None, + text_element_background_color=None, input_elements_background_color=None, input_text_color=None, + scrollbar_color=None, text_color=None, element_text_color=None, debug_win_size=(None, None), + window_location=(None, None), error_button_color=(None, None), tooltip_time=None, tooltip_font=None, use_ttk_buttons=None, ttk_theme=None, + suppress_error_popups=None, suppress_raise_key_errors=None, suppress_key_guessing=None,warn_button_key_duplicates=False, enable_treeview_869_patch=None, + enable_mac_notitlebar_patch=None, use_custom_titlebar=None, titlebar_background_color=None, titlebar_text_color=None, titlebar_font=None, + titlebar_icon=None, user_settings_path=None, pysimplegui_settings_path=None, pysimplegui_settings_filename=None, keep_on_top=None, dpi_awareness=None, scaling=None, disable_modal_windows=None, force_modal_windows=None, tooltip_offset=(None, None), + sbar_trough_color=None, sbar_background_color=None, sbar_arrow_color=None, sbar_width=None, sbar_arrow_width=None, sbar_frame_color=None, sbar_relief=None, alpha_channel=None, + hide_window_when_creating=None, use_button_shortcuts=None, watermark_text=None, win_app_id=None): + """ + :param icon: Can be either a filename or Base64 value. For Windows if filename, it MUST be ICO format. For Linux, must NOT be ICO. Most portable is to use a Base64 of a PNG file. This works universally across all OS's + :type icon: bytes | str + :param button_color: Color of the button (text, background) + :type button_color: (str, str) | str + :param element_size: element size (width, height) in characters + :type element_size: (int, int) + :param button_element_size: Size of button + :type button_element_size: (int, int) + :param margins: (left/right, top/bottom) tkinter margins around outsize. Amount of pixels to leave inside the window's frame around the edges before your elements are shown. + :type margins: (int, int) + :param element_padding: Default amount of padding to put around elements in window (left/right, top/bottom) or ((left, right), (top, bottom)) + :type element_padding: (int, int) or ((int, int),(int,int)) + :param auto_size_text: True if the Widget should be shrunk to exactly fit the number of chars to show + :type auto_size_text: bool + :param auto_size_buttons: True if Buttons in this Window should be sized to exactly fit the text on this. + :type auto_size_buttons: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param border_width: width of border around element + :type border_width: (int) + :param slider_border_width: Width of the border around sliders + :type slider_border_width: (int) + :param slider_relief: Type of relief to use for sliders + :type slider_relief: (str) + :param slider_orientation: ??? + :type slider_orientation: ??? + :param autoclose_time: ??? + :type autoclose_time: ??? + :param message_box_line_width: ??? + :type message_box_line_width: ??? + :param progress_meter_border_depth: ??? + :type progress_meter_border_depth: ??? + :param progress_meter_style: You can no longer set a progress bar style. All ttk styles must be the same for the window + :type progress_meter_style: ??? + :param progress_meter_relief: + :type progress_meter_relief: ??? + :param progress_meter_color: ??? + :type progress_meter_color: ??? + :param progress_meter_size: ??? + :type progress_meter_size: ??? + :param text_justification: Default text justification for all Text Elements in window + :type text_justification: 'left' | 'right' | 'center' + :param background_color: color of background + :type background_color: (str) + :param element_background_color: element background color + :type element_background_color: (str) + :param text_element_background_color: text element background color + :type text_element_background_color: (str) + :param input_elements_background_color: Default color to use for the background of input elements + :type input_elements_background_color: (str) + :param input_text_color: Default color to use for the text for Input elements + :type input_text_color: (str) + :param scrollbar_color: Default color to use for the slider trough + :type scrollbar_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param element_text_color: Default color to use for Text elements + :type element_text_color: (str) + :param debug_win_size: window size + :type debug_win_size: (int, int) + :param window_location: Default location to place windows. Not setting will center windows on the display + :type window_location: (int, int) | None + :param error_button_color: (Default = (None)) + :type error_button_color: ??? + :param tooltip_time: time in milliseconds to wait before showing a tooltip. Default is 400ms + :type tooltip_time: (int) + :param tooltip_font: font to use for all tooltips + :type tooltip_font: str or Tuple[str, int] or Tuple[str, int, str] + :param use_ttk_buttons: if True will cause all buttons to be ttk buttons + :type use_ttk_buttons: (bool) + :param ttk_theme: Theme to use with ttk widgets. Choices (on Windows) include - 'default', 'winnative', 'clam', 'alt', 'classic', 'vista', 'xpnative' + :type ttk_theme: (str) + :param suppress_error_popups: If True then error popups will not be shown if generated internally to PySimpleGUI + :type suppress_error_popups: (bool) + :param suppress_raise_key_errors: If True then key errors won't be raised (you'll still get popup error) + :type suppress_raise_key_errors: (bool) + :param suppress_key_guessing: If True then key errors won't try and find closest matches for you + :type suppress_key_guessing: (bool) + :param warn_button_key_duplicates: If True then duplicate Button Keys generate warnings (not recommended as they're expected) + :type warn_button_key_duplicates: (bool) + :param enable_treeview_869_patch: If True, then will use the treeview color patch for tk 8.6.9 + :type enable_treeview_869_patch: (bool) + :param enable_mac_notitlebar_patch: If True then Windows with no titlebar use an alternative technique when tkinter version < 8.6.10 + :type enable_mac_notitlebar_patch: (bool) + :param use_custom_titlebar: If True then a custom titlebar is used instead of the normal system titlebar + :type use_custom_titlebar: (bool) + :param titlebar_background_color: If custom titlebar indicated by use_custom_titlebar, then use this as background color + :type titlebar_background_color: str | None + :param titlebar_text_color: If custom titlebar indicated by use_custom_titlebar, then use this as text color + :type titlebar_text_color: str | None + :param titlebar_font: If custom titlebar indicated by use_custom_titlebar, then use this as title font + :type titlebar_font: (str or (str, int[, str]) or None) | None + :param titlebar_icon: If custom titlebar indicated by use_custom_titlebar, then use this as the icon (file or base64 bytes) + :type titlebar_icon: bytes | str + :param user_settings_path: default path for user_settings API calls. Expanded with os.path.expanduser so can contain ~ to represent user + :type user_settings_path: (str) + :param pysimplegui_settings_path: default path for the global PySimpleGUI user_settings + :type pysimplegui_settings_path: (str) + :param pysimplegui_settings_filename: default filename for the global PySimpleGUI user_settings + :type pysimplegui_settings_filename: (str) + :param keep_on_top: If True then all windows will automatically be set to keep_on_top=True + :type keep_on_top: (bool) + :param dpi_awareness: If True then will turn on DPI awareness (Windows only at the moment) + :type dpi_awareness: (bool) + :param scaling: Sets the default scaling for all windows including popups, etc. + :type scaling: (float) + :param disable_modal_windows: If True then all windows, including popups, will not be modal windows (unless they've been set to FORCED using another option) + :type disable_modal_windows: (bool) + :param force_modal_windows: If True then all windows will be modal (the disable option will be ignored... all windows will be forced to be modal) + :type force_modal_windows: (bool) + :param tooltip_offset: Offset to use for tooltips as a tuple. These values will be added to the mouse location when the widget was entered. + :type tooltip_offset: ((None, None) | (int, int)) + :param sbar_trough_color: Scrollbar color of the trough + :type sbar_trough_color: (str) + :param sbar_background_color: Scrollbar color of the background of the arrow buttons at the ends AND the color of the "thumb" (the thing you grab and slide). Switches to arrow color when mouse is over + :type sbar_background_color: (str) + :param sbar_arrow_color: Scrollbar color of the arrow at the ends of the scrollbar (it looks like a button). Switches to background color when mouse is over + :type sbar_arrow_color: (str) + :param sbar_width: Scrollbar width in pixels + :type sbar_width: (int) + :param sbar_arrow_width: Scrollbar width of the arrow on the scrollbar. It will potentially impact the overall width of the scrollbar + :type sbar_arrow_width: (int) + :param sbar_frame_color: Scrollbar Color of frame around scrollbar (available only on some ttk themes) + :type sbar_frame_color: (str) + :param sbar_relief: Scrollbar relief that will be used for the "thumb" of the scrollbar (the thing you grab that slides). Should be a constant that is defined at starting with "RELIEF_" - RELIEF_RAISED, RELIEF_SUNKEN, RELIEF_FLAT, RELIEF_RIDGE, RELIEF_GROOVE, RELIEF_SOLID + :type sbar_relief: (str) + :param alpha_channel: Default alpha channel to be used on all windows + :type alpha_channel: (float) + :param hide_window_when_creating: If True then alpha will be set to 0 while a window is made and moved to location indicated + :type hide_window_when_creating: (bool) + :param use_button_shortcuts: If True then Shortcut Char will be used with Buttons + :type use_button_shortcuts: (bool) + :param watermark_text: Set the text that will be used if a window is watermarked + :type watermark_text: (str) + :param win_app_id: For Windows only. Sets string that's passed to Windows to control combining icons on taskbar. Default is " mycompany.myproduct.subproduct.version". Windows with same ID combine on taskbar. Change before creating a window to set that window's ID. + :type win_app_id: (str) + :return: None + :rtype: None + """ + + global DEFAULT_ELEMENT_SIZE + global DEFAULT_BUTTON_ELEMENT_SIZE + global DEFAULT_MARGINS # Margins for each LEFT/RIGHT margin is first term + global DEFAULT_ELEMENT_PADDING # Padding between elements (row, col) in pixels + global DEFAULT_AUTOSIZE_TEXT + global DEFAULT_AUTOSIZE_BUTTONS + global DEFAULT_FONT + global DEFAULT_BORDER_WIDTH + global DEFAULT_AUTOCLOSE_TIME + global DEFAULT_BUTTON_COLOR + global MESSAGE_BOX_LINE_WIDTH + global DEFAULT_PROGRESS_BAR_BORDER_WIDTH + global DEFAULT_PROGRESS_BAR_STYLE + global DEFAULT_PROGRESS_BAR_RELIEF + global DEFAULT_PROGRESS_BAR_COLOR + global DEFAULT_PROGRESS_BAR_SIZE + global DEFAULT_TEXT_JUSTIFICATION + global DEFAULT_DEBUG_WINDOW_SIZE + global DEFAULT_SLIDER_BORDER_WIDTH + global DEFAULT_SLIDER_RELIEF + global DEFAULT_SLIDER_ORIENTATION + global DEFAULT_BACKGROUND_COLOR + global DEFAULT_INPUT_ELEMENTS_COLOR + global DEFAULT_ELEMENT_BACKGROUND_COLOR + global DEFAULT_TEXT_ELEMENT_BACKGROUND_COLOR + global DEFAULT_SCROLLBAR_COLOR + global DEFAULT_TEXT_COLOR + global DEFAULT_WINDOW_LOCATION + global DEFAULT_ELEMENT_TEXT_COLOR + global DEFAULT_INPUT_TEXT_COLOR + global DEFAULT_TOOLTIP_TIME + global DEFAULT_ERROR_BUTTON_COLOR + global DEFAULT_TTK_THEME + global USE_TTK_BUTTONS + global TOOLTIP_FONT + global SUPPRESS_ERROR_POPUPS + global SUPPRESS_RAISE_KEY_ERRORS + global SUPPRESS_KEY_GUESSING + global WARN_DUPLICATE_BUTTON_KEY_ERRORS + global ENABLE_TREEVIEW_869_PATCH + global ENABLE_MAC_NOTITLEBAR_PATCH + global USE_CUSTOM_TITLEBAR + global CUSTOM_TITLEBAR_BACKGROUND_COLOR + global CUSTOM_TITLEBAR_TEXT_COLOR + global CUSTOM_TITLEBAR_ICON + global CUSTOM_TITLEBAR_FONT + global DEFAULT_USER_SETTINGS_PATH + global DEFAULT_USER_SETTINGS_PYSIMPLEGUI_PATH + global DEFAULT_USER_SETTINGS_PYSIMPLEGUI_FILENAME + global DEFAULT_KEEP_ON_TOP + global DEFAULT_SCALING + global DEFAULT_MODAL_WINDOWS_ENABLED + global DEFAULT_MODAL_WINDOWS_FORCED + global DEFAULT_TOOLTIP_OFFSET + global DEFAULT_ALPHA_CHANNEL + global _pysimplegui_user_settings + global ttk_part_overrides_from_options + global DEFAULT_HIDE_WINDOW_WHEN_CREATING + global DEFAULT_USE_BUTTON_SHORTCUTS + # global _my_windows + + if icon: + Window._user_defined_icon = icon + # _my_windows._user_defined_icon = icon + + if button_color != None: + if button_color == COLOR_SYSTEM_DEFAULT: + DEFAULT_BUTTON_COLOR = (COLOR_SYSTEM_DEFAULT, COLOR_SYSTEM_DEFAULT) + else: + DEFAULT_BUTTON_COLOR = button_color + + if element_size != (None, None): + DEFAULT_ELEMENT_SIZE = element_size + + if button_element_size != (None, None): + DEFAULT_BUTTON_ELEMENT_SIZE = button_element_size + + if margins != (None, None): + DEFAULT_MARGINS = margins + + if element_padding != (None, None): + DEFAULT_ELEMENT_PADDING = element_padding + + if auto_size_text != None: + DEFAULT_AUTOSIZE_TEXT = auto_size_text + + if auto_size_buttons != None: + DEFAULT_AUTOSIZE_BUTTONS = auto_size_buttons + + if font != None: + DEFAULT_FONT = font + + if border_width != None: + DEFAULT_BORDER_WIDTH = border_width + + if autoclose_time != None: + DEFAULT_AUTOCLOSE_TIME = autoclose_time + + if message_box_line_width != None: + MESSAGE_BOX_LINE_WIDTH = message_box_line_width + + if progress_meter_border_depth != None: + DEFAULT_PROGRESS_BAR_BORDER_WIDTH = progress_meter_border_depth + + if progress_meter_style != None: + warnings.warn('You can no longer set a progress bar style. All ttk styles must be the same for the window', UserWarning) + # DEFAULT_PROGRESS_BAR_STYLE = progress_meter_style + + if progress_meter_relief != None: + DEFAULT_PROGRESS_BAR_RELIEF = progress_meter_relief + + if progress_meter_color != None: + DEFAULT_PROGRESS_BAR_COLOR = progress_meter_color + + if progress_meter_size != None: + DEFAULT_PROGRESS_BAR_SIZE = progress_meter_size + + if slider_border_width != None: + DEFAULT_SLIDER_BORDER_WIDTH = slider_border_width + + if slider_orientation != None: + DEFAULT_SLIDER_ORIENTATION = slider_orientation + + if slider_relief != None: + DEFAULT_SLIDER_RELIEF = slider_relief + + if text_justification != None: + DEFAULT_TEXT_JUSTIFICATION = text_justification + + if background_color != None: + DEFAULT_BACKGROUND_COLOR = background_color + + if text_element_background_color != None: + DEFAULT_TEXT_ELEMENT_BACKGROUND_COLOR = text_element_background_color + + if input_elements_background_color != None: + DEFAULT_INPUT_ELEMENTS_COLOR = input_elements_background_color + + if element_background_color != None: + DEFAULT_ELEMENT_BACKGROUND_COLOR = element_background_color + + if window_location != (None, None): + DEFAULT_WINDOW_LOCATION = window_location + + if debug_win_size != (None, None): + DEFAULT_DEBUG_WINDOW_SIZE = debug_win_size + + if text_color != None: + DEFAULT_TEXT_COLOR = text_color + + if scrollbar_color != None: + DEFAULT_SCROLLBAR_COLOR = scrollbar_color + + if element_text_color != None: + DEFAULT_ELEMENT_TEXT_COLOR = element_text_color + + if input_text_color is not None: + DEFAULT_INPUT_TEXT_COLOR = input_text_color + + if tooltip_time is not None: + DEFAULT_TOOLTIP_TIME = tooltip_time + + if error_button_color != (None, None): + DEFAULT_ERROR_BUTTON_COLOR = error_button_color + + if ttk_theme is not None: + DEFAULT_TTK_THEME = ttk_theme + + if use_ttk_buttons is not None: + USE_TTK_BUTTONS = use_ttk_buttons + + if tooltip_font is not None: + TOOLTIP_FONT = tooltip_font + + if suppress_error_popups is not None: + SUPPRESS_ERROR_POPUPS = suppress_error_popups + + if suppress_raise_key_errors is not None: + SUPPRESS_RAISE_KEY_ERRORS = suppress_raise_key_errors + + if suppress_key_guessing is not None: + SUPPRESS_KEY_GUESSING = suppress_key_guessing + + if warn_button_key_duplicates is not None: + WARN_DUPLICATE_BUTTON_KEY_ERRORS = warn_button_key_duplicates + + if enable_treeview_869_patch is not None: + ENABLE_TREEVIEW_869_PATCH = enable_treeview_869_patch + + if enable_mac_notitlebar_patch is not None: + ENABLE_MAC_NOTITLEBAR_PATCH = enable_mac_notitlebar_patch + + if use_custom_titlebar is not None: + USE_CUSTOM_TITLEBAR = use_custom_titlebar + + if titlebar_background_color is not None: + CUSTOM_TITLEBAR_BACKGROUND_COLOR = titlebar_background_color + + if titlebar_text_color is not None: + CUSTOM_TITLEBAR_TEXT_COLOR = titlebar_text_color + + if titlebar_font is not None: + CUSTOM_TITLEBAR_FONT = titlebar_font + + if titlebar_icon is not None: + CUSTOM_TITLEBAR_ICON = titlebar_icon + + if user_settings_path is not None: + DEFAULT_USER_SETTINGS_PATH = user_settings_path + + if pysimplegui_settings_path is not None: + DEFAULT_USER_SETTINGS_PYSIMPLEGUI_PATH = pysimplegui_settings_path + + if pysimplegui_settings_filename is not None: + DEFAULT_USER_SETTINGS_PYSIMPLEGUI_FILENAME = pysimplegui_settings_filename + + if pysimplegui_settings_filename is not None or pysimplegui_settings_filename is not None: + _pysimplegui_user_settings = UserSettings(filename=DEFAULT_USER_SETTINGS_PYSIMPLEGUI_FILENAME, + path=DEFAULT_USER_SETTINGS_PYSIMPLEGUI_PATH) + + if keep_on_top is not None: + DEFAULT_KEEP_ON_TOP = keep_on_top + + if dpi_awareness is True: + if running_windows(): + if platform.release() == "7": + ctypes.windll.user32.SetProcessDPIAware() + elif platform.release() == "8" or platform.release() == "10": + ctypes.windll.shcore.SetProcessDpiAwareness(1) + + if scaling is not None: + DEFAULT_SCALING = scaling + + if disable_modal_windows is not None: + DEFAULT_MODAL_WINDOWS_ENABLED = not disable_modal_windows + + if force_modal_windows is not None: + DEFAULT_MODAL_WINDOWS_FORCED = force_modal_windows + + if tooltip_offset != (None, None): + DEFAULT_TOOLTIP_OFFSET = tooltip_offset + + + if alpha_channel is not None: + DEFAULT_ALPHA_CHANNEL = alpha_channel + + # ---------------- ttk scrollbar section ---------------- + if sbar_background_color is not None: + ttk_part_overrides_from_options.sbar_background_color = sbar_background_color + + if sbar_trough_color is not None: + ttk_part_overrides_from_options.sbar_trough_color = sbar_trough_color + + if sbar_arrow_color is not None: + ttk_part_overrides_from_options.sbar_arrow_color = sbar_arrow_color + + if sbar_frame_color is not None: + ttk_part_overrides_from_options.sbar_frame_color = sbar_frame_color + + if sbar_relief is not None: + ttk_part_overrides_from_options.sbar_relief = sbar_relief + + if sbar_arrow_width is not None: + ttk_part_overrides_from_options.sbar_arrow_width = sbar_arrow_width + + if sbar_width is not None: + ttk_part_overrides_from_options.sbar_width = sbar_width + + if hide_window_when_creating is not None: + DEFAULT_HIDE_WINDOW_WHEN_CREATING = hide_window_when_creating + + if use_button_shortcuts is not None: + DEFAULT_USE_BUTTON_SHORTCUTS = use_button_shortcuts + + if watermark_text is not None: + Window._watermark_user_text = watermark_text + + + if win_app_id is not None: + # Enables the correct application icon to be shown on the Windows taskbar + if running_windows(): + try: + ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(win_app_id) + except Exception as e: + print('Error setting App ID', e) + + return True + +# ----------------------------------------------------------------- # + +# .########.##.....##.########.##.....##.########..######. +# ....##....##.....##.##.......###...###.##.......##....## +# ....##....##.....##.##.......####.####.##.......##...... +# ....##....#########.######...##.###.##.######....######. +# ....##....##.....##.##.......##.....##.##.............## +# ....##....##.....##.##.......##.....##.##.......##....## +# ....##....##.....##.########.##.....##.########..######. + +# ----------------------------------------------------------------- # + +# The official Theme code + +#################### ChangeLookAndFeel ####################### +# Predefined settings that will change the colors and styles # +# of the elements. # +############################################################## +LOOK_AND_FEEL_TABLE = { + "SystemDefault": {"BACKGROUND": COLOR_SYSTEM_DEFAULT, "TEXT": COLOR_SYSTEM_DEFAULT, "INPUT": COLOR_SYSTEM_DEFAULT, "TEXT_INPUT": COLOR_SYSTEM_DEFAULT, + "SCROLL": COLOR_SYSTEM_DEFAULT, "BUTTON": OFFICIAL_PYSIMPLEGUI_BUTTON_COLOR, "PROGRESS": COLOR_SYSTEM_DEFAULT, "BORDER": 1, + "SLIDER_DEPTH": 1, "PROGRESS_DEPTH": 0, }, + "SystemDefaultForReal": {"BACKGROUND": COLOR_SYSTEM_DEFAULT, "TEXT": COLOR_SYSTEM_DEFAULT, "INPUT": COLOR_SYSTEM_DEFAULT, + "TEXT_INPUT": COLOR_SYSTEM_DEFAULT, "SCROLL": COLOR_SYSTEM_DEFAULT, "BUTTON": COLOR_SYSTEM_DEFAULT, + "PROGRESS": COLOR_SYSTEM_DEFAULT, "BORDER": 1, "SLIDER_DEPTH": 1, "PROGRESS_DEPTH": 0, }, + "SystemDefault1": {"BACKGROUND": COLOR_SYSTEM_DEFAULT, "TEXT": COLOR_SYSTEM_DEFAULT, "INPUT": COLOR_SYSTEM_DEFAULT, "TEXT_INPUT": COLOR_SYSTEM_DEFAULT, + "SCROLL": COLOR_SYSTEM_DEFAULT, "BUTTON": COLOR_SYSTEM_DEFAULT, "PROGRESS": COLOR_SYSTEM_DEFAULT, "BORDER": 1, "SLIDER_DEPTH": 1, + "PROGRESS_DEPTH": 0, }, + "Material1": {"BACKGROUND": "#E3F2FD", "TEXT": "#000000", "INPUT": "#86A8FF", "TEXT_INPUT": "#000000", "SCROLL": "#86A8FF", + "BUTTON": ("#FFFFFF", "#5079D3"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 0, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "ACCENT1": "#FF0266", "ACCENT2": "#FF5C93", "ACCENT3": "#C5003C", }, + "Material2": {"BACKGROUND": "#FAFAFA", "TEXT": "#000000", "INPUT": "#004EA1", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#5EA7FF", + "BUTTON": ("#FFFFFF", "#0079D3"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 0, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "ACCENT1": "#FF0266", "ACCENT2": "#FF5C93", "ACCENT3": "#C5003C", }, + "Reddit": {"BACKGROUND": "#ffffff", "TEXT": "#1a1a1b", "INPUT": "#dae0e6", "TEXT_INPUT": "#222222", "SCROLL": "#a5a4a4", "BUTTON": ("#FFFFFF", "#0079d3"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, "ACCENT1": "#ff5414", "ACCENT2": "#33a8ff", + "ACCENT3": "#dbf0ff", }, + "Topanga": {"BACKGROUND": "#282923", "TEXT": "#E7DB74", "INPUT": "#393a32", "TEXT_INPUT": "#E7C855", "SCROLL": "#E7C855", "BUTTON": ("#E7C855", "#284B5A"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, "ACCENT1": "#c15226", "ACCENT2": "#7a4d5f", + "ACCENT3": "#889743", }, + "GreenTan": {"BACKGROUND": "#9FB8AD", "TEXT": '#000000', "INPUT": "#F7F3EC", "TEXT_INPUT": "#000000", "SCROLL": "#F7F3EC", "BUTTON": ("#FFFFFF", "#475841"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "Dark": {"BACKGROUND": "#404040", "TEXT": "#FFFFFF", "INPUT": "#4D4D4D", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#707070", "BUTTON": ("#FFFFFF", "#004F00"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "LightGreen": {"BACKGROUND": "#B7CECE", "TEXT": "#000000", "INPUT": "#FDFFF7", "TEXT_INPUT": "#000000", "SCROLL": "#FDFFF7", + "BUTTON": ("#FFFFFF", "#658268"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "ACCENT1": "#76506d", + "ACCENT2": "#5148f1", "ACCENT3": "#0a1c84", "PROGRESS_DEPTH": 0, }, + "Dark2": {"BACKGROUND": "#404040", "TEXT": "#FFFFFF", "INPUT": "#FFFFFF", "TEXT_INPUT": "#000000", "SCROLL": "#707070", "BUTTON": ("#FFFFFF", "#004F00"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "Black": {"BACKGROUND": "#000000", "TEXT": "#FFFFFF", "INPUT": "#4D4D4D", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#707070", "BUTTON": ("#000000", "#FFFFFF"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "Black2": {"BACKGROUND": "#000000", "TEXT": "#FFFFFF", "INPUT": "#000000", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#FFFFFF", "BUTTON": ("#000000", "#FFFFFF"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "Tan": {"BACKGROUND": "#fdf6e3", "TEXT": "#268bd1", "INPUT": "#eee8d5", "TEXT_INPUT": "#6c71c3", "SCROLL": "#eee8d5", "BUTTON": ("#FFFFFF", "#063542"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "TanBlue": {"BACKGROUND": "#e5dece", "TEXT": "#063289", "INPUT": "#f9f8f4", "TEXT_INPUT": "#242834", "SCROLL": "#eee8d5", "BUTTON": ("#FFFFFF", "#063289"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkTanBlue": {"BACKGROUND": "#242834", "TEXT": "#dfe6f8", "INPUT": "#97755c", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#a9afbb", + "BUTTON": ("#FFFFFF", "#063289"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkAmber": {"BACKGROUND": "#2c2825", "TEXT": "#fdcb52", "INPUT": "#705e52", "TEXT_INPUT": "#fdcb52", "SCROLL": "#705e52", + "BUTTON": ("#000000", "#fdcb52"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkBlue": {"BACKGROUND": "#1a2835", "TEXT": "#d1ecff", "INPUT": "#335267", "TEXT_INPUT": "#acc2d0", "SCROLL": "#1b6497", "BUTTON": ("#000000", "#fafaf8"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "Reds": {"BACKGROUND": "#280001", "TEXT": "#FFFFFF", "INPUT": "#d8d584", "TEXT_INPUT": "#000000", "SCROLL": "#763e00", "BUTTON": ("#000000", "#daad28"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "Green": {"BACKGROUND": "#82a459", "TEXT": "#000000", "INPUT": "#d8d584", "TEXT_INPUT": "#000000", "SCROLL": "#e3ecf3", "BUTTON": ("#FFFFFF", "#517239"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "BluePurple": {"BACKGROUND": "#A5CADD", "TEXT": "#6E266E", "INPUT": "#E0F5FF", "TEXT_INPUT": "#000000", "SCROLL": "#E0F5FF", + "BUTTON": ("#FFFFFF", "#303952"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "Purple": {"BACKGROUND": "#B0AAC2", "TEXT": "#000000", "INPUT": "#F2EFE8", "SCROLL": "#F2EFE8", "TEXT_INPUT": "#000000", "BUTTON": ("#000000", "#C2D4D8"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "BlueMono": {"BACKGROUND": "#AAB6D3", "TEXT": "#000000", "INPUT": "#F1F4FC", "SCROLL": "#F1F4FC", "TEXT_INPUT": "#000000", "BUTTON": ("#FFFFFF", "#7186C7"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "GreenMono": {"BACKGROUND": "#A8C1B4", "TEXT": "#000000", "INPUT": "#DDE0DE", "SCROLL": "#E3E3E3", "TEXT_INPUT": "#000000", + "BUTTON": ("#FFFFFF", "#6D9F85"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "BrownBlue": {"BACKGROUND": "#64778d", "TEXT": "#FFFFFF", "INPUT": "#f0f3f7", "SCROLL": "#A6B2BE", "TEXT_INPUT": "#000000", + "BUTTON": ("#FFFFFF", "#283b5b"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "BrightColors": {"BACKGROUND": "#b4ffb4", "TEXT": "#000000", "INPUT": "#ffff64", "SCROLL": "#ffb482", "TEXT_INPUT": "#000000", + "BUTTON": ("#000000", "#ffa0dc"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "NeutralBlue": {"BACKGROUND": "#92aa9d", "TEXT": "#000000", "INPUT": "#fcfff6", "SCROLL": "#fcfff6", "TEXT_INPUT": "#000000", + "BUTTON": ("#000000", "#d0dbbd"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "Kayak": {"BACKGROUND": "#a7ad7f", "TEXT": "#000000", "INPUT": "#e6d3a8", "SCROLL": "#e6d3a8", "TEXT_INPUT": "#000000", "BUTTON": ("#FFFFFF", "#5d907d"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "SandyBeach": {"BACKGROUND": "#efeccb", "TEXT": "#012f2f", "INPUT": "#e6d3a8", "SCROLL": "#e6d3a8", "TEXT_INPUT": "#012f2f", + "BUTTON": ("#FFFFFF", "#046380"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "TealMono": {"BACKGROUND": "#a8cfdd", "TEXT": "#000000", "INPUT": "#dfedf2", "SCROLL": "#dfedf2", "TEXT_INPUT": "#000000", "BUTTON": ("#FFFFFF", "#183440"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "Default": {"BACKGROUND": COLOR_SYSTEM_DEFAULT, "TEXT": COLOR_SYSTEM_DEFAULT, "INPUT": COLOR_SYSTEM_DEFAULT, "TEXT_INPUT": COLOR_SYSTEM_DEFAULT, + "SCROLL": COLOR_SYSTEM_DEFAULT, "BUTTON": OFFICIAL_PYSIMPLEGUI_BUTTON_COLOR, "PROGRESS": COLOR_SYSTEM_DEFAULT, "BORDER": 1, "SLIDER_DEPTH": 1, + "PROGRESS_DEPTH": 0, }, + "Default1": {"BACKGROUND": COLOR_SYSTEM_DEFAULT, "TEXT": COLOR_SYSTEM_DEFAULT, "INPUT": COLOR_SYSTEM_DEFAULT, "TEXT_INPUT": COLOR_SYSTEM_DEFAULT, + "SCROLL": COLOR_SYSTEM_DEFAULT, "BUTTON": COLOR_SYSTEM_DEFAULT, "PROGRESS": COLOR_SYSTEM_DEFAULT, "BORDER": 1, "SLIDER_DEPTH": 1, + "PROGRESS_DEPTH": 0, }, + "DefaultNoMoreNagging": {"BACKGROUND": COLOR_SYSTEM_DEFAULT, "TEXT": COLOR_SYSTEM_DEFAULT, "INPUT": COLOR_SYSTEM_DEFAULT, + "TEXT_INPUT": COLOR_SYSTEM_DEFAULT, "SCROLL": COLOR_SYSTEM_DEFAULT, "BUTTON": OFFICIAL_PYSIMPLEGUI_BUTTON_COLOR, + "PROGRESS": COLOR_SYSTEM_DEFAULT, "BORDER": 1, "SLIDER_DEPTH": 1, "PROGRESS_DEPTH": 0, }, + "GrayGrayGray": {"BACKGROUND": COLOR_SYSTEM_DEFAULT, "TEXT": COLOR_SYSTEM_DEFAULT, "INPUT": COLOR_SYSTEM_DEFAULT, "TEXT_INPUT": COLOR_SYSTEM_DEFAULT, + "SCROLL": COLOR_SYSTEM_DEFAULT, "BUTTON": COLOR_SYSTEM_DEFAULT, "PROGRESS": COLOR_SYSTEM_DEFAULT, "BORDER": 1, "SLIDER_DEPTH": 1, + "PROGRESS_DEPTH": 0, }, + "LightBlue": {"BACKGROUND": "#E3F2FD", "TEXT": "#000000", "INPUT": "#86A8FF", "TEXT_INPUT": "#000000", "SCROLL": "#86A8FF", + "BUTTON": ("#FFFFFF", "#5079D3"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 0, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "ACCENT1": "#FF0266", "ACCENT2": "#FF5C93", "ACCENT3": "#C5003C", }, + "LightGrey": {"BACKGROUND": "#FAFAFA", "TEXT": "#000000", "INPUT": "#004EA1", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#5EA7FF", + "BUTTON": ("#FFFFFF", "#0079D3"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 0, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "ACCENT1": "#FF0266", "ACCENT2": "#FF5C93", "ACCENT3": "#C5003C", }, + "LightGrey1": {"BACKGROUND": "#ffffff", "TEXT": "#1a1a1b", "INPUT": "#dae0e6", "TEXT_INPUT": "#222222", "SCROLL": "#a5a4a4", + "BUTTON": ("#FFFFFF", "#0079d3"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "ACCENT1": "#ff5414", "ACCENT2": "#33a8ff", "ACCENT3": "#dbf0ff", }, + "DarkBrown": {"BACKGROUND": "#282923", "TEXT": "#E7DB74", "INPUT": "#393a32", "TEXT_INPUT": "#E7C855", "SCROLL": "#E7C855", + "BUTTON": ("#E7C855", "#284B5A"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "ACCENT1": "#c15226", "ACCENT2": "#7a4d5f", "ACCENT3": "#889743", }, + "LightGreen1": {"BACKGROUND": "#9FB8AD", "TEXT": "#000000", "INPUT": "#F7F3EC", "TEXT_INPUT": "#000000", "SCROLL": "#F7F3EC", + "BUTTON": ("#FFFFFF", "#475841"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkGrey": {"BACKGROUND": "#404040", "TEXT": "#FFFFFF", "INPUT": "#4D4D4D", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#707070", "BUTTON": ("#FFFFFF", "#004F00"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "LightGreen2": {"BACKGROUND": "#B7CECE", "TEXT": "#000000", "INPUT": "#FDFFF7", "TEXT_INPUT": "#000000", "SCROLL": "#FDFFF7", + "BUTTON": ("#FFFFFF", "#658268"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "ACCENT1": "#76506d", + "ACCENT2": "#5148f1", "ACCENT3": "#0a1c84", "PROGRESS_DEPTH": 0, }, + "DarkGrey1": {"BACKGROUND": "#404040", "TEXT": "#FFFFFF", "INPUT": "#FFFFFF", "TEXT_INPUT": "#000000", "SCROLL": "#707070", + "BUTTON": ("#FFFFFF", "#004F00"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkBlack": {"BACKGROUND": "#000000", "TEXT": "#FFFFFF", "INPUT": "#4D4D4D", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#707070", + "BUTTON": ("#000000", "#FFFFFF"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "LightBrown": {"BACKGROUND": "#fdf6e3", "TEXT": "#268bd1", "INPUT": "#eee8d5", "TEXT_INPUT": "#6c71c3", "SCROLL": "#eee8d5", + "BUTTON": ("#FFFFFF", "#063542"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "LightBrown1": {"BACKGROUND": "#e5dece", "TEXT": "#063289", "INPUT": "#f9f8f4", "TEXT_INPUT": "#242834", "SCROLL": "#eee8d5", + "BUTTON": ("#FFFFFF", "#063289"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkBlue1": {"BACKGROUND": "#242834", "TEXT": "#dfe6f8", "INPUT": "#97755c", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#a9afbb", + "BUTTON": ("#FFFFFF", "#063289"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkBrown1": {"BACKGROUND": "#2c2825", "TEXT": "#fdcb52", "INPUT": "#705e52", "TEXT_INPUT": "#fdcb52", "SCROLL": "#705e52", + "BUTTON": ("#000000", "#fdcb52"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkBlue2": {"BACKGROUND": "#1a2835", "TEXT": "#d1ecff", "INPUT": "#335267", "TEXT_INPUT": "#acc2d0", "SCROLL": "#1b6497", + "BUTTON": ("#000000", "#fafaf8"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkBrown2": {"BACKGROUND": "#280001", "TEXT": "#FFFFFF", "INPUT": "#d8d584", "TEXT_INPUT": "#000000", "SCROLL": "#763e00", + "BUTTON": ("#000000", "#daad28"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkGreen": {"BACKGROUND": "#82a459", "TEXT": "#000000", "INPUT": "#d8d584", "TEXT_INPUT": "#000000", "SCROLL": "#e3ecf3", + "BUTTON": ("#FFFFFF", "#517239"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "LightBlue1": {"BACKGROUND": "#A5CADD", "TEXT": "#6E266E", "INPUT": "#E0F5FF", "TEXT_INPUT": "#000000", "SCROLL": "#E0F5FF", + "BUTTON": ("#FFFFFF", "#303952"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "LightPurple": {"BACKGROUND": "#B0AAC2", "TEXT": "#000000", "INPUT": "#F2EFE8", "SCROLL": "#F2EFE8", "TEXT_INPUT": "#000000", + "BUTTON": ("#000000", "#C2D4D8"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "LightBlue2": {"BACKGROUND": "#AAB6D3", "TEXT": "#000000", "INPUT": "#F1F4FC", "SCROLL": "#F1F4FC", "TEXT_INPUT": "#000000", + "BUTTON": ("#FFFFFF", "#7186C7"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "LightGreen3": {"BACKGROUND": "#A8C1B4", "TEXT": "#000000", "INPUT": "#DDE0DE", "SCROLL": "#E3E3E3", "TEXT_INPUT": "#000000", + "BUTTON": ("#FFFFFF", "#6D9F85"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkBlue3": {"BACKGROUND": "#64778d", "TEXT": "#FFFFFF", "INPUT": "#f0f3f7", "SCROLL": "#A6B2BE", "TEXT_INPUT": "#000000", + "BUTTON": ("#FFFFFF", "#283b5b"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "LightGreen4": {"BACKGROUND": "#b4ffb4", "TEXT": "#000000", "INPUT": "#ffff64", "SCROLL": "#ffb482", "TEXT_INPUT": "#000000", + "BUTTON": ("#000000", "#ffa0dc"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "LightGreen5": {"BACKGROUND": "#92aa9d", "TEXT": "#000000", "INPUT": "#fcfff6", "SCROLL": "#fcfff6", "TEXT_INPUT": "#000000", + "BUTTON": ("#000000", "#d0dbbd"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "LightBrown2": {"BACKGROUND": "#a7ad7f", "TEXT": "#000000", "INPUT": "#e6d3a8", "SCROLL": "#e6d3a8", "TEXT_INPUT": "#000000", + "BUTTON": ("#FFFFFF", "#5d907d"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "LightBrown3": {"BACKGROUND": "#efeccb", "TEXT": "#012f2f", "INPUT": "#e6d3a8", "SCROLL": "#e6d3a8", "TEXT_INPUT": "#012f2f", + "BUTTON": ("#FFFFFF", "#046380"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "LightBlue3": {"BACKGROUND": "#a8cfdd", "TEXT": "#000000", "INPUT": "#dfedf2", "SCROLL": "#dfedf2", "TEXT_INPUT": "#000000", + "BUTTON": ("#FFFFFF", "#183440"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "LightBrown4": {"BACKGROUND": "#d7c79e", "TEXT": "#a35638", "INPUT": "#9dab86", "TEXT_INPUT": "#000000", "SCROLL": "#a35638", + "BUTTON": ("#FFFFFF", "#a35638"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#a35638", "#9dab86", "#e08f62", "#d7c79e"], }, + "DarkTeal": {"BACKGROUND": "#003f5c", "TEXT": "#fb5b5a", "INPUT": "#bc4873", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#bc4873", "BUTTON": ("#FFFFFF", "#fb5b5a"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#003f5c", "#472b62", "#bc4873", "#fb5b5a"], }, + "DarkPurple": {"BACKGROUND": "#472b62", "TEXT": "#fb5b5a", "INPUT": "#bc4873", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#bc4873", + "BUTTON": ("#FFFFFF", "#472b62"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#003f5c", "#472b62", "#bc4873", "#fb5b5a"], }, + "LightGreen6": {"BACKGROUND": "#eafbea", "TEXT": "#1f6650", "INPUT": "#6f9a8d", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#1f6650", + "BUTTON": ("#FFFFFF", "#1f6650"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#1f6650", "#6f9a8d", "#ea5e5e", "#eafbea"], }, + "DarkGrey2": {"BACKGROUND": "#2b2b28", "TEXT": "#f8f8f8", "INPUT": "#f1d6ab", "TEXT_INPUT": "#000000", "SCROLL": "#f1d6ab", + "BUTTON": ("#2b2b28", "#e3b04b"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#2b2b28", "#e3b04b", "#f1d6ab", "#f8f8f8"], }, + "LightBrown6": {"BACKGROUND": "#f9b282", "TEXT": "#8f4426", "INPUT": "#de6b35", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#8f4426", + "BUTTON": ("#FFFFFF", "#8f4426"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#8f4426", "#de6b35", "#64ccda", "#f9b282"], }, + "DarkTeal1": {"BACKGROUND": "#396362", "TEXT": "#ffe7d1", "INPUT": "#f6c89f", "TEXT_INPUT": "#000000", "SCROLL": "#f6c89f", + "BUTTON": ("#ffe7d1", "#4b8e8d"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#396362", "#4b8e8d", "#f6c89f", "#ffe7d1"], }, + "LightBrown7": {"BACKGROUND": "#f6c89f", "TEXT": "#396362", "INPUT": "#4b8e8d", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#396362", + "BUTTON": ("#FFFFFF", "#396362"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#396362", "#4b8e8d", "#f6c89f", "#ffe7d1"], }, + "DarkPurple1": {"BACKGROUND": "#0c093c", "TEXT": "#fad6d6", "INPUT": "#eea5f6", "TEXT_INPUT": "#000000", "SCROLL": "#eea5f6", + "BUTTON": ("#FFFFFF", "#df42d1"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#0c093c", "#df42d1", "#eea5f6", "#fad6d6"], }, + "DarkGrey3": {"BACKGROUND": "#211717", "TEXT": "#dfddc7", "INPUT": "#f58b54", "TEXT_INPUT": "#000000", "SCROLL": "#f58b54", + "BUTTON": ("#dfddc7", "#a34a28"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#211717", "#a34a28", "#f58b54", "#dfddc7"], }, + "LightBrown8": {"BACKGROUND": "#dfddc7", "TEXT": "#211717", "INPUT": "#a34a28", "TEXT_INPUT": "#dfddc7", "SCROLL": "#211717", + "BUTTON": ("#dfddc7", "#a34a28"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#211717", "#a34a28", "#f58b54", "#dfddc7"], }, + "DarkBlue4": {"BACKGROUND": "#494ca2", "TEXT": "#e3e7f1", "INPUT": "#c6cbef", "TEXT_INPUT": "#000000", "SCROLL": "#c6cbef", + "BUTTON": ("#FFFFFF", "#8186d5"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#494ca2", "#8186d5", "#c6cbef", "#e3e7f1"], }, + "LightBlue4": {"BACKGROUND": "#5c94bd", "TEXT": "#470938", "INPUT": "#1a3e59", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#470938", + "BUTTON": ("#FFFFFF", "#470938"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#470938", "#1a3e59", "#5c94bd", "#f2d6eb"], }, + "DarkTeal2": {"BACKGROUND": "#394a6d", "TEXT": "#c0ffb3", "INPUT": "#52de97", "TEXT_INPUT": "#000000", "SCROLL": "#52de97", + "BUTTON": ("#c0ffb3", "#394a6d"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#394a6d", "#3c9d9b", "#52de97", "#c0ffb3"], }, + "DarkTeal3": {"BACKGROUND": "#3c9d9b", "TEXT": "#c0ffb3", "INPUT": "#52de97", "TEXT_INPUT": "#000000", "SCROLL": "#52de97", + "BUTTON": ("#c0ffb3", "#394a6d"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#394a6d", "#3c9d9b", "#52de97", "#c0ffb3"], }, + "DarkPurple5": {"BACKGROUND": "#730068", "TEXT": "#f6f078", "INPUT": "#01d28e", "TEXT_INPUT": "#000000", "SCROLL": "#01d28e", + "BUTTON": ("#f6f078", "#730068"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#730068", "#434982", "#01d28e", "#f6f078"], }, + "DarkPurple2": {"BACKGROUND": "#202060", "TEXT": "#b030b0", "INPUT": "#602080", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#602080", + "BUTTON": ("#FFFFFF", "#202040"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#202040", "#202060", "#602080", "#b030b0"], }, + "DarkBlue5": {"BACKGROUND": "#000272", "TEXT": "#ff6363", "INPUT": "#a32f80", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#a32f80", + "BUTTON": ("#FFFFFF", "#341677"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#000272", "#341677", "#a32f80", "#ff6363"], }, + "LightGrey2": {"BACKGROUND": "#f6f6f6", "TEXT": "#420000", "INPUT": "#d4d7dd", "TEXT_INPUT": "#420000", "SCROLL": "#420000", + "BUTTON": ("#420000", "#d4d7dd"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#420000", "#d4d7dd", "#eae9e9", "#f6f6f6"], }, + "LightGrey3": {"BACKGROUND": "#eae9e9", "TEXT": "#420000", "INPUT": "#d4d7dd", "TEXT_INPUT": "#420000", "SCROLL": "#420000", + "BUTTON": ("#420000", "#d4d7dd"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#420000", "#d4d7dd", "#eae9e9", "#f6f6f6"], }, + "DarkBlue6": {"BACKGROUND": "#01024e", "TEXT": "#ff6464", "INPUT": "#8b4367", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#8b4367", + "BUTTON": ("#FFFFFF", "#543864"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#01024e", "#543864", "#8b4367", "#ff6464"], }, + "DarkBlue7": {"BACKGROUND": "#241663", "TEXT": "#eae7af", "INPUT": "#a72693", "TEXT_INPUT": "#eae7af", "SCROLL": "#a72693", + "BUTTON": ("#eae7af", "#160f30"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#160f30", "#241663", "#a72693", "#eae7af"], }, + "LightBrown9": {"BACKGROUND": "#f6d365", "TEXT": "#3a1f5d", "INPUT": "#c83660", "TEXT_INPUT": "#f6d365", "SCROLL": "#3a1f5d", + "BUTTON": ("#f6d365", "#c83660"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#3a1f5d", "#c83660", "#e15249", "#f6d365"], }, + "DarkPurple3": {"BACKGROUND": "#6e2142", "TEXT": "#ffd692", "INPUT": "#e16363", "TEXT_INPUT": "#ffd692", "SCROLL": "#e16363", + "BUTTON": ("#ffd692", "#943855"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#6e2142", "#943855", "#e16363", "#ffd692"], }, + "LightBrown10": {"BACKGROUND": "#ffd692", "TEXT": "#6e2142", "INPUT": "#943855", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#6e2142", + "BUTTON": ("#FFFFFF", "#6e2142"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#6e2142", "#943855", "#e16363", "#ffd692"], }, + "DarkPurple4": {"BACKGROUND": "#200f21", "TEXT": "#f638dc", "INPUT": "#5a3d5c", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#5a3d5c", + "BUTTON": ("#FFFFFF", "#382039"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#200f21", "#382039", "#5a3d5c", "#f638dc"], }, + "LightBlue5": {"BACKGROUND": "#b2fcff", "TEXT": "#3e64ff", "INPUT": "#5edfff", "TEXT_INPUT": "#000000", "SCROLL": "#3e64ff", + "BUTTON": ("#FFFFFF", "#3e64ff"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#3e64ff", "#5edfff", "#b2fcff", "#ecfcff"], }, + "DarkTeal4": {"BACKGROUND": "#464159", "TEXT": "#c7f0db", "INPUT": "#8bbabb", "TEXT_INPUT": "#000000", "SCROLL": "#8bbabb", + "BUTTON": ("#FFFFFF", "#6c7b95"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#464159", "#6c7b95", "#8bbabb", "#c7f0db"], }, + "LightTeal": {"BACKGROUND": "#c7f0db", "TEXT": "#464159", "INPUT": "#6c7b95", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#464159", + "BUTTON": ("#FFFFFF", "#464159"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#464159", "#6c7b95", "#8bbabb", "#c7f0db"], }, + "DarkTeal5": {"BACKGROUND": "#8bbabb", "TEXT": "#464159", "INPUT": "#6c7b95", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#464159", + "BUTTON": ("#c7f0db", "#6c7b95"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#464159", "#6c7b95", "#8bbabb", "#c7f0db"], }, + "LightGrey4": {"BACKGROUND": "#faf5ef", "TEXT": "#672f2f", "INPUT": "#99b19c", "TEXT_INPUT": "#672f2f", "SCROLL": "#672f2f", + "BUTTON": ("#672f2f", "#99b19c"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#672f2f", "#99b19c", "#d7d1c9", "#faf5ef"], }, + "LightGreen7": {"BACKGROUND": "#99b19c", "TEXT": "#faf5ef", "INPUT": "#d7d1c9", "TEXT_INPUT": "#000000", "SCROLL": "#d7d1c9", + "BUTTON": ("#FFFFFF", "#99b19c"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#672f2f", "#99b19c", "#d7d1c9", "#faf5ef"], }, + "LightGrey5": {"BACKGROUND": "#d7d1c9", "TEXT": "#672f2f", "INPUT": "#99b19c", "TEXT_INPUT": "#672f2f", "SCROLL": "#672f2f", + "BUTTON": ("#FFFFFF", "#672f2f"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#672f2f", "#99b19c", "#d7d1c9", "#faf5ef"], }, + "DarkBrown3": {"BACKGROUND": "#a0855b", "TEXT": "#f9f6f2", "INPUT": "#f1d6ab", "TEXT_INPUT": "#000000", "SCROLL": "#f1d6ab", + "BUTTON": ("#FFFFFF", "#38470b"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#38470b", "#a0855b", "#f1d6ab", "#f9f6f2"], }, + "LightBrown11": {"BACKGROUND": "#f1d6ab", "TEXT": "#38470b", "INPUT": "#a0855b", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#38470b", + "BUTTON": ("#f9f6f2", "#a0855b"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#38470b", "#a0855b", "#f1d6ab", "#f9f6f2"], }, + "DarkRed": {"BACKGROUND": "#83142c", "TEXT": "#f9d276", "INPUT": "#ad1d45", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#ad1d45", "BUTTON": ("#f9d276", "#ad1d45"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#44000d", "#83142c", "#ad1d45", "#f9d276"], }, + "DarkTeal6": {"BACKGROUND": "#204969", "TEXT": "#fff7f7", "INPUT": "#dadada", "TEXT_INPUT": "#000000", "SCROLL": "#dadada", + "BUTTON": ("#000000", "#fff7f7"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#204969", "#08ffc8", "#dadada", "#fff7f7"], }, + "DarkBrown4": {"BACKGROUND": "#252525", "TEXT": "#ff0000", "INPUT": "#af0404", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#af0404", + "BUTTON": ("#FFFFFF", "#252525"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#252525", "#414141", "#af0404", "#ff0000"], }, + "LightYellow": {"BACKGROUND": "#f4ff61", "TEXT": "#27aa80", "INPUT": "#32ff6a", "TEXT_INPUT": "#000000", "SCROLL": "#27aa80", + "BUTTON": ("#f4ff61", "#27aa80"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#27aa80", "#32ff6a", "#a8ff3e", "#f4ff61"], }, + "DarkGreen1": {"BACKGROUND": "#2b580c", "TEXT": "#fdef96", "INPUT": "#f7b71d", "TEXT_INPUT": "#000000", "SCROLL": "#f7b71d", + "BUTTON": ("#fdef96", "#2b580c"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#2b580c", "#afa939", "#f7b71d", "#fdef96"], }, + "LightGreen8": {"BACKGROUND": "#c8dad3", "TEXT": "#63707e", "INPUT": "#93b5b3", "TEXT_INPUT": "#000000", "SCROLL": "#63707e", + "BUTTON": ("#FFFFFF", "#63707e"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#63707e", "#93b5b3", "#c8dad3", "#f2f6f5"], }, + "DarkTeal7": {"BACKGROUND": "#248ea9", "TEXT": "#fafdcb", "INPUT": "#aee7e8", "TEXT_INPUT": "#000000", "SCROLL": "#aee7e8", + "BUTTON": ("#000000", "#fafdcb"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#248ea9", "#28c3d4", "#aee7e8", "#fafdcb"], }, + "DarkBlue8": {"BACKGROUND": "#454d66", "TEXT": "#d9d872", "INPUT": "#58b368", "TEXT_INPUT": "#000000", "SCROLL": "#58b368", + "BUTTON": ("#000000", "#009975"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#009975", "#454d66", "#58b368", "#d9d872"], }, + "DarkBlue9": {"BACKGROUND": "#263859", "TEXT": "#ff6768", "INPUT": "#6b778d", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#6b778d", + "BUTTON": ("#ff6768", "#263859"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#17223b", "#263859", "#6b778d", "#ff6768"], }, + "DarkBlue10": {"BACKGROUND": "#0028ff", "TEXT": "#f1f4df", "INPUT": "#10eaf0", "TEXT_INPUT": "#000000", "SCROLL": "#10eaf0", + "BUTTON": ("#f1f4df", "#24009c"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#24009c", "#0028ff", "#10eaf0", "#f1f4df"], }, + "DarkBlue11": {"BACKGROUND": "#6384b3", "TEXT": "#e6f0b6", "INPUT": "#b8e9c0", "TEXT_INPUT": "#000000", "SCROLL": "#b8e9c0", + "BUTTON": ("#e6f0b6", "#684949"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#684949", "#6384b3", "#b8e9c0", "#e6f0b6"], }, + "DarkTeal8": {"BACKGROUND": "#71a0a5", "TEXT": "#212121", "INPUT": "#665c84", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#212121", + "BUTTON": ("#fab95b", "#665c84"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#212121", "#665c84", "#71a0a5", "#fab95b"], }, + "DarkRed1": {"BACKGROUND": "#c10000", "TEXT": "#eeeeee", "INPUT": "#dedede", "TEXT_INPUT": "#000000", "SCROLL": "#dedede", "BUTTON": ("#c10000", "#eeeeee"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#c10000", "#ff4949", "#dedede", "#eeeeee"], }, + "LightBrown5": {"BACKGROUND": "#fff591", "TEXT": "#e41749", "INPUT": "#f5587b", "TEXT_INPUT": "#000000", "SCROLL": "#e41749", + "BUTTON": ("#fff591", "#e41749"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#e41749", "#f5587b", "#ff8a5c", "#fff591"], }, + "LightGreen9": {"BACKGROUND": "#f1edb3", "TEXT": "#3b503d", "INPUT": "#4a746e", "TEXT_INPUT": "#f1edb3", "SCROLL": "#3b503d", + "BUTTON": ("#f1edb3", "#3b503d"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#3b503d", "#4a746e", "#c8cf94", "#f1edb3"], "DESCRIPTION": ["Green", "Turquoise", "Yellow"], }, + "DarkGreen2": {"BACKGROUND": "#3b503d", "TEXT": "#f1edb3", "INPUT": "#c8cf94", "TEXT_INPUT": "#000000", "SCROLL": "#c8cf94", + "BUTTON": ("#f1edb3", "#3b503d"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#3b503d", "#4a746e", "#c8cf94", "#f1edb3"], "DESCRIPTION": ["Green", "Turquoise", "Yellow"], }, + "LightGray1": {"BACKGROUND": "#f2f2f2", "TEXT": "#222831", "INPUT": "#393e46", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#222831", + "BUTTON": ("#f2f2f2", "#222831"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#222831", "#393e46", "#f96d00", "#f2f2f2"], "DESCRIPTION": ["#000000", "Grey", "Orange", "Grey", "Autumn"], }, + "DarkGrey4": {"BACKGROUND": "#52524e", "TEXT": "#e9e9e5", "INPUT": "#d4d6c8", "TEXT_INPUT": "#000000", "SCROLL": "#d4d6c8", + "BUTTON": ("#FFFFFF", "#9a9b94"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#52524e", "#9a9b94", "#d4d6c8", "#e9e9e5"], "DESCRIPTION": ["Grey", "Pastel", "Winter"], }, + "DarkBlue12": {"BACKGROUND": "#324e7b", "TEXT": "#f8f8f8", "INPUT": "#86a6df", "TEXT_INPUT": "#000000", "SCROLL": "#86a6df", + "BUTTON": ("#FFFFFF", "#5068a9"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#324e7b", "#5068a9", "#86a6df", "#f8f8f8"], "DESCRIPTION": ["Blue", "Grey", "Cold", "Winter"], }, + "DarkPurple6": {"BACKGROUND": "#070739", "TEXT": "#e1e099", "INPUT": "#c327ab", "TEXT_INPUT": "#e1e099", "SCROLL": "#c327ab", + "BUTTON": ("#e1e099", "#521477"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#070739", "#521477", "#c327ab", "#e1e099"], "DESCRIPTION": ["#000000", "Purple", "Yellow", "Dark"], }, + "DarkPurple7": {"BACKGROUND": "#191930", "TEXT": "#B1B7C5", "INPUT": "#232B5C", "TEXT_INPUT": "#D0E3E7", "SCROLL": "#B1B7C5", + "BUTTON": ("#272D38", "#B1B7C5"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkBlue13": {"BACKGROUND": "#203562", "TEXT": "#e3e8f8", "INPUT": "#c0c5cd", "TEXT_INPUT": "#000000", "SCROLL": "#c0c5cd", + "BUTTON": ("#FFFFFF", "#3e588f"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#203562", "#3e588f", "#c0c5cd", "#e3e8f8"], "DESCRIPTION": ["Blue", "Grey", "Wedding", "Cold"], }, + "DarkBrown5": {"BACKGROUND": "#3c1b1f", "TEXT": "#f6e1b5", "INPUT": "#e2bf81", "TEXT_INPUT": "#000000", "SCROLL": "#e2bf81", + "BUTTON": ("#3c1b1f", "#f6e1b5"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#3c1b1f", "#b21e4b", "#e2bf81", "#f6e1b5"], "DESCRIPTION": ["Brown", "Red", "Yellow", "Warm"], }, + "DarkGreen3": {"BACKGROUND": "#062121", "TEXT": "#eeeeee", "INPUT": "#e4dcad", "TEXT_INPUT": "#000000", "SCROLL": "#e4dcad", + "BUTTON": ("#eeeeee", "#181810"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#062121", "#181810", "#e4dcad", "#eeeeee"], "DESCRIPTION": ["#000000", "#000000", "Brown", "Grey"], }, + "DarkBlack1": {"BACKGROUND": "#181810", "TEXT": "#eeeeee", "INPUT": "#e4dcad", "TEXT_INPUT": "#000000", "SCROLL": "#e4dcad", + "BUTTON": ("#FFFFFF", "#062121"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#062121", "#181810", "#e4dcad", "#eeeeee"], "DESCRIPTION": ["#000000", "#000000", "Brown", "Grey"], }, + "DarkGrey5": {"BACKGROUND": "#343434", "TEXT": "#f3f3f3", "INPUT": "#e9dcbe", "TEXT_INPUT": "#000000", "SCROLL": "#e9dcbe", + "BUTTON": ("#FFFFFF", "#8e8b82"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#343434", "#8e8b82", "#e9dcbe", "#f3f3f3"], "DESCRIPTION": ["Grey", "Brown"], }, + "LightBrown12": {"BACKGROUND": "#8e8b82", "TEXT": "#f3f3f3", "INPUT": "#e9dcbe", "TEXT_INPUT": "#000000", "SCROLL": "#e9dcbe", + "BUTTON": ("#f3f3f3", "#8e8b82"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#343434", "#8e8b82", "#e9dcbe", "#f3f3f3"], "DESCRIPTION": ["Grey", "Brown"], }, + "DarkTeal9": {"BACKGROUND": "#13445a", "TEXT": "#fef4e8", "INPUT": "#446878", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#446878", + "BUTTON": ("#fef4e8", "#446878"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#13445a", "#970747", "#446878", "#fef4e8"], "DESCRIPTION": ["Red", "Grey", "Blue", "Wedding", "Retro"], }, + "DarkBlue14": {"BACKGROUND": "#21273d", "TEXT": "#f1f6f8", "INPUT": "#b9d4f1", "TEXT_INPUT": "#000000", "SCROLL": "#b9d4f1", + "BUTTON": ("#FFFFFF", "#6a759b"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#21273d", "#6a759b", "#b9d4f1", "#f1f6f8"], "DESCRIPTION": ["Blue", "#000000", "Grey", "Cold", "Winter"], }, + "LightBlue6": {"BACKGROUND": "#f1f6f8", "TEXT": "#21273d", "INPUT": "#6a759b", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#21273d", + "BUTTON": ("#f1f6f8", "#6a759b"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#21273d", "#6a759b", "#b9d4f1", "#f1f6f8"], "DESCRIPTION": ["Blue", "#000000", "Grey", "Cold", "Winter"], }, + "DarkGreen4": {"BACKGROUND": "#044343", "TEXT": "#e4e4e4", "INPUT": "#045757", "TEXT_INPUT": "#e4e4e4", "SCROLL": "#045757", + "BUTTON": ("#e4e4e4", "#045757"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#222222", "#044343", "#045757", "#e4e4e4"], "DESCRIPTION": ["#000000", "Turquoise", "Grey", "Dark"], }, + "DarkGreen5": {"BACKGROUND": "#1b4b36", "TEXT": "#e0e7f1", "INPUT": "#aebd77", "TEXT_INPUT": "#000000", "SCROLL": "#aebd77", + "BUTTON": ("#FFFFFF", "#538f6a"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#1b4b36", "#538f6a", "#aebd77", "#e0e7f1"], "DESCRIPTION": ["Green", "Grey"], }, + "DarkTeal10": {"BACKGROUND": "#0d3446", "TEXT": "#d8dfe2", "INPUT": "#71adb5", "TEXT_INPUT": "#000000", "SCROLL": "#71adb5", + "BUTTON": ("#FFFFFF", "#176d81"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#0d3446", "#176d81", "#71adb5", "#d8dfe2"], "DESCRIPTION": ["Grey", "Turquoise", "Winter", "Cold"], }, + "DarkGrey6": {"BACKGROUND": "#3e3e3e", "TEXT": "#ededed", "INPUT": "#68868c", "TEXT_INPUT": "#ededed", "SCROLL": "#68868c", + "BUTTON": ("#FFFFFF", "#405559"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#3e3e3e", "#405559", "#68868c", "#ededed"], "DESCRIPTION": ["Grey", "Turquoise", "Winter"], }, + "DarkTeal11": {"BACKGROUND": "#405559", "TEXT": "#ededed", "INPUT": "#68868c", "TEXT_INPUT": "#ededed", "SCROLL": "#68868c", + "BUTTON": ("#ededed", "#68868c"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#3e3e3e", "#405559", "#68868c", "#ededed"], "DESCRIPTION": ["Grey", "Turquoise", "Winter"], }, + "LightBlue7": {"BACKGROUND": "#9ed0e0", "TEXT": "#19483f", "INPUT": "#5c868e", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#19483f", + "BUTTON": ("#FFFFFF", "#19483f"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#19483f", "#5c868e", "#ff6a38", "#9ed0e0"], "DESCRIPTION": ["Orange", "Blue", "Turquoise"], }, + "LightGreen10": {"BACKGROUND": "#d8ebb5", "TEXT": "#205d67", "INPUT": "#639a67", "TEXT_INPUT": "#FFFFFF", "SCROLL": "#205d67", + "BUTTON": ("#d8ebb5", "#205d67"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#205d67", "#639a67", "#d9bf77", "#d8ebb5"], "DESCRIPTION": ["Blue", "Green", "Brown", "Vintage"], }, + "DarkBlue15": {"BACKGROUND": "#151680", "TEXT": "#f1fea4", "INPUT": "#375fc0", "TEXT_INPUT": "#f1fea4", "SCROLL": "#375fc0", + "BUTTON": ("#f1fea4", "#1c44ac"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#151680", "#1c44ac", "#375fc0", "#f1fea4"], "DESCRIPTION": ["Blue", "Yellow", "Cold"], }, + "DarkBlue16": {"BACKGROUND": "#1c44ac", "TEXT": "#f1fea4", "INPUT": "#375fc0", "TEXT_INPUT": "#f1fea4", "SCROLL": "#375fc0", + "BUTTON": ("#f1fea4", "#151680"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#151680", "#1c44ac", "#375fc0", "#f1fea4"], "DESCRIPTION": ["Blue", "Yellow", "Cold"], }, + "DarkTeal12": {"BACKGROUND": "#004a7c", "TEXT": "#fafafa", "INPUT": "#e8f1f5", "TEXT_INPUT": "#000000", "SCROLL": "#e8f1f5", + "BUTTON": ("#fafafa", "#005691"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#004a7c", "#005691", "#e8f1f5", "#fafafa"], "DESCRIPTION": ["Grey", "Blue", "Cold", "Winter"], }, + "LightBrown13": {"BACKGROUND": "#ebf5ee", "TEXT": "#921224", "INPUT": "#bdc6b8", "TEXT_INPUT": "#921224", "SCROLL": "#921224", + "BUTTON": ("#FFFFFF", "#921224"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#921224", "#bdc6b8", "#bce0da", "#ebf5ee"], "DESCRIPTION": ["Red", "Blue", "Grey", "Vintage", "Wedding"], }, + "DarkBlue17": {"BACKGROUND": "#21294c", "TEXT": "#f9f2d7", "INPUT": "#f2dea8", "TEXT_INPUT": "#000000", "SCROLL": "#f2dea8", + "BUTTON": ("#f9f2d7", "#141829"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#141829", "#21294c", "#f2dea8", "#f9f2d7"], "DESCRIPTION": ["#000000", "Blue", "Yellow"], }, + "DarkBlue18": {"BACKGROUND": "#0c1825", "TEXT": "#d1d7dd", "INPUT": "#001c35", "TEXT_INPUT": "#d1d7dd", "SCROLL": "#00438e", + "BUTTON": ("#75b7ff", "#001c35"), "PROGRESS": ('#0074ff', '#75b7ff'), "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#141829", "#21294c", "#f2dea8", "#f9f2d7"], "DESCRIPTION": ["#000000", "Blue", "Yellow"], }, + "DarkBrown6": {"BACKGROUND": "#785e4d", "TEXT": "#f2eee3", "INPUT": "#baaf92", "TEXT_INPUT": "#000000", "SCROLL": "#baaf92", + "BUTTON": ("#FFFFFF", "#785e4d"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#785e4d", "#ff8426", "#baaf92", "#f2eee3"], "DESCRIPTION": ["Grey", "Brown", "Orange", "Autumn"], }, + "DarkGreen6": {"BACKGROUND": "#5c715e", "TEXT": "#f2f9f1", "INPUT": "#ddeedf", "TEXT_INPUT": "#000000", "SCROLL": "#ddeedf", + "BUTTON": ("#f2f9f1", "#5c715e"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#5c715e", "#b6cdbd", "#ddeedf", "#f2f9f1"], "DESCRIPTION": ["Grey", "Green", "Vintage"], }, + "DarkGreen7": {"BACKGROUND": "#0C231E", "TEXT": "#efbe1c", "INPUT": "#153C33", "TEXT_INPUT": "#efbe1c", "SCROLL": "#153C33", + "BUTTON": ("#efbe1c", "#153C33"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkGrey7": {"BACKGROUND": "#4b586e", "TEXT": "#dddddd", "INPUT": "#574e6d", "TEXT_INPUT": "#dddddd", "SCROLL": "#574e6d", + "BUTTON": ("#dddddd", "#43405d"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#43405d", "#4b586e", "#574e6d", "#dddddd"], "DESCRIPTION": ["Grey", "Winter", "Cold"], }, + "DarkRed2": {"BACKGROUND": "#ab1212", "TEXT": "#f6e4b5", "INPUT": "#cd3131", "TEXT_INPUT": "#f6e4b5", "SCROLL": "#cd3131", "BUTTON": ("#f6e4b5", "#ab1212"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#ab1212", "#1fad9f", "#cd3131", "#f6e4b5"], "DESCRIPTION": ["Turquoise", "Red", "Yellow"], }, + "LightGrey6": {"BACKGROUND": "#e3e3e3", "TEXT": "#233142", "INPUT": "#455d7a", "TEXT_INPUT": "#e3e3e3", "SCROLL": "#233142", + "BUTTON": ("#e3e3e3", "#455d7a"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, + "COLOR_LIST": ["#233142", "#455d7a", "#f95959", "#e3e3e3"], "DESCRIPTION": ["#000000", "Blue", "Red", "Grey"], }, + "HotDogStand": {"BACKGROUND": "red", "TEXT": "yellow", "INPUT": "yellow", "TEXT_INPUT": "#000000", "SCROLL": "yellow", "BUTTON": ("red", "yellow"), + "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkGrey8": {"BACKGROUND": "#19232D", "TEXT": "#ffffff", "INPUT": "#32414B", "TEXT_INPUT": "#ffffff", "SCROLL": "#505F69", + "BUTTON": ("#ffffff", "#32414B"), "PROGRESS": ("#505F69", "#32414B"), "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkGrey9": {"BACKGROUND": "#36393F", "TEXT": "#DCDDDE", "INPUT": "#40444B", "TEXT_INPUT": "#ffffff", "SCROLL": "#202225", + "BUTTON": ("#202225", "#B9BBBE"), "PROGRESS": ("#202225", "#40444B"), "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkGrey10": {"BACKGROUND": "#1c1e23", "TEXT": "#cccdcf", "INPUT": "#272a31", "TEXT_INPUT": "#8b9fde", "SCROLL": "#313641", + "BUTTON": ("#f5f5f6", "#2e3d5a"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkGrey11": {"BACKGROUND": "#1c1e23", "TEXT": "#cccdcf", "INPUT": "#313641", "TEXT_INPUT": "#cccdcf", "SCROLL": "#313641", + "BUTTON": ("#f5f5f6", "#313641"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkGrey12": {"BACKGROUND": "#1c1e23", "TEXT": "#8b9fde", "INPUT": "#313641", "TEXT_INPUT": "#8b9fde", "SCROLL": "#313641", + "BUTTON": ("#cccdcf", "#2e3d5a"), "PROGRESS": DEFAULT_PROGRESS_BAR_COMPUTE, "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkGrey13": {"BACKGROUND": "#1c1e23", "TEXT": "#cccdcf", "INPUT": "#272a31", "TEXT_INPUT": "#cccdcf", "SCROLL": "#313641", + "BUTTON": ("#8b9fde", "#313641"), "PROGRESS": ("#cccdcf", "#272a31"), "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkGrey14": {"BACKGROUND": "#24292e", "TEXT": "#fafbfc", "INPUT": "#1d2125", "TEXT_INPUT": "#fafbfc", "SCROLL": "#1d2125", + "BUTTON": ("#fafbfc", "#155398"), "PROGRESS": ("#155398", "#1d2125"), "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "DarkGrey15": {'BACKGROUND': '#121212', 'TEXT': '#dddddd', 'INPUT': '#1e1e1e', 'TEXT_INPUT': '#69b1ef', 'SCROLL': '#272727', + 'BUTTON': ('#69b1ef', '#2e2e2e'), 'PROGRESS': ('#69b1ef', '#2e2e2e'), 'BORDER': 1, 'SLIDER_DEPTH': 0, 'PROGRESS_DEPTH': 0, }, + "DarkGrey16": {'BACKGROUND': '#353535', 'TEXT': '#ffffff', 'INPUT': '#191919', 'TEXT_INPUT': '#ffffff', 'SCROLL': '#454545', + 'BUTTON': ('#ffffff', '#454545'), 'PROGRESS': ('#757575', '#454545'), 'BORDER': 1, 'SLIDER_DEPTH': 0, 'PROGRESS_DEPTH': 0, }, + "DarkBrown7": {"BACKGROUND": "#2c2417", "TEXT": "#baa379", "INPUT": "#baa379", "TEXT_INPUT": "#000000", "SCROLL": "#392e1c", + "BUTTON": ("#000000", "#baa379"), "PROGRESS": ("#baa379", "#453923"), "BORDER": 1, "SLIDER_DEPTH": 1, "PROGRESS_DEPTH": 0, }, + "Python": {"BACKGROUND": "#3d7aab", "TEXT": "#ffde56", "INPUT": "#295273", "TEXT_INPUT": "#ffde56", "SCROLL": "#295273", + "BUTTON": ("#ffde56", "#295273"), "PROGRESS": ("#ffde56", "#295273"), "BORDER": 1, "SLIDER_DEPTH": 1, "PROGRESS_DEPTH": 0, }, + "PythonPlus": {"BACKGROUND": "#001d3c", "TEXT": "#ffffff", "INPUT": "#015bbb", "TEXT_INPUT": "#fed500", "SCROLL": "#015bbb", + "BUTTON": ("#fed500", "#015bbb"), "PROGRESS": ("#015bbb", "#fed500"), "BORDER": 1, "SLIDER_DEPTH": 1, "PROGRESS_DEPTH": 0, }, + "NeonBlue1": {"BACKGROUND": "#000000", "TEXT": "#ffffff", "INPUT": "#000000", "TEXT_INPUT": "#33ccff", "SCROLL": "#33ccff", + "BUTTON": ("#33ccff", "#000000"), "PROGRESS": ("#33ccff", "#ffffff"), "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "NeonGreen1": {"BACKGROUND": "#000000", "TEXT": "#ffffff", "INPUT": "#000000", "TEXT_INPUT": "#96ff7b", "SCROLL": "#96ff7b", + "BUTTON": ("#96ff7b", "#000000"), "PROGRESS": ("#96ff7b", "#ffffff"), "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, + "NeonYellow1": {"BACKGROUND": "#000000", "TEXT": "#ffffff", "INPUT": "#000000", "TEXT_INPUT": "#ffcf40", "SCROLL": "#ffcf40", + "BUTTON": ("#ffcf40", "#000000"), "PROGRESS": ("#ffcf40", "#ffffff"), "BORDER": 1, "SLIDER_DEPTH": 0, "PROGRESS_DEPTH": 0, }, +} + + +def list_of_look_and_feel_values(): + """ + Get a list of the valid values to pass into your call to change_look_and_feel + + :return: list of valid string values + :rtype: List[str] + """ + + return sorted(list(LOOK_AND_FEEL_TABLE.keys())) + + +def theme(new_theme=None): + """ + Sets / Gets the current Theme. If none is specified then returns the current theme. + This call replaces the ChangeLookAndFeel / change_look_and_feel call which only sets the theme. + + :param new_theme: the new theme name to use + :type new_theme: (str) + :return: the currently selected theme + :rtype: (str) + """ + global TRANSPARENT_BUTTON + + if new_theme is not None: + change_look_and_feel(new_theme) + TRANSPARENT_BUTTON = (theme_background_color(), theme_background_color()) + return CURRENT_LOOK_AND_FEEL + + +def theme_background_color(color=None): + """ + Sets/Returns the background color currently in use + Used for Windows and containers (Column, Frame, Tab) and tables + + :param color: new background color to use (optional) + :type color: (str) + :return: color string of the background color currently in use + :rtype: (str) + """ + if color is not None: + set_options(background_color=color) + return DEFAULT_BACKGROUND_COLOR + + +# This "constant" is misleading but rather than remove and break programs, will try this method instead +TRANSPARENT_BUTTON = (theme_background_color(), theme_background_color()) # replaces an older version that had hardcoded numbers + + +def theme_element_background_color(color=None): + """ + Sets/Returns the background color currently in use for all elements except containers + + :return: (str) - color string of the element background color currently in use + :rtype: (str) + """ + if color is not None: + set_options(element_background_color=color) + return DEFAULT_ELEMENT_BACKGROUND_COLOR + + +def theme_text_color(color=None): + """ + Sets/Returns the text color currently in use + + :return: (str) - color string of the text color currently in use + :rtype: (str) + """ + if color is not None: + set_options(text_color=color) + return DEFAULT_TEXT_COLOR + + +def theme_text_element_background_color(color=None): + """ + Sets/Returns the background color for text elements + + :return: (str) - color string of the text background color currently in use + :rtype: (str) + """ + if color is not None: + set_options(text_element_background_color=color) + return DEFAULT_TEXT_ELEMENT_BACKGROUND_COLOR + + +def theme_input_background_color(color=None): + """ + Sets/Returns the input element background color currently in use + + :return: (str) - color string of the input element background color currently in use + :rtype: (str) + """ + if color is not None: + set_options(input_elements_background_color=color) + return DEFAULT_INPUT_ELEMENTS_COLOR + + +def theme_input_text_color(color=None): + """ + Sets/Returns the input element entry color (not the text but the thing that's displaying the text) + + :return: (str) - color string of the input element color currently in use + :rtype: (str) + """ + if color is not None: + set_options(input_text_color=color) + return DEFAULT_INPUT_TEXT_COLOR + + +def theme_button_color(color=None): + """ + Sets/Returns the button color currently in use + + :return: (str, str) - TUPLE with color strings of the button color currently in use (button text color, button background color) + :rtype: (str, str) + """ + if color is not None: + if color == COLOR_SYSTEM_DEFAULT: + color_tuple = (COLOR_SYSTEM_DEFAULT, COLOR_SYSTEM_DEFAULT) + else: + color_tuple = button_color_to_tuple(color, (None, None)) + if color_tuple == (None, None): + if not SUPPRESS_ERROR_POPUPS: + popup_error('theme_button_color - bad color string passed in', color) + else: + print('** Badly formatted button color... not a tuple nor string **', color) + set_options(button_color=color) # go ahead and try with their string + else: + set_options(button_color=color_tuple) + return DEFAULT_BUTTON_COLOR + + +def theme_button_color_background(): + """ + Returns the button color background currently in use. Note this function simple calls the theme_button_color + function and splits apart the tuple + + :return: color string of the button color background currently in use + :rtype: (str) + """ + return theme_button_color()[1] + + +def theme_button_color_text(): + """ + Returns the button color text currently in use. Note this function simple calls the theme_button_color + function and splits apart the tuple + + :return: color string of the button color text currently in use + :rtype: (str) + """ + return theme_button_color()[0] + + +def theme_progress_bar_color(color=None): + """ + Sets/Returns the progress bar colors by the current color theme + + :return: (str, str) - TUPLE with color strings of the ProgressBar color currently in use(button text color, button background color) + :rtype: (str, str) + """ + if color is not None: + set_options(progress_meter_color=color) + return DEFAULT_PROGRESS_BAR_COLOR + + +def theme_slider_color(color=None): + """ + Sets/Returns the slider color (used for sliders) + + :return: color string of the slider color currently in use + :rtype: (str) + """ + if color is not None: + set_options(scrollbar_color=color) + return DEFAULT_SCROLLBAR_COLOR + + +def theme_border_width(border_width=None): + """ + Sets/Returns the border width currently in use + Used by non ttk elements at the moment + + :return: border width currently in use + :rtype: (int) + """ + if border_width is not None: + set_options(border_width=border_width) + return DEFAULT_BORDER_WIDTH + + +def theme_slider_border_width(border_width=None): + """ + Sets/Returns the slider border width currently in use + + :return: border width currently in use for sliders + :rtype: (int) + """ + if border_width is not None: + set_options(slider_border_width=border_width) + return DEFAULT_SLIDER_BORDER_WIDTH + + +def theme_progress_bar_border_width(border_width=None): + """ + Sets/Returns the progress meter border width currently in use + + :return: border width currently in use for progress meters + :rtype: (int) + """ + if border_width is not None: + set_options(progress_meter_border_depth=border_width) + return DEFAULT_PROGRESS_BAR_BORDER_WIDTH + + +def theme_element_text_color(color=None): + """ + Sets/Returns the text color used by elements that have text as part of their display (Tables, Trees and Sliders) + + :return: color string currently in use + :rtype: (str) + """ + if color is not None: + set_options(element_text_color=color) + return DEFAULT_ELEMENT_TEXT_COLOR + + +def theme_list(): + """ + Returns a sorted list of the currently available color themes + + :return: A sorted list of the currently available color themes + :rtype: List[str] + """ + return list_of_look_and_feel_values() + + +def theme_add_new(new_theme_name, new_theme_dict): + """ + Add a new theme to the dictionary of themes + + :param new_theme_name: text to display in element + :type new_theme_name: (str) + :param new_theme_dict: text to display in element + :type new_theme_dict: (dict) + """ + global LOOK_AND_FEEL_TABLE + try: + LOOK_AND_FEEL_TABLE[new_theme_name] = new_theme_dict + except Exception as e: + print('Exception during adding new theme {}'.format(e)) + + +def theme_use_custom_titlebar(): + """ + Returns True if a custom titlebar will be / should be used. + The setting is in the Global Settings window and can be overwridden + using set_options call + + :return: True if a custom titlebar / custom menubar should be used + :rtype: (bool) + """ + if USE_CUSTOM_TITLEBAR is False: + return False + + return USE_CUSTOM_TITLEBAR or pysimplegui_user_settings.get('-custom titlebar-', False) + + +def theme_global(new_theme=None): + """ + Sets / Gets the global PySimpleGUI Theme. If none is specified then returns the global theme from user settings. + Note the theme must be a standard, built-in PySimpleGUI theme... not a user-created theme. + + :param new_theme: the new theme name to use + :type new_theme: (str) + :return: the currently selected theme + :rtype: (str) + """ + if new_theme is not None: + if new_theme not in theme_list(): + popup_error_with_traceback('Cannot use custom themes with theme_global call', + 'Your request to use theme {} cannot be performed.'.format(new_theme), + 'The PySimpleGUI Global User Settings are meant for PySimpleGUI standard items, not user config items', + 'You can use any of the many built-in themes instead or use your own UserSettings file to store your custom theme') + return pysimplegui_user_settings.get('-theme-', CURRENT_LOOK_AND_FEEL) + pysimplegui_user_settings.set('-theme-', new_theme) + theme(new_theme) + return new_theme + else: + return pysimplegui_user_settings.get('-theme-', CURRENT_LOOK_AND_FEEL) + + +def theme_previewer(columns=12, scrollable=False, scroll_area_size=(None, None), search_string=None, location=(None, None)): + """ + Displays a "Quick Reference Window" showing all of the different Look and Feel settings that are available. + They are sorted alphabetically. The legacy color names are mixed in, but otherwise they are sorted into Dark and Light halves + + :param columns: The number of themes to display per row + :type columns: int + :param scrollable: If True then scrollbars will be added + :type scrollable: bool + :param scroll_area_size: Size of the scrollable area (The Column Element used to make scrollable) + :type scroll_area_size: (int, int) + :param search_string: If specified then only themes containing this string will be shown + :type search_string: str + :param location: Location on the screen to place the window. Defaults to the center like all windows + :type location: (int, int) + """ + + current_theme = theme() + + # Show a "splash" type message so the user doesn't give up waiting + popup_quick_message('Hang on for a moment, this will take a bit to create....', keep_on_top=True, background_color='red', text_color='#FFFFFF', + auto_close=True, non_blocking=True) + + web = False + + win_bg = 'black' + + def sample_layout(): + return [[Text('Text element'), InputText('Input data here', size=(10, 1))], + [Button('Ok'), Button('Disabled', disabled=True), Slider((1, 10), orientation='h', size=(5, 15))]] + + names = list_of_look_and_feel_values() + names.sort() + if search_string not in (None, ''): + names = [name for name in names if search_string.lower().replace(" ", "") in name.lower().replace(" ", "")] + + if search_string not in (None, ''): + layout = [[Text('Themes containing "{}"'.format(search_string), font='Default 18', background_color=win_bg)]] + else: + layout = [[Text('List of all themes', font='Default 18', background_color=win_bg)]] + + col_layout = [] + row = [] + for count, theme_name in enumerate(names): + theme(theme_name) + if not count % columns: + col_layout += [row] + row = [] + row += [Frame(theme_name, sample_layout() if not web else [[T(theme_name)]] + sample_layout(), pad=(2, 2))] + if row: + col_layout += [row] + + layout += [[Column(col_layout, scrollable=scrollable, size=scroll_area_size, pad=(0, 0), background_color=win_bg, key='-COL-')]] + window = Window('Preview of Themes', layout, background_color=win_bg, resizable=True, location=location, keep_on_top=True, finalize=True, modal=True) + window['-COL-'].expand(True, True, True) # needed so that col will expand with the window + window.read(close=True) + theme(current_theme) + + +preview_all_look_and_feel_themes = theme_previewer + + +def _theme_preview_window_swatches(): + # Begin the layout with a header + layout = [[Text('Themes as color swatches', text_color='white', background_color='black', font='Default 25')], + [Text('Tooltip and right click a color to get the value', text_color='white', background_color='black', font='Default 15')], + [Text('Left click a color to copy to clipboard', text_color='white', background_color='black', font='Default 15')]] + layout = [[Column(layout, element_justification='c', background_color='black')]] + # Create the pain part, the rows of Text with color swatches + for i, theme_name in enumerate(theme_list()): + theme(theme_name) + colors = [theme_background_color(), theme_text_color(), theme_input_background_color(), + theme_input_text_color()] + if theme_button_color() != COLOR_SYSTEM_DEFAULT: + colors.append(theme_button_color()[0]) + colors.append(theme_button_color()[1]) + colors = list(set(colors)) # de-duplicate items + row = [T(theme(), background_color='black', text_color='white', size=(20, 1), justification='r')] + for color in colors: + if color != COLOR_SYSTEM_DEFAULT: + row.append(T(SYMBOL_SQUARE, text_color=color, background_color='black', pad=(0, 0), font='DEFAUlT 20', right_click_menu=['Nothing', [color]], + tooltip=color, enable_events=True, key=(i, color))) + layout += [row] + # place layout inside of a Column so that it's scrollable + layout = [[Column(layout, size=(500, 900), scrollable=True, vertical_scroll_only=True, background_color='black')]] + # finish the layout by adding an exit button + layout += [[B('Exit')]] + + # create and return Window that uses the layout + return Window('Theme Color Swatches', layout, background_color='black', finalize=True, keep_on_top=True) + + +def theme_previewer_swatches(): + """ + Display themes in a window as color swatches. + Click on a color swatch to see the hex value printed on the console. + If you hover over a color or right click it you'll also see the hext value. + """ + current_theme = theme() + popup_quick_message('This is going to take a minute...', text_color='white', background_color='red', font='Default 20', keep_on_top=True) + window = _theme_preview_window_swatches() + theme(OFFICIAL_PYSIMPLEGUI_THEME) + # col_height = window.get_screen_size()[1]-200 + # if window.size[1] > 100: + # window.size = (window.size[0], col_height) + # window.move(window.get_screen_size()[0] // 2 - window.size[0] // 2, 0) + + while True: # Event Loop + event, values = window.read() + if event == WIN_CLOSED or event == 'Exit': + break + if isinstance(event, tuple): # someone clicked a swatch + chosen_color = event[1] + else: + if event[0] == '#': # someone right clicked + chosen_color = event + else: + chosen_color = '' + print('Copied to clipboard color = ', chosen_color) + clipboard_set(chosen_color) + # window.TKroot.clipboard_clear() + # window.TKroot.clipboard_append(chosen_color) + window.close() + theme(current_theme) + + +def change_look_and_feel(index, force=False): + """ + Change the "color scheme" of all future PySimpleGUI Windows. + The scheme are string names that specify a group of colors. Background colors, text colors, button colors. + There are 13 different color settings that are changed at one time using a single call to ChangeLookAndFeel + The look and feel table itself has these indexes into the dictionary LOOK_AND_FEEL_TABLE. + The original list was (prior to a major rework and renaming)... these names still work... + In Nov 2019 a new Theme Formula was devised to make choosing a theme easier: + The "Formula" is: + ["Dark" or "Light"] Color Number + Colors can be Blue Brown Grey Green Purple Red Teal Yellow Black + The number will vary for each pair. There are more DarkGrey entries than there are LightYellow for example. + Default = The default settings (only button color is different than system default) + Default1 = The full system default including the button (everything's gray... how sad... don't be all gray... please....) + :param index: the name of the index into the Look and Feel table (does not have to be exact, can be "fuzzy") + :type index: (str) + :param force: no longer used + :type force: (bool) + :return: None + :rtype: None + """ + global CURRENT_LOOK_AND_FEEL + + # if running_mac() and not force: + # print('*** Changing look and feel is not supported on Mac platform ***') + # return + + requested_theme_name = index + theme_names_list = list_of_look_and_feel_values() + # normalize available l&f values by setting all to lower case + lf_values_lowercase = [item.lower() for item in theme_names_list] + # option 1 + opt1 = requested_theme_name.replace(' ', '').lower() + # option 3 is option 1 with gray replaced with grey + opt3 = opt1.replace('gray', 'grey') + # option 2 (reverse lookup) + optx = requested_theme_name.lower().split(' ') + optx.reverse() + opt2 = ''.join(optx) + + # search for valid l&f name + if requested_theme_name in theme_names_list: + ix = theme_names_list.index(requested_theme_name) + elif opt1 in lf_values_lowercase: + ix = lf_values_lowercase.index(opt1) + elif opt2 in lf_values_lowercase: + ix = lf_values_lowercase.index(opt2) + elif opt3 in lf_values_lowercase: + ix = lf_values_lowercase.index(opt3) + else: + ix = random.randint(0, len(lf_values_lowercase) - 1) + print('** Warning - {} Theme is not a valid theme. Change your theme call. **'.format(index)) + print('valid values are', list_of_look_and_feel_values()) + print('Instead, please enjoy a random Theme named {}'.format(list_of_look_and_feel_values()[ix])) + + selection = theme_names_list[ix] + CURRENT_LOOK_AND_FEEL = selection + try: + colors = LOOK_AND_FEEL_TABLE[selection] + + # Color the progress bar using button background and input colors...unless they're the same + if colors['PROGRESS'] != COLOR_SYSTEM_DEFAULT: + if colors['PROGRESS'] == DEFAULT_PROGRESS_BAR_COMPUTE: + if colors['BUTTON'][1] != colors['INPUT'] and colors['BUTTON'][1] != colors['BACKGROUND']: + colors['PROGRESS'] = colors['BUTTON'][1], colors['INPUT'] + else: # if the same, then use text input on top of input color + colors['PROGRESS'] = (colors['TEXT_INPUT'], colors['INPUT']) + else: + colors['PROGRESS'] = DEFAULT_PROGRESS_BAR_COLOR_OFFICIAL + # call to change all the colors + SetOptions(background_color=colors['BACKGROUND'], + text_element_background_color=colors['BACKGROUND'], + element_background_color=colors['BACKGROUND'], + text_color=colors['TEXT'], + input_elements_background_color=colors['INPUT'], + # button_color=colors['BUTTON'] if not running_mac() else None, + button_color=colors['BUTTON'], + progress_meter_color=colors['PROGRESS'], + border_width=colors['BORDER'], + slider_border_width=colors['SLIDER_DEPTH'], + progress_meter_border_depth=colors['PROGRESS_DEPTH'], + scrollbar_color=(colors['SCROLL']), + element_text_color=colors['TEXT'], + input_text_color=colors['TEXT_INPUT']) + except: # most likely an index out of range + print('** Warning - Theme value not valid. Change your theme call. **') + print('valid values are', list_of_look_and_feel_values()) + + +# ------------------------ Color processing functions ------------------------ + +def _hex_to_hsl(hex): + r, g, b = _hex_to_rgb(hex) + return _rgb_to_hsl(r, g, b) + + +def _hex_to_rgb(hex): + hex = hex.lstrip('#') + hlen = len(hex) + return tuple(int(hex[i:i + hlen // 3], 16) for i in range(0, hlen, hlen // 3)) + + +def _rgb_to_hsl(r, g, b): + r = float(r) + g = float(g) + b = float(b) + high = max(r, g, b) + low = min(r, g, b) + h, s, v = ((high + low) / 2,) * 3 + if high == low: + h = s = 0.0 + else: + d = high - low + l = (high + low) / 2 + s = d / (2 - high - low) if l > 0.5 else d / (high + low) + h = { + r: (g - b) / d + (6 if g < b else 0), + g: (b - r) / d + 2, + b: (r - g) / d + 4, + }[high] + h /= 6 + return h, s, v + + +def _hsl_to_rgb(h, s, l): + def hue_to_rgb(p, q, t): + t += 1 if t < 0 else 0 + t -= 1 if t > 1 else 0 + if t < 1 / 6: + return p + (q - p) * 6 * t + if t < 1 / 2: + return q + if t < 2 / 3: + p + (q - p) * (2 / 3 - t) * 6 + return p + + if s == 0: + r, g, b = l, l, l + else: + q = l * (1 + s) if l < 0.5 else l + s - l * s + p = 2 * l - q + r = hue_to_rgb(p, q, h + 1 / 3) + g = hue_to_rgb(p, q, h) + b = hue_to_rgb(p, q, h - 1 / 3) + + return r, g, b + + +def _hsv_to_hsl(h, s, v): + l = 0.5 * v * (2 - s) + s = v * s / (1 - fabs(2 * l - 1)) + return h, s, l + + +def _hsl_to_hsv(h, s, l): + v = (2 * l + s * (1 - fabs(2 * l - 1))) / 2 + s = 2 * (v - l) / v + return h, s, v + + +# Converts an object's contents into a nice printable string. Great for dumping debug data +def obj_to_string_single_obj(obj): + """ + Dumps an Object's values as a formatted string. Very nicely done. Great way to display an object's member variables in human form + Returns only the top-most object's variables instead of drilling down to dispolay more + :param obj: The object to display + :type obj: (Any) + :return: Formatted output of the object's values + :rtype: (str) + """ + if obj is None: + return 'None' + return str(obj.__class__) + '\n' + '\n'.join( + (repr(item) + ' = ' + repr(obj.__dict__[item]) for item in sorted(obj.__dict__))) + + +def obj_to_string(obj, extra=' '): + """ + Dumps an Object's values as a formatted string. Very nicely done. Great way to display an object's member variables in human form + :param obj: The object to display + :type obj: (Any) + :param extra: extra stuff (Default value = ' ') + :type extra: (str) + :return: Formatted output of the object's values + :rtype: (str) + """ + if obj is None: + return 'None' + return str(obj.__class__) + '\n' + '\n'.join( + (extra + (str(item) + ' = ' + + (ObjToString(obj.__dict__[item], extra + ' ') if hasattr(obj.__dict__[item], '__dict__') else str( + obj.__dict__[item]))) + for item in sorted(obj.__dict__))) + + +def dict_to_string(dict_var, sort_keys=True, compact=False, indent=10, width=None): + """ + Formats a dictionary's values as a nice string that's easier to read and ready to display. + Uses pprint to format the dictionary + :param dict_var: The dictionary to display + :type dict_var: (dict) + :param sort_keys: If True then the keys are sorted alphabetically + :type sort_keys: (bool) + :param compact: If True then pprint's compact mode is used + :type compact: (bool) + :param indent: Number of spaces to indent (passed to pprint directly) + :type indent: (int) + :param width: specifies the desired maximum number of characters per line in the output. Defaults to 1 (sounds weird but it works best). Settablein PySimpleGUI Settings window + :type width: (int) + :return: Formatted output of the dictionary's values + :rtype: (str) + """ + + if width is None: + width = pysimplegui_user_settings.get('-pformat width2-', DEFAULT_DICT_TO_STRING_WIDTH) + + if sys.version_info >= (3, 8): + string = pprint.pformat(dict_var, sort_dicts=sort_keys, compact=compact, indent=indent, width=width) + else: # sort_dicts wasn't added until Python 3.8 + string = pprint.pformat(dict_var, compact=compact, indent=indent, width=width) + return string + + + +# ...######..##.......####.########..########...#######.....###....########..########. +# ..##....##.##........##..##.....##.##.....##.##.....##...##.##...##.....##.##.....## +# ..##.......##........##..##.....##.##.....##.##.....##..##...##..##.....##.##.....## +# ..##.......##........##..########..########..##.....##.##.....##.########..##.....## +# ..##.......##........##..##........##.....##.##.....##.#########.##...##...##.....## +# ..##....##.##........##..##........##.....##.##.....##.##.....##.##....##..##.....## +# ...######..########.####.##........########...#######..##.....##.##.....##.########. + +def clipboard_set(new_value): + """ + Sets the clipboard to a specific value. + IMPORTANT NOTE - Your PySimpleGUI application needs to remain running until you've pasted + your clipboard. This is a tkinter limitation. A workaround was found for Windows, but you still + need to stay running for Linux systems. + + :param new_value: value to set the clipboard to. Will be converted to a string + :type new_value: (str | bytes) + """ + root = _get_hidden_master_root() + root.clipboard_clear() + root.clipboard_append(str(new_value)) + root.update() + + +def clipboard_get(): + """ + Gets the clipboard current value. + + :return: The current value of the clipboard + :rtype: (str) + """ + root = _get_hidden_master_root() + + try: + value = root.clipboard_get() + except: + value = '' + root.update() + return value + + +# MM"""""""`YM +# MM mmmmm M +# M' .M .d8888b. 88d888b. dP dP 88d888b. .d8888b. +# MM MMMMMMMM 88' `88 88' `88 88 88 88' `88 Y8ooooo. +# MM MMMMMMMM 88. .88 88. .88 88. .88 88. .88 88 +# MM MMMMMMMM `88888P' 88Y888P' `88888P' 88Y888P' `88888P' +# MMMMMMMMMMMM 88 88 +# dP dP +# ------------------------------------------------------------------------------------------------------------------ # +# ===================================== Upper PySimpleGUI ======================================================== # +# ------------------------------------------------------------------------------------------------------------------ # +# ----------------------------------- The mighty Popup! ------------------------------------------------------------ # + +def popup(*args, title=None, button_color=None, background_color=None, text_color=None, button_type=POPUP_BUTTONS_OK, auto_close=False, + auto_close_duration=None, custom_text=(None, None), non_blocking=False, icon=None, line_width=None, font=None, no_titlebar=False, grab_anywhere=False, + keep_on_top=None, location=(None, None), relative_location=(None, None), any_key_closes=False, image=None, modal=True, button_justification=None, drop_whitespace=True): + """ + Popup - Display a popup Window with as many parms as you wish to include. This is the GUI equivalent of the + "print" statement. It's also great for "pausing" your program's flow until the user can read some error messages. + + If this popup doesn't have the features you want, then you can easily make your own. Popups can be accomplished in 1 line of code: + choice, _ = sg.Window('Continue?', [[sg.T('Do you want to continue?')], [sg.Yes(s=10), sg.No(s=10)]], disable_close=True).read(close=True) + + + :param *args: Variable number of your arguments. Load up the call with stuff to see! + :type *args: (Any) + :param title: Optional title for the window. If none provided, the first arg will be used instead. + :type title: (str) + :param button_color: Color of the buttons shown (text color, button color) + :type button_color: (str, str) | str + :param background_color: Window's background color + :type background_color: (str) + :param text_color: text color + :type text_color: (str) + :param button_type: NOT USER SET! Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK). There are many Popup functions and they call Popup, changing this parameter to get the desired effect. + :type button_type: (int) + :param auto_close: If True the window will automatically close + :type auto_close: (bool) + :param auto_close_duration: time in seconds to keep window open before closing it automatically + :type auto_close_duration: (int) + :param custom_text: A string or pair of strings that contain the text to display on the buttons + :type custom_text: (str, str) | str + :param non_blocking: If True then will immediately return from the function without waiting for the user's input. + :type non_blocking: (bool) + :param icon: icon to display on the window. Same format as a Window call + :type icon: str | bytes + :param line_width: Width of lines in characters. Defaults to MESSAGE_BOX_LINE_WIDTH + :type line_width: (int) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: str | Tuple[font_name, size, modifiers] + :param no_titlebar: If True will not show the frame around the window and the titlebar across the top + :type no_titlebar: (bool) + :param grab_anywhere: If True can grab anywhere to move the window. If no_titlebar is True, grab_anywhere should likely be enabled too + :type grab_anywhere: (bool) + :param location: Location on screen to display the top left corner of window. Defaults to window centered on screen + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param keep_on_top: If True the window will remain above all current windows + :type keep_on_top: (bool) + :param any_key_closes: If True then will turn on return_keyboard_events for the window which will cause window to close as soon as any key is pressed. Normally the return key only will close the window. Default is false. + :type any_key_closes: (bool) + :param image: Image to include at the top of the popup window + :type image: (str) or (bytes) + :param modal: If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = True + :type modal: bool + :param right_justify_buttons: If True then the buttons will be "pushed" to the right side of the Window + :type right_justify_buttons: bool + :param button_justification: Speficies if buttons should be left, right or centered. Default is left justified + :type button_justification: str + :param drop_whitespace: Controls is whitespace should be removed when wrapping text. Parameter is passed to textwrap.fill. Default is to drop whitespace (so popup remains backward compatible) + :type drop_whitespace: bool + :return: Returns text of the button that was pressed. None will be returned if user closed window with X + :rtype: str | None + """ + + if not args: + args_to_print = [''] + else: + args_to_print = args + if line_width != None: + local_line_width = line_width + else: + local_line_width = MESSAGE_BOX_LINE_WIDTH + _title = title if title is not None else args_to_print[0] + + layout = [[]] + max_line_total, total_lines = 0, 0 + if image is not None: + if isinstance(image, str): + layout += [[Image(filename=image)]] + else: + layout += [[Image(data=image)]] + + for message in args_to_print: + # fancy code to check if string and convert if not is not need. Just always convert to string :-) + # if not isinstance(message, str): message = str(message) + message = str(message) + if message.count('\n'): # if there are line breaks, then wrap each segment separately + # message_wrapped = message # used to just do this, but now breaking into smaller pieces + message_wrapped = '' + msg_list = message.split('\n') # break into segments that will each be wrapped + message_wrapped = '\n'.join([textwrap.fill(msg, local_line_width) for msg in msg_list]) + else: + message_wrapped = textwrap.fill(message, local_line_width, drop_whitespace=drop_whitespace) + message_wrapped_lines = message_wrapped.count('\n') + 1 + longest_line_len = max([len(l) for l in message.split('\n')]) + width_used = min(longest_line_len, local_line_width) + max_line_total = max(max_line_total, width_used) + # height = _GetNumLinesNeeded(message, width_used) + height = message_wrapped_lines + layout += [[ + Text(message_wrapped, auto_size_text=True, text_color=text_color, background_color=background_color)]] + total_lines += height + + if non_blocking: + PopupButton = DummyButton # important to use or else button will close other windows too! + else: + PopupButton = Button + # show either an OK or Yes/No depending on paramater + if custom_text != (None, None): + if type(custom_text) is not tuple: + layout += [[PopupButton(custom_text, size=(len(custom_text), 1), button_color=button_color, focus=True, + bind_return_key=True)]] + elif custom_text[1] is None: + layout += [[ + PopupButton(custom_text[0], size=(len(custom_text[0]), 1), button_color=button_color, focus=True, + bind_return_key=True)]] + else: + layout += [[PopupButton(custom_text[0], button_color=button_color, focus=True, bind_return_key=True, + size=(len(custom_text[0]), 1)), + PopupButton(custom_text[1], button_color=button_color, size=(len(custom_text[1]), 1))]] + elif button_type == POPUP_BUTTONS_YES_NO: + layout += [[PopupButton('Yes', button_color=button_color, focus=True, bind_return_key=True, + size=(5, 1)), PopupButton('No', button_color=button_color, size=(5, 1))]] + elif button_type == POPUP_BUTTONS_CANCELLED: + layout += [[ + PopupButton('Cancelled', button_color=button_color, focus=True, bind_return_key=True)]] + elif button_type == POPUP_BUTTONS_ERROR: + layout += [[PopupButton('Error', size=(6, 1), button_color=button_color, focus=True, bind_return_key=True)]] + elif button_type == POPUP_BUTTONS_OK_CANCEL: + layout += [[PopupButton('OK', size=(6, 1), button_color=button_color, focus=True, bind_return_key=True), + PopupButton('Cancel', size=(6, 1), button_color=button_color)]] + elif button_type == POPUP_BUTTONS_NO_BUTTONS: + pass + else: + layout += [[PopupButton('OK', size=(5, 1), button_color=button_color, focus=True, bind_return_key=True, )]] + if button_justification is not None: + justification = button_justification.lower()[0] + if justification == 'r': + layout[-1] = [Push()] + layout[-1] + elif justification == 'c': + layout[-1] = [Push()] + layout[-1] + [Push()] + + window = Window(_title, layout, auto_size_text=True, background_color=background_color, button_color=button_color, + auto_close=auto_close, auto_close_duration=auto_close_duration, icon=icon, font=font, + no_titlebar=no_titlebar, grab_anywhere=grab_anywhere, keep_on_top=keep_on_top, location=location, relative_location=relative_location, + return_keyboard_events=any_key_closes, + modal=modal) + + if non_blocking: + button, values = window.read(timeout=0) + else: + button, values = window.read() + window.close() + del window + + return button + + +# ============================== MsgBox============# +# Lazy function. Same as calling Popup with parms # +# This function WILL Disappear perhaps today # +# ==================================================# +# MsgBox is the legacy call and should not be used any longer +def MsgBox(*args): + """ + Do not call this anymore it will raise exception. Use Popups instead + :param *args: + :type *args: + + """ + raise DeprecationWarning('MsgBox is no longer supported... change your call to Popup') + + +# ======================== Scrolled Text Box =====# +# ===================================================# +def popup_scrolled(*args, title=None, button_color=None, background_color=None, text_color=None, yes_no=False, no_buttons=False, button_justification='l', auto_close=False, + auto_close_duration=None, size=(None, None), location=(None, None), relative_location=(None, None), non_blocking=False, no_titlebar=False, grab_anywhere=False, + keep_on_top=None, font=None, image=None, icon=None, modal=True, no_sizegrip=False): + """ + Show a scrolled Popup window containing the user's text that was supplied. Use with as many items to print as you + want, just like a print statement. + + :param *args: Variable number of items to display + :type *args: (Any) + :param title: Title to display in the window. + :type title: (str) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param yes_no: If True, displays Yes and No buttons instead of Ok + :type yes_no: (bool) + :param no_buttons: If True, no buttons will be shown. User will have to close using the "X" + :type no_buttons: (bool) + :param button_justification: How buttons should be arranged. l, c, r for Left, Center or Right justified + :type button_justification: (str) + :param auto_close: if True window will close itself + :type auto_close: (bool) + :param auto_close_duration: Older versions only accept int. Time in seconds until window will close + :type auto_close_duration: int | float + :param size: (w,h) w=characters-wide, h=rows-high + :type size: (int, int) + :param location: Location on the screen to place the upper left corner of the window + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param non_blocking: if True the call will immediately return rather than waiting on user input + :type non_blocking: (bool) + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param no_titlebar: If True no titlebar will be shown + :type no_titlebar: (bool) + :param grab_anywhere: If True, than can grab anywhere to move the window (Default = False) + :type grab_anywhere: (bool) + :param keep_on_top: If True the window will remain above all current windows + :type keep_on_top: (bool) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param image: Image to include at the top of the popup window + :type image: (str) or (bytes) + :param icon: filename or base64 string to be used for the window's icon + :type icon: bytes | str + :param modal: If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = True + :type modal: bool + :param no_sizegrip: If True no Sizegrip will be shown when there is no titlebar. It's only shown if there is no titlebar + :type no_sizegrip: (bool) + :return: Returns text of the button that was pressed. None will be returned if user closed window with X + :rtype: str | None | TIMEOUT_KEY + """ + + if not args: + return + width, height = size + width = width if width else MESSAGE_BOX_LINE_WIDTH + + layout = [[]] + + if image is not None: + if isinstance(image, str): + layout += [[Image(filename=image)]] + else: + layout += [[Image(data=image)]] + max_line_total, max_line_width, total_lines, height_computed = 0, 0, 0, 0 + complete_output = '' + for message in args: + # fancy code to check if string and convert if not is not need. Just always convert to string :-) + # if not isinstance(message, str): message = str(message) + message = str(message) + longest_line_len = max([len(l) for l in message.split('\n')]) + width_used = min(longest_line_len, width) + max_line_total = max(max_line_total, width_used) + max_line_width = width + lines_needed = _GetNumLinesNeeded(message, width_used) + height_computed += lines_needed + 1 + complete_output += message + '\n' + total_lines += lines_needed + height_computed = MAX_SCROLLED_TEXT_BOX_HEIGHT if height_computed > MAX_SCROLLED_TEXT_BOX_HEIGHT else height_computed + if height: + height_computed = height + layout += [[Multiline(complete_output, size=(max_line_width, height_computed), background_color=background_color, text_color=text_color, expand_x=True, + expand_y=True, k='-MLINE-')]] + # show either an OK or Yes/No depending on paramater + button = DummyButton if non_blocking else Button + + if yes_no: + buttons = [button('Yes'), button('No')] + elif no_buttons is not True: + buttons = [button('OK', size=(5, 1), button_color=button_color)] + else: + buttons = None + + if buttons is not None: + if button_justification.startswith('l'): + layout += [buttons] + elif button_justification.startswith('c'): + layout += [[Push()] + buttons + [Push()]] + else: + layout += [[Push()] + buttons] + + if no_sizegrip is not True: + layout[-1] += [Sizegrip()] + + window = Window(title or args[0], layout, auto_size_text=True, button_color=button_color, auto_close=auto_close, + auto_close_duration=auto_close_duration, location=location, relative_location=relative_location, resizable=True, font=font, background_color=background_color, + no_titlebar=no_titlebar, grab_anywhere=grab_anywhere, keep_on_top=keep_on_top, modal=modal, icon=icon) + if non_blocking: + button, values = window.read(timeout=0) + else: + button, values = window.read() + window.close() + del window + return button + + +# ============================== sprint ======# +# Is identical to the Scrolled Text Box # +# Provides a crude 'print' mechanism but in a # +# GUI environment # +# This is in addition to the Print function # +# which routes output to a "Debug Window" # +# ============================================# + + +# --------------------------- popup_no_buttons --------------------------- +def popup_no_buttons(*args, title=None, background_color=None, text_color=None, auto_close=False, + auto_close_duration=None, non_blocking=False, icon=None, line_width=None, font=None, + no_titlebar=False, grab_anywhere=False, keep_on_top=None, location=(None, None), relative_location=(None, None), image=None, modal=True): + """Show a Popup but without any buttons + + :param *args: Variable number of items to display + :type *args: (Any) + :param title: Title to display in the window. + :type title: (str) + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param auto_close: if True window will close itself + :type auto_close: (bool) + :param auto_close_duration: Older versions only accept int. Time in seconds until window will close + :type auto_close_duration: int | float + :param non_blocking: If True then will immediately return from the function without waiting for the user's input. (Default = False) + :type non_blocking: (bool) + :param icon: filename or base64 string to be used for the window's icon + :type icon: bytes | str + :param line_width: Width of lines in characters + :type line_width: (int) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param no_titlebar: If True no titlebar will be shown + :type no_titlebar: (bool) + :param grab_anywhere: If True, than can grab anywhere to move the window (Default = False) + :type grab_anywhere: (bool) + :param location: Location of upper left corner of the window + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param image: Image to include at the top of the popup window + :type image: (str) or (bytes) + :param modal: If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = True + :type modal: bool + :return: Returns text of the button that was pressed. None will be returned if user closed window with X + :rtype: str | None | TIMEOUT_KEY """ + Popup(*args, title=title, background_color=background_color, text_color=text_color, + button_type=POPUP_BUTTONS_NO_BUTTONS, + auto_close=auto_close, auto_close_duration=auto_close_duration, non_blocking=non_blocking, icon=icon, + line_width=line_width, + font=font, no_titlebar=no_titlebar, grab_anywhere=grab_anywhere, keep_on_top=keep_on_top, location=location, relative_location=relative_location, image=image, modal=modal) + + +# --------------------------- popup_non_blocking --------------------------- +def popup_non_blocking(*args, title=None, button_type=POPUP_BUTTONS_OK, button_color=None, background_color=None, + text_color=None, auto_close=False, auto_close_duration=None, non_blocking=True, icon=None, + line_width=None, font=None, no_titlebar=False, grab_anywhere=False, keep_on_top=None, + location=(None, None), relative_location=(None, None), image=None, modal=False): + """ + Show Popup window and immediately return (does not block) + + :param *args: Variable number of items to display + :type *args: (Any) + :param title: Title to display in the window. + :type title: (str) + :param button_type: Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK). + :type button_type: (int) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param auto_close: if True window will close itself + :type auto_close: (bool) + :param auto_close_duration: Older versions only accept int. Time in seconds until window will close + :type auto_close_duration: int | float + :param non_blocking: if True the call will immediately return rather than waiting on user input + :type non_blocking: (bool) + :param icon: filename or base64 string to be used for the window's icon + :type icon: bytes | str + :param line_width: Width of lines in characters + :type line_width: (int) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param no_titlebar: If True no titlebar will be shown + :type no_titlebar: (bool) + :param grab_anywhere: If True: can grab anywhere to move the window (Default = False) + :type grab_anywhere: (bool) + :param location: Location of upper left corner of the window + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param image: Image to include at the top of the popup window + :type image: (str) or (bytes) + :param modal: If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = False + :type modal: bool + :return: Reason for popup closing + :rtype: str | None + """ + + return popup(*args, title=title, button_color=button_color, background_color=background_color, text_color=text_color, + button_type=button_type, + auto_close=auto_close, auto_close_duration=auto_close_duration, non_blocking=non_blocking, icon=icon, + line_width=line_width, + font=font, no_titlebar=no_titlebar, grab_anywhere=grab_anywhere, keep_on_top=keep_on_top, location=location, relative_location=relative_location, image=image, modal=modal) + + +# --------------------------- popup_quick - a NonBlocking, Self-closing Popup --------------------------- +def popup_quick(*args, title=None, button_type=POPUP_BUTTONS_OK, button_color=None, background_color=None, + text_color=None, auto_close=True, auto_close_duration=2, non_blocking=True, icon=None, line_width=None, + font=None, no_titlebar=False, grab_anywhere=False, keep_on_top=None, location=(None, None), relative_location=(None, None), image=None, modal=False): + """ + Show Popup box that doesn't block and closes itself + + :param *args: Variable number of items to display + :type *args: (Any) + :param title: Title to display in the window. + :type title: (str) + :param button_type: Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK). + :type button_type: (int) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param auto_close: if True window will close itself + :type auto_close: (bool) + :param auto_close_duration: Older versions only accept int. Time in seconds until window will close + :type auto_close_duration: int | float + :param non_blocking: if True the call will immediately return rather than waiting on user input + :type non_blocking: (bool) + :param icon: filename or base64 string to be used for the window's icon + :type icon: bytes | str + :param line_width: Width of lines in characters + :type line_width: (int) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param no_titlebar: If True no titlebar will be shown + :type no_titlebar: (bool) + :param grab_anywhere: If True: can grab anywhere to move the window (Default = False) + :type grab_anywhere: (bool) + :param keep_on_top: If True the window will remain above all current windows + :type keep_on_top: (bool) + :param location: Location of upper left corner of the window + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param image: Image to include at the top of the popup window + :type image: (str) or (bytes) + :param modal: If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = False + :type modal: bool + :return: Returns text of the button that was pressed. None will be returned if user closed window with X + :rtype: str | None | TIMEOUT_KEY + """ + + return popup(*args, title=title, button_color=button_color, background_color=background_color, text_color=text_color, + button_type=button_type, + auto_close=auto_close, auto_close_duration=auto_close_duration, non_blocking=non_blocking, icon=icon, + line_width=line_width, + font=font, no_titlebar=no_titlebar, grab_anywhere=grab_anywhere, keep_on_top=keep_on_top, location=location, relative_location=relative_location, image=image, modal=modal) + + +# --------------------------- popup_quick_message - a NonBlocking, Self-closing Popup with no titlebar and no buttons --------------------------- +def popup_quick_message(*args, title=None, button_type=POPUP_BUTTONS_NO_BUTTONS, button_color=None, background_color=None, + text_color=None, auto_close=True, auto_close_duration=2, non_blocking=True, icon=None, line_width=None, + font=None, no_titlebar=True, grab_anywhere=False, keep_on_top=True, location=(None, None), relative_location=(None, None), image=None, modal=False): + """ + Show Popup window with no titlebar, doesn't block, and auto closes itself. + + :param *args: Variable number of items to display + :type *args: (Any) + :param title: Title to display in the window. + :type title: (str) + :param button_type: Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK). + :type button_type: (int) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param keep_on_top: If True the window will remain above all current windows + :type keep_on_top: (bool) + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param auto_close: if True window will close itself + :type auto_close: (bool) + :param auto_close_duration: Older versions only accept int. Time in seconds until window will close + :type auto_close_duration: int | float + :param non_blocking: if True the call will immediately return rather than waiting on user input + :type non_blocking: (bool) + :param icon: filename or base64 string to be used for the window's icon + :type icon: bytes | str + :param line_width: Width of lines in characters + :type line_width: (int) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param no_titlebar: If True no titlebar will be shown + :type no_titlebar: (bool) + :param grab_anywhere: If True: can grab anywhere to move the window (Default = False) + :type grab_anywhere: (bool) + :param location: Location of upper left corner of the window + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param image: Image to include at the top of the popup window + :type image: (str) or (bytes) + :param modal: If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = False + :type modal: bool + :return: Returns text of the button that was pressed. None will be returned if user closed window with X + :rtype: str | None | TIMEOUT_KEY + """ + return popup(*args, title=title, button_color=button_color, background_color=background_color, text_color=text_color, + button_type=button_type, + auto_close=auto_close, auto_close_duration=auto_close_duration, non_blocking=non_blocking, icon=icon, + line_width=line_width, + font=font, no_titlebar=no_titlebar, grab_anywhere=grab_anywhere, keep_on_top=keep_on_top, location=location, relative_location=relative_location, image=image, modal=modal) + + +# --------------------------- PopupNoTitlebar --------------------------- +def popup_no_titlebar(*args, title=None, button_type=POPUP_BUTTONS_OK, button_color=None, background_color=None, + text_color=None, auto_close=False, auto_close_duration=None, non_blocking=False, icon=None, + line_width=None, font=None, grab_anywhere=True, keep_on_top=None, location=(None, None), relative_location=(None, None), image=None, modal=True): + """ + Display a Popup without a titlebar. Enables grab anywhere so you can move it + + :param *args: Variable number of items to display + :type *args: (Any) + :param title: Title to display in the window. + :type title: (str) + :param button_type: Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK). + :type button_type: (int) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param auto_close: if True window will close itself + :type auto_close: (bool) + :param auto_close_duration: Older versions only accept int. Time in seconds until window will close + :type auto_close_duration: int | float + :param non_blocking: if True the call will immediately return rather than waiting on user input + :type non_blocking: (bool) + :param icon: filename or base64 string to be used for the window's icon + :type icon: bytes | str + :param line_width: Width of lines in characters + :type line_width: (int) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param grab_anywhere: If True: can grab anywhere to move the window (Default = False) + :type grab_anywhere: (bool) + :param keep_on_top: If True the window will remain above all current windows + :type keep_on_top: (bool) + :param location: Location of upper left corner of the window + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param image: Image to include at the top of the popup window + :type image: (str) or (bytes) + :param modal: If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = True + :type modal: bool + :return: Returns text of the button that was pressed. None will be returned if user closed window with X + :rtype: str | None | TIMEOUT_KEY + """ + return popup(*args, title=title, button_color=button_color, background_color=background_color, text_color=text_color, + button_type=button_type, + auto_close=auto_close, auto_close_duration=auto_close_duration, non_blocking=non_blocking, icon=icon, + line_width=line_width, + font=font, no_titlebar=True, grab_anywhere=grab_anywhere, keep_on_top=keep_on_top, location=location, relative_location=relative_location, image=image, modal=modal) + + +# --------------------------- PopupAutoClose --------------------------- +def popup_auto_close(*args, title=None, button_type=POPUP_BUTTONS_OK, button_color=None, background_color=None, text_color=None, + auto_close=True, auto_close_duration=None, non_blocking=False, icon=None, + line_width=None, font=None, no_titlebar=False, grab_anywhere=False, keep_on_top=None, + location=(None, None), relative_location=(None, None), image=None, modal=True): + """Popup that closes itself after some time period + + :param *args: Variable number of items to display + :type *args: (Any) + :param title: Title to display in the window. + :type title: (str) + :param button_type: Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK). + :type button_type: (int) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param auto_close: if True window will close itself + :type auto_close: (bool) + :param auto_close_duration: Older versions only accept int. Time in seconds until window will close + :type auto_close_duration: int | float + :param non_blocking: if True the call will immediately return rather than waiting on user input + :type non_blocking: (bool) + :param icon: filename or base64 string to be used for the window's icon + :type icon: bytes | str + :param line_width: Width of lines in characters + :type line_width: (int) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param no_titlebar: If True no titlebar will be shown + :type no_titlebar: (bool) + :param grab_anywhere: If True: can grab anywhere to move the window (Default = False) + :type grab_anywhere: (bool) + :param keep_on_top: If True the window will remain above all current windows + :type keep_on_top: (bool) + :param location: Location of upper left corner of the window + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param image: Image to include at the top of the popup window + :type image: (str) or (bytes) + :param modal: If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = True + :type modal: bool + :return: Returns text of the button that was pressed. None will be returned if user closed window with X + :rtype: str | None | TIMEOUT_KEY + """ + + return popup(*args, title=title, button_color=button_color, background_color=background_color, text_color=text_color, + button_type=button_type, + auto_close=auto_close, auto_close_duration=auto_close_duration, non_blocking=non_blocking, icon=icon, + line_width=line_width, + font=font, no_titlebar=no_titlebar, grab_anywhere=grab_anywhere, keep_on_top=keep_on_top, location=location, relative_location=relative_location, image=image, modal=modal) + + +# --------------------------- popup_error --------------------------- +def popup_error(*args, title=None, button_color=(None, None), background_color=None, text_color=None, auto_close=False, + auto_close_duration=None, non_blocking=False, icon=None, line_width=None, font=None, + no_titlebar=False, grab_anywhere=False, keep_on_top=None, location=(None, None), relative_location=(None, None), image=None, modal=True): + """ + Popup with colored button and 'Error' as button text + + :param *args: Variable number of items to display + :type *args: (Any) + :param title: Title to display in the window. + :type title: (str) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param auto_close: if True window will close itself + :type auto_close: (bool) + :param auto_close_duration: Older versions only accept int. Time in seconds until window will close + :type auto_close_duration: int | float + :param non_blocking: if True the call will immediately return rather than waiting on user input + :type non_blocking: (bool) + :param icon: filename or base64 string to be used for the window's icon + :type icon: bytes | str + :param line_width: Width of lines in characters + :type line_width: (int) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param no_titlebar: If True no titlebar will be shown + :type no_titlebar: (bool) + :param grab_anywhere: If True: can grab anywhere to move the window (Default = False) + :type grab_anywhere: (bool) + :param keep_on_top: If True the window will remain above all current windows + :type keep_on_top: (bool) + :param location: Location of upper left corner of the window + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param image: Image to include at the top of the popup window + :type image: (str) or (bytes) + :param modal: If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = True + :type modal: bool + :return: Returns text of the button that was pressed. None will be returned if user closed window with X + :rtype: str | None | TIMEOUT_KEY + """ + tbutton_color = DEFAULT_ERROR_BUTTON_COLOR if button_color == (None, None) else button_color + return popup(*args, title=title, button_type=POPUP_BUTTONS_ERROR, background_color=background_color, text_color=text_color, + non_blocking=non_blocking, icon=icon, line_width=line_width, button_color=tbutton_color, + auto_close=auto_close, + auto_close_duration=auto_close_duration, font=font, no_titlebar=no_titlebar, grab_anywhere=grab_anywhere, + keep_on_top=keep_on_top, location=location, relative_location=relative_location, image=image, modal=modal) + + +# --------------------------- popup_cancel --------------------------- +def popup_cancel(*args, title=None, button_color=None, background_color=None, text_color=None, auto_close=False, + auto_close_duration=None, non_blocking=False, icon=None, line_width=None, font=None, + no_titlebar=False, grab_anywhere=False, keep_on_top=None, location=(None, None), relative_location=(None, None), image=None, modal=True): + """ + Display Popup with "cancelled" button text + + :param *args: Variable number of items to display + :type *args: (Any) + :param title: Title to display in the window. + :type title: (str) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param auto_close: if True window will close itself + :type auto_close: (bool) + :param auto_close_duration: Older versions only accept int. Time in seconds until window will close + :type auto_close_duration: int | float + :param non_blocking: if True the call will immediately return rather than waiting on user input + :type non_blocking: (bool) + :param icon: filename or base64 string to be used for the window's icon + :type icon: bytes | str + :param line_width: Width of lines in characters + :type line_width: (int) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param no_titlebar: If True no titlebar will be shown + :type no_titlebar: (bool) + :param grab_anywhere: If True: can grab anywhere to move the window (Default = False) + :type grab_anywhere: (bool) + :param keep_on_top: If True the window will remain above all current windows + :type keep_on_top: (bool) + :param location: Location of upper left corner of the window + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param image: Image to include at the top of the popup window + :type image: (str) or (bytes) + :param modal: If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = True + :type modal: bool + :return: Returns text of the button that was pressed. None will be returned if user closed window with X + :rtype: str | None | TIMEOUT_KEY + """ + return popup(*args, title=title, button_type=POPUP_BUTTONS_CANCELLED, background_color=background_color, + text_color=text_color, + non_blocking=non_blocking, icon=icon, line_width=line_width, button_color=button_color, auto_close=auto_close, + auto_close_duration=auto_close_duration, font=font, no_titlebar=no_titlebar, grab_anywhere=grab_anywhere, + keep_on_top=keep_on_top, location=location, relative_location=relative_location, image=image, modal=modal) + + +# --------------------------- popup_ok --------------------------- +def popup_ok(*args, title=None, button_color=None, background_color=None, text_color=None, auto_close=False, + auto_close_duration=None, non_blocking=False, icon=None, line_width=None, font=None, + no_titlebar=False, grab_anywhere=False, keep_on_top=None, location=(None, None), relative_location=(None, None), image=None, modal=True): + """ + Display Popup with OK button only + + :param *args: Variable number of items to display + :type *args: (Any) + :param title: Title to display in the window. + :type title: (str) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param auto_close: if True window will close itself + :type auto_close: (bool) + :param auto_close_duration: Older versions only accept int. Time in seconds until window will close + :type auto_close_duration: int | float + :param non_blocking: if True the call will immediately return rather than waiting on user input + :type non_blocking: (bool) + :param icon: filename or base64 string to be used for the window's icon + :type icon: bytes | str + :param line_width: Width of lines in characters + :type line_width: (int) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param no_titlebar: If True no titlebar will be shown + :type no_titlebar: (bool) + :param grab_anywhere: If True: can grab anywhere to move the window (Default = False) + :type grab_anywhere: (bool) + :param keep_on_top: If True the window will remain above all current windows + :type keep_on_top: (bool) + :param location: Location of upper left corner of the window + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param image: Image to include at the top of the popup window + :type image: (str) or (bytes) + :param modal: If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = True + :type modal: bool + :return: Returns text of the button that was pressed. None will be returned if user closed window with X + :rtype: str | None | TIMEOUT_KEY + """ + return popup(*args, title=title, button_type=POPUP_BUTTONS_OK, background_color=background_color, text_color=text_color, + non_blocking=non_blocking, icon=icon, line_width=line_width, button_color=button_color, auto_close=auto_close, + auto_close_duration=auto_close_duration, font=font, no_titlebar=no_titlebar, grab_anywhere=grab_anywhere, + keep_on_top=keep_on_top, location=location, relative_location=relative_location, image=image, modal=modal) + + +# --------------------------- popup_ok_cancel --------------------------- +def popup_ok_cancel(*args, title=None, button_color=None, background_color=None, text_color=None, auto_close=False, + auto_close_duration=None, non_blocking=False, icon=DEFAULT_WINDOW_ICON, line_width=None, font=None, + no_titlebar=False, grab_anywhere=False, keep_on_top=None, location=(None, None), relative_location=(None, None), image=None, modal=True): + """ + Display popup with OK and Cancel buttons + + :param *args: Variable number of items to display + :type *args: (Any) + :param title: Title to display in the window. + :type title: (str) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param auto_close: if True window will close itself + :type auto_close: (bool) + :param auto_close_duration: Older versions only accept int. Time in seconds until window will close + :type auto_close_duration: int | float + :param non_blocking: if True the call will immediately return rather than waiting on user input + :type non_blocking: (bool) + :param icon: filename or base64 string to be used for the window's icon + :type icon: bytes | str + :param line_width: Width of lines in characters + :type line_width: (int) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param no_titlebar: If True no titlebar will be shown + :type no_titlebar: (bool) + :param grab_anywhere: If True: can grab anywhere to move the window (Default = False) + :type grab_anywhere: (bool) + :param keep_on_top: If True the window will remain above all current windows + :type keep_on_top: (bool) + :param location: Location of upper left corner of the window + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param image: Image to include at the top of the popup window + :type image: (str) or (bytes) + :param modal: If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = True + :type modal: bool + :return: clicked button + :rtype: "OK" | "Cancel" | None + """ + return popup(*args, title=title, button_type=POPUP_BUTTONS_OK_CANCEL, background_color=background_color, + text_color=text_color, + non_blocking=non_blocking, icon=icon, line_width=line_width, button_color=button_color, + auto_close=auto_close, auto_close_duration=auto_close_duration, font=font, no_titlebar=no_titlebar, + grab_anywhere=grab_anywhere, keep_on_top=keep_on_top, location=location, relative_location=relative_location, image=image, modal=modal) + + +# --------------------------- popup_yes_no --------------------------- +def popup_yes_no(*args, title=None, button_color=None, background_color=None, text_color=None, auto_close=False, + auto_close_duration=None, non_blocking=False, icon=None, line_width=None, font=None, + no_titlebar=False, grab_anywhere=False, keep_on_top=None, location=(None, None), relative_location=(None, None), image=None, modal=True): + """ + Display Popup with Yes and No buttons + + :param *args: Variable number of items to display + :type *args: (Any) + :param title: Title to display in the window. + :type title: (str) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param auto_close: if True window will close itself + :type auto_close: (bool) + :param auto_close_duration: Older versions only accept int. Time in seconds until window will close + :type auto_close_duration: int | float + :param non_blocking: if True the call will immediately return rather than waiting on user input + :type non_blocking: (bool) + :param icon: filename or base64 string to be used for the window's icon + :type icon: bytes | str + :param line_width: Width of lines in characters + :type line_width: (int) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param no_titlebar: If True no titlebar will be shown + :type no_titlebar: (bool) + :param grab_anywhere: If True: can grab anywhere to move the window (Default = False) + :type grab_anywhere: (bool) + :param keep_on_top: If True the window will remain above all current windows + :type keep_on_top: (bool) + :param location: Location of upper left corner of the window + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param image: Image to include at the top of the popup window + :type image: (str) or (bytes) + :param modal: If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = True + :type modal: bool + :return: clicked button + :rtype: "Yes" | "No" | None + """ + return popup(*args, title=title, button_type=POPUP_BUTTONS_YES_NO, background_color=background_color, + text_color=text_color, + non_blocking=non_blocking, icon=icon, line_width=line_width, button_color=button_color, + auto_close=auto_close, auto_close_duration=auto_close_duration, font=font, no_titlebar=no_titlebar, + grab_anywhere=grab_anywhere, keep_on_top=keep_on_top, location=location, relative_location=relative_location, image=image, modal=modal) + + +############################################################################## +# The popup_get_____ functions - Will return user input # +############################################################################## + +# --------------------------- popup_get_folder --------------------------- + + +def popup_get_folder(message, title=None, default_path='', no_window=False, size=(None, None), button_color=None, + background_color=None, text_color=None, icon=None, font=None, no_titlebar=False, + grab_anywhere=False, keep_on_top=None, location=(None, None), relative_location=(None, None), initial_folder=None, image=None, modal=True, history=False, + history_setting_filename=None): + """ + Display popup with text entry field and browse button so that a folder can be chosen. + + :param message: message displayed to user + :type message: (str) + :param title: Window title + :type title: (str) + :param default_path: path to display to user as starting point (filled into the input field) + :type default_path: (str) + :param no_window: if True, no PySimpleGUI window will be shown. Instead just the tkinter dialog is shown + :type no_window: (bool) + :param size: (width, height) of the InputText Element + :type size: (int, int) + :param button_color: button color (foreground, background) + :type button_color: (str, str) | str + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param icon: filename or base64 string to be used for the window's icon + :type icon: bytes | str + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param no_titlebar: If True no titlebar will be shown + :type no_titlebar: (bool) + :param grab_anywhere: If True: can grab anywhere to move the window (Default = False) + :type grab_anywhere: (bool) + :param keep_on_top: If True the window will remain above all current windows + :type keep_on_top: (bool) + :param location: Location of upper left corner of the window + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param initial_folder: location in filesystem to begin browsing + :type initial_folder: (str) + :param image: Image to include at the top of the popup window + :type image: (str) or (bytes) + :param modal: If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = True + :type modal: bool + :param history: If True then enable a "history" feature that will display previous entries used. Uses settings filename provided or default if none provided + :type history: bool + :param history_setting_filename: Filename to use for the User Settings. Will store list of previous entries in this settings file + :type history_setting_filename: (str) + :return: string representing the path chosen, None if cancelled or window closed with X + :rtype: str | None + """ + + # First setup the history settings file if history feature is enabled + if history and history_setting_filename is not None: + try: + history_settings = UserSettings(history_setting_filename) + except Exception as e: + _error_popup_with_traceback('popup_get_folder - Something is wrong with your supplied history settings filename', + 'Exception: {}'.format(e)) + return None + elif history: + history_settings_filename = os.path.basename(inspect.stack()[1].filename) + history_settings_filename = os.path.splitext(history_settings_filename)[0] + '.json' + history_settings = UserSettings(history_settings_filename) + else: + history_settings = None + + # global _my_windows + if no_window: + _get_hidden_master_root() + root = tk.Toplevel() + + try: + root.attributes('-alpha', 0) # hide window while building it. makes for smoother 'paint' + # if not running_mac(): + try: + root.wm_overrideredirect(True) + except Exception as e: + print('* Error performing wm_overrideredirect while hiding the window during creation in get folder *', e) + root.withdraw() + except: + pass + folder_name = tk.filedialog.askdirectory(initialdir=initial_folder) # show the 'get folder' dialog box + + root.destroy() + + return folder_name + + browse_button = FolderBrowse(initial_folder=initial_folder) + + if image is not None: + if isinstance(image, str): + layout = [[Image(filename=image)]] + else: + layout = [[Image(data=image)]] + else: + layout = [[]] + + layout += [[Text(message, auto_size_text=True, text_color=text_color, background_color=background_color)]] + + if not history: + layout += [[InputText(default_text=default_path, size=size, key='-INPUT-'), browse_button]] + else: + file_list = history_settings.get('-PSG folder list-', []) + last_entry = file_list[0] if file_list else '' + layout += [[Combo(file_list, default_value=last_entry, key='-INPUT-', size=size if size != (None, None) else (80, 1), bind_return_key=True), + browse_button, Button('Clear History', tooltip='Clears the list of folders shown in the combobox')]] + + layout += [[Button('Ok', size=(6, 1), bind_return_key=True), Button('Cancel', size=(6, 1))]] + + window = Window(title=title or message, layout=layout, icon=icon, auto_size_text=True, button_color=button_color, + font=font, background_color=background_color, no_titlebar=no_titlebar, grab_anywhere=grab_anywhere, keep_on_top=keep_on_top, + location=location, relative_location=relative_location, modal=modal) + + while True: + event, values = window.read() + if event in ('Cancel', WIN_CLOSED): + break + elif event == 'Clear History': + history_settings.set('-PSG folder list-', []) + window['-INPUT-'].update('', []) + popup_quick_message('History of Previous Choices Cleared', background_color='red', text_color='white', font='_ 20', keep_on_top=True) + elif event in ('Ok', '-INPUT-'): + if values['-INPUT-'] != '': + if history_settings is not None: + list_of_entries = history_settings.get('-PSG folder list-', []) + if values['-INPUT-'] in list_of_entries: + list_of_entries.remove(values['-INPUT-']) + list_of_entries.insert(0, values['-INPUT-']) + history_settings.set('-PSG folder list-', list_of_entries) + break + + window.close() + del window + if event in ('Cancel', WIN_CLOSED): + return None + + return values['-INPUT-'] + + +# --------------------------- popup_get_file --------------------------- + +def popup_get_file(message, title=None, default_path='', default_extension='', save_as=False, multiple_files=False, + file_types=FILE_TYPES_ALL_FILES, + no_window=False, size=(None, None), button_color=None, background_color=None, text_color=None, + icon=None, font=None, no_titlebar=False, grab_anywhere=False, keep_on_top=None, + location=(None, None), relative_location=(None, None), initial_folder=None, image=None, files_delimiter=BROWSE_FILES_DELIMITER, modal=True, history=False, show_hidden=True, + history_setting_filename=None): + """ + Display popup window with text entry field and browse button so that a file can be chosen by user. + + :param message: message displayed to user + :type message: (str) + :param title: Window title + :type title: (str) + :param default_path: path to display to user as starting point (filled into the input field) + :type default_path: (str) + :param default_extension: If no extension entered by user, add this to filename (only used in saveas dialogs) + :type default_extension: (str) + :param save_as: if True, the "save as" dialog is shown which will verify before overwriting + :type save_as: (bool) + :param multiple_files: if True, then allows multiple files to be selected that are returned with ';' between each filename + :type multiple_files: (bool) + :param file_types: List of extensions to show using wildcards. All files (the default) = (("ALL Files", "*.* *"),). + :type file_types: Tuple[Tuple[str,str]] + :param no_window: if True, no PySimpleGUI window will be shown. Instead just the tkinter dialog is shown + :type no_window: (bool) + :param size: (width, height) of the InputText Element or Combo element if using history feature + :type size: (int, int) + :param button_color: Color of the button (text, background) + :type button_color: (str, str) | str + :param background_color: background color of the entire window + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param icon: filename or base64 string to be used for the window's icon + :type icon: bytes | str + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param no_titlebar: If True no titlebar will be shown + :type no_titlebar: (bool) + :param grab_anywhere: If True: can grab anywhere to move the window (Default = False) + :type grab_anywhere: (bool) + :param keep_on_top: If True the window will remain above all current windows + :type keep_on_top: (bool) + :param location: Location of upper left corner of the window + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param initial_folder: location in filesystem to begin browsing + :type initial_folder: (str) + :param image: Image to include at the top of the popup window + :type image: (str) or (bytes) + :param files_delimiter: String to place between files when multiple files are selected. Normally a ; + :type files_delimiter: str + :param modal: If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = True + :type modal: bool + :param history: If True then enable a "history" feature that will display previous entries used. Uses settings filename provided or default if none provided + :type history: bool + :param show_hidden: If True then enables the checkbox in the system dialog to select hidden files to be shown + :type show_hidden: bool + :param history_setting_filename: Filename to use for the User Settings. Will store list of previous entries in this settings file + :type history_setting_filename: (str) + :return: string representing the file(s) chosen, None if cancelled or window closed with X + :rtype: str | None + """ + + # First setup the history settings file if history feature is enabled + if history and history_setting_filename is not None: + try: + history_settings = UserSettings(history_setting_filename) + except Exception as e: + _error_popup_with_traceback('popup_get_file - Something is wrong with your supplied history settings filename', + 'Exception: {}'.format(e)) + return None + elif history: + history_settings_filename = os.path.basename(inspect.stack()[1].filename) + history_settings_filename = os.path.splitext(history_settings_filename)[0] + '.json' + history_settings = UserSettings(history_settings_filename) + else: + history_settings = None + + if icon is None: + icon = Window._user_defined_icon or DEFAULT_BASE64_ICON + if no_window: + _get_hidden_master_root() + root = tk.Toplevel() + + try: + root.attributes('-alpha', 0) # hide window while building it. makes for smoother 'paint' + # if not running_mac(): + try: + root.wm_overrideredirect(True) + except Exception as e: + print('* Error performing wm_overrideredirect in get file *', e) + root.withdraw() + except: + pass + + if show_hidden is False: + try: + # call a dummy dialog with an impossible option to initialize the file + # dialog without really getting a dialog window; this will throw a + # TclError, so we need a try...except : + try: + root.tk.call('tk_getOpenFile', '-foobarbaz') + except tk.TclError: + pass + # now set the magic variables accordingly + root.tk.call('set', '::tk::dialog::file::showHiddenBtn', '1') + root.tk.call('set', '::tk::dialog::file::showHiddenVar', '0') + except: + pass + + if root and icon is not None: + _set_icon_for_tkinter_window(root, icon=icon) + # for Macs, setting parent=None fixes a warning problem. + if save_as: + if running_mac(): + is_all = [(x, y) for (x, y) in file_types if all(ch in '* .' for ch in y)] + if not len(set(file_types)) > 1 and (len(is_all) != 0 or file_types == FILE_TYPES_ALL_FILES): + filename = tk.filedialog.asksaveasfilename(initialdir=initial_folder, + initialfile=default_path, + defaultextension=default_extension) # show the 'get file' dialog box + else: + filename = tk.filedialog.asksaveasfilename(filetypes=file_types, + initialdir=initial_folder, + initialfile=default_path, + defaultextension=default_extension) # show the 'get file' dialog box + else: + filename = tk.filedialog.asksaveasfilename(filetypes=file_types, + initialdir=initial_folder, + initialfile=default_path, + parent=root, + defaultextension=default_extension) # show the 'get file' dialog box + elif multiple_files: + if running_mac(): + is_all = [(x, y) for (x, y) in file_types if all(ch in '* .' for ch in y)] + if not len(set(file_types)) > 1 and (len(is_all) != 0 or file_types == FILE_TYPES_ALL_FILES): + filename = tk.filedialog.askopenfilenames(initialdir=initial_folder, + initialfile=default_path, + defaultextension=default_extension) # show the 'get file' dialog box + else: + filename = tk.filedialog.askopenfilenames(filetypes=file_types, + initialdir=initial_folder, + initialfile=default_path, + defaultextension=default_extension) # show the 'get file' dialog box + else: + filename = tk.filedialog.askopenfilenames(filetypes=file_types, + initialdir=initial_folder, + initialfile=default_path, + parent=root, + defaultextension=default_extension) # show the 'get file' dialog box + else: + if running_mac(): + is_all = [(x, y) for (x, y) in file_types if all(ch in '* .' for ch in y)] + if not len(set(file_types)) > 1 and (len(is_all) != 0 or file_types == FILE_TYPES_ALL_FILES): + filename = tk.filedialog.askopenfilename(initialdir=initial_folder, + initialfile=default_path, + defaultextension=default_extension) # show the 'get files' dialog box + else: + filename = tk.filedialog.askopenfilename(filetypes=file_types, + initialdir=initial_folder, + initialfile=default_path, + defaultextension=default_extension) # show the 'get files' dialog box + else: + filename = tk.filedialog.askopenfilename(filetypes=file_types, + initialdir=initial_folder, + initialfile=default_path, + parent=root, + defaultextension=default_extension) # show the 'get files' dialog box + root.destroy() + + if not multiple_files and type(filename) in (tuple, list): + if len(filename): # only if not 0 length, otherwise will get an error + filename = filename[0] + if not filename: + return None + return filename + + if save_as: + browse_button = SaveAs(file_types=file_types, initial_folder=initial_folder, default_extension=default_extension) + elif multiple_files: + browse_button = FilesBrowse(file_types=file_types, initial_folder=initial_folder, files_delimiter=files_delimiter) + else: + browse_button = FileBrowse(file_types=file_types, initial_folder=initial_folder) + + if image is not None: + if isinstance(image, str): + layout = [[Image(filename=image)]] + else: + layout = [[Image(data=image)]] + else: + layout = [[]] + + layout += [[Text(message, auto_size_text=True, text_color=text_color, background_color=background_color)]] + + if not history: + layout += [[InputText(default_text=default_path, size=size, key='-INPUT-'), browse_button]] + else: + file_list = history_settings.get("-PSG file list-", []) + last_entry = file_list[0] if file_list else '' + layout += [[Combo(file_list, default_value=last_entry, key='-INPUT-', size=size if size != (None, None) else (80, 1), bind_return_key=True), + browse_button, Button('Clear History', tooltip='Clears the list of files shown in the combobox')]] + + layout += [[Button('Ok', size=(6, 1), bind_return_key=True), Button('Cancel', size=(6, 1))]] + + window = Window(title=title or message, layout=layout, icon=icon, auto_size_text=True, button_color=button_color, + font=font, background_color=background_color, no_titlebar=no_titlebar, grab_anywhere=grab_anywhere, keep_on_top=keep_on_top, location=location, relative_location=relative_location, modal=modal, finalize=True) + + if running_linux() and show_hidden is True: + window.TKroot.tk.eval('catch {tk_getOpenFile -badoption}') # dirty hack to force autoloading of Tk's file dialog code + window.TKroot.setvar('::tk::dialog::file::showHiddenBtn', 1) # enable the "show hidden files" checkbox (it's necessary) + window.TKroot.setvar('::tk::dialog::file::showHiddenVar', 0) # start with the hidden files... well... hidden + + while True: + event, values = window.read() + if event in ('Cancel', WIN_CLOSED): + break + elif event == 'Clear History': + history_settings.set('-PSG file list-', []) + window['-INPUT-'].update('', []) + popup_quick_message('History of Previous Choices Cleared', background_color='red', text_color='white', font='_ 20', keep_on_top=True) + elif event in ('Ok', '-INPUT-'): + if values['-INPUT-'] != '': + if history_settings is not None: + list_of_entries = history_settings.get('-PSG file list-', []) + if values['-INPUT-'] in list_of_entries: + list_of_entries.remove(values['-INPUT-']) + list_of_entries.insert(0, values['-INPUT-']) + history_settings.set('-PSG file list-', list_of_entries) + break + + window.close() + del window + if event in ('Cancel', WIN_CLOSED): + return None + + return values['-INPUT-'] + + +# --------------------------- popup_get_text --------------------------- + +def popup_get_text(message, title=None, default_text='', password_char='', size=(None, None), button_color=None, + background_color=None, text_color=None, icon=None, font=None, no_titlebar=False, + grab_anywhere=False, keep_on_top=None, location=(None, None), relative_location=(None, None), image=None, history=False, history_setting_filename=None, modal=True): + """ + Display Popup with text entry field. Returns the text entered or None if closed / cancelled + + :param message: message displayed to user + :type message: (str) + :param title: Window title + :type title: (str) + :param default_text: default value to put into input area + :type default_text: (str) + :param password_char: character to be shown instead of actually typed characters. WARNING - if history=True then can't hide passwords + :type password_char: (str) + :param size: (width, height) of the input. If not specied a single line Input element used. If height >1 a Mulitline is shown + :type size: (int, int) + :param button_color: Color of the button (text, background) + :type button_color: (str, str) | str + :param background_color: background color of the entire window + :type background_color: (str) + :param text_color: color of the message text + :type text_color: (str) + :param icon: filename or base64 string to be used for the window's icon + :type icon: bytes | str + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: (str or (str, int[, str]) or None) + :param no_titlebar: If True no titlebar will be shown + :type no_titlebar: (bool) + :param grab_anywhere: If True can click and drag anywhere in the window to move the window + :type grab_anywhere: (bool) + :param keep_on_top: If True the window will remain above all current windows + :type keep_on_top: (bool) + :param location: (x,y) Location on screen to display the upper left corner of window + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param image: Image to include at the top of the popup window + :type image: (str) or (bytes) + :param history: If True then enable a "history" feature that will display previous entries used. Uses settings filename provided or default if none provided + :type history: bool + :param history_setting_filename: Filename to use for the User Settings. Will store list of previous entries in this settings file + :type history_setting_filename: (str) + :param modal: If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = True + :type modal: bool + :return: Text entered or None if window was closed or cancel button clicked + :rtype: str | None + """ + + # First setup the history settings file if history feature is enabled + if history and history_setting_filename is not None: + try: + history_settings = UserSettings(history_setting_filename) + except Exception as e: + _error_popup_with_traceback('popup_get_file - Something is wrong with your supplied history settings filename', + 'Exception: {}'.format(e)) + return None + elif history: + history_settings_filename = os.path.basename(inspect.stack()[1].filename) + history_settings_filename = os.path.splitext(history_settings_filename)[0] + '.json' + history_settings = UserSettings(history_settings_filename) + else: + history_settings = None + + if image is not None: + if isinstance(image, str): + layout = [[Image(filename=image)]] + else: + layout = [[Image(data=image)]] + else: + layout = [[]] + + layout += [[Text(message, auto_size_text=True, text_color=text_color, background_color=background_color)]] + if history: + text_list = history_settings.get("-PSG text list-", []) + last_entry = text_list[0] if text_list else default_text + layout += [[Combo(text_list, default_value=last_entry, key='-INPUT-', size=size if size != (None, None) else (80, 1), bind_return_key=True), + Button('Clear History', tooltip='Clears the list of files shown in the combobox')]] + elif size == (None, None) or size[1] <= 1: + layout += [[InputText(default_text=default_text, size=size, key='-INPUT-', password_char=password_char, focus=True)]] + else: + layout += [[Multiline(default_text=default_text, size=size, key='-INPUT-', focus=True)]] + + layout += [[Button('Ok', size=(6, 1), bind_return_key=True), Button('Cancel', size=(6, 1))]] + + window = Window(title=title or message, layout=layout, icon=icon, auto_size_text=True, button_color=button_color, no_titlebar=no_titlebar, + background_color=background_color, grab_anywhere=grab_anywhere, keep_on_top=keep_on_top, location=location, relative_location=relative_location, finalize=True, modal=modal, font=font) + window.force_focus() + window['-INPUT-'].set_focus() + + while True: + event, values = window.read() + if event in ('Cancel', WIN_CLOSED): + break + elif event == 'Clear History': + history_settings.set('-PSG text list-', []) + window['-INPUT-'].update('', []) + popup_quick_message('History of Previous Choices Cleared', background_color='red', text_color='white', font='_ 20', keep_on_top=True) + elif event in ('Ok', '-INPUT-'): + if values['-INPUT-'] != '': + if history_settings is not None: + list_of_entries = history_settings.get('-PSG text list-', []) + if values['-INPUT-'] in list_of_entries: + list_of_entries.remove(values['-INPUT-']) + list_of_entries.insert(0, values['-INPUT-']) + history_settings.set('-PSG text list-', list_of_entries) + break + + window.close() + del window + if event in ('Cancel', WIN_CLOSED): + return None + else: + text = values['-INPUT-'] + return text + + +def popup_get_date(start_mon=None, start_day=None, start_year=None, begin_at_sunday_plus=0, no_titlebar=True, title='Choose Date', keep_on_top=True, + location=(None, None), relative_location=(None, None), close_when_chosen=False, icon=None, locale=None, month_names=None, day_abbreviations=None, day_font = 'TkFixedFont 9', mon_year_font = 'TkFixedFont 10', arrow_font = 'TkFixedFont 7', modal=True): + """ + Display a calendar window, get the user's choice, return as a tuple (mon, day, year) + + :param start_mon: The starting month + :type start_mon: (int) + :param start_day: The starting day - optional. Set to None or 0 if no date to be chosen at start + :type start_day: int | None + :param start_year: The starting year + :type start_year: (int) + :param begin_at_sunday_plus: Determines the left-most day in the display. 0=sunday, 1=monday, etc + :type begin_at_sunday_plus: (int) + :param icon: Same as Window icon parameter. Can be either a filename or Base64 value. For Windows if filename, it MUST be ICO format. For Linux, must NOT be ICO + :type icon: (str | bytes) + :param location: (x,y) location on the screen to place the top left corner of your window. Default is to center on screen + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param title: Title that will be shown on the window + :type title: (str) + :param close_when_chosen: If True, the window will close and function return when a day is clicked + :type close_when_chosen: (bool) + :param locale: locale used to get the day names + :type locale: (str) + :param no_titlebar: If True no titlebar will be shown + :type no_titlebar: (bool) + :param keep_on_top: If True the window will remain above all current windows + :type keep_on_top: (bool) + :param month_names: optional list of month names to use (should be 12 items) + :type month_names: List[str] + :param day_abbreviations: optional list of abbreviations to display as the day of week + :type day_abbreviations: List[str] + :param day_font: Font and size to use for the calendar + :type day_font: str | tuple + :param mon_year_font: Font and size to use for the month and year at the top + :type mon_year_font: str | tuple + :param arrow_font: Font and size to use for the arrow buttons + :type arrow_font: str | tuple + :param modal: If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = True + :type modal: bool + :return: Tuple containing (month, day, year) of chosen date or None if was cancelled + :rtype: None | (int, int, int) + """ + + if month_names is not None and len(month_names) != 12: + if not SUPPRESS_ERROR_POPUPS: + popup_error('Incorrect month names list specified. Must have 12 entries.', 'Your list:', month_names) + + if day_abbreviations is not None and len(day_abbreviations) != 7: + if not SUPPRESS_ERROR_POPUPS: + popup_error('Incorrect day abbreviation list. Must have 7 entries.', 'Your list:', day_abbreviations) + + now = datetime.datetime.now() + cur_month, cur_day, cur_year = now.month, now.day, now.year + cur_month = start_mon or cur_month + if start_mon is not None: + cur_day = start_day + else: + cur_day = cur_day + cur_year = start_year or cur_year + + def update_days(window, month, year, begin_at_sunday_plus): + [window[(week, day)].update('') for day in range(7) for week in range(6)] + weeks = calendar.monthcalendar(year, month) + month_days = list(itertools.chain.from_iterable([[0 for _ in range(8 - begin_at_sunday_plus)]] + weeks)) + if month_days[6] == 0: + month_days = month_days[7:] + if month_days[6] == 0: + month_days = month_days[7:] + for i, day in enumerate(month_days): + offset = i + if offset >= 6 * 7: + break + window[(offset // 7, offset % 7)].update(str(day) if day else '') + + def make_days_layout(): + days_layout = [] + for week in range(6): + row = [] + for day in range(7): + row.append(T('', size=(4, 1), justification='c', font=day_font, key=(week, day), enable_events=True, pad=(0, 0))) + days_layout.append(row) + return days_layout + + # Create table of month names and week day abbreviations + + if day_abbreviations is None or len(day_abbreviations) != 7: + fwday = calendar.SUNDAY + try: + if locale is not None: + _cal = calendar.LocaleTextCalendar(fwday, locale) + else: + _cal = calendar.TextCalendar(fwday) + day_names = _cal.formatweekheader(3).split() + except Exception as e: + print('Exception building day names from locale', locale, e) + day_names = ('Sun', 'Mon', 'Tue', 'Wed', 'Th', 'Fri', 'Sat') + else: + day_names = day_abbreviations + + mon_names = month_names if month_names is not None and len(month_names) == 12 else [calendar.month_name[i] for i in range(1, 13)] + days_layout = make_days_layout() + + layout = [[B('◄◄', font=arrow_font, border_width=0, key='-YEAR-DOWN-', pad=((10, 2), 2)), + B('◄', font=arrow_font, border_width=0, key='-MON-DOWN-', pad=(0, 2)), + Text('{} {}'.format(mon_names[cur_month - 1], cur_year), size=(16, 1), justification='c', font=mon_year_font, key='-MON-YEAR-', pad=(0, 2)), + B('►', font=arrow_font, border_width=0, key='-MON-UP-', pad=(0, 2)), + B('►►', font=arrow_font, border_width=0, key='-YEAR-UP-', pad=(2, 2))]] + layout += [[Col([[T(day_names[i - (7 - begin_at_sunday_plus) % 7], size=(4, 1), font=day_font, background_color=theme_text_color(), + text_color=theme_background_color(), pad=(0, 0)) for i in range(7)]], background_color=theme_text_color(), pad=(0, 0))]] + layout += days_layout + if not close_when_chosen: + layout += [[Button('Ok', border_width=0, font='TkFixedFont 8'), Button('Cancel', border_width=0, font='TkFixedFont 8')]] + + window = Window(title, layout, no_titlebar=no_titlebar, grab_anywhere=True, keep_on_top=keep_on_top, font='TkFixedFont 12', use_default_focus=False, + location=location, relative_location=relative_location, finalize=True, icon=icon) + + update_days(window, cur_month, cur_year, begin_at_sunday_plus) + + prev_choice = chosen_mon_day_year = None + + if cur_day: + chosen_mon_day_year = cur_month, cur_day, cur_year + for week in range(6): + for day in range(7): + if window[(week, day)].DisplayText == str(cur_day): + window[(week, day)].update(background_color=theme_text_color(), text_color=theme_background_color()) + prev_choice = (week, day) + break + + if modal or DEFAULT_MODAL_WINDOWS_FORCED: + window.make_modal() + + while True: # Event Loop + event, values = window.read() + if event in (None, 'Cancel'): + chosen_mon_day_year = None + break + if event == 'Ok': + break + if event in ('-MON-UP-', '-MON-DOWN-', '-YEAR-UP-', '-YEAR-DOWN-'): + cur_month += (event == '-MON-UP-') + cur_month -= (event == '-MON-DOWN-') + cur_year += (event == '-YEAR-UP-') + cur_year -= (event == '-YEAR-DOWN-') + if cur_month > 12: + cur_month = 1 + cur_year += 1 + elif cur_month < 1: + cur_month = 12 + cur_year -= 1 + window['-MON-YEAR-'].update('{} {}'.format(mon_names[cur_month - 1], cur_year)) + update_days(window, cur_month, cur_year, begin_at_sunday_plus) + if prev_choice: + window[prev_choice].update(background_color=theme_background_color(), text_color=theme_text_color()) + elif type(event) is tuple: + if window[event].DisplayText != "": + chosen_mon_day_year = cur_month, int(window[event].DisplayText), cur_year + if prev_choice: + window[prev_choice].update(background_color=theme_background_color(), text_color=theme_text_color()) + window[event].update(background_color=theme_text_color(), text_color=theme_background_color()) + prev_choice = event + if close_when_chosen: + break + window.close() + return chosen_mon_day_year + + +# --------------------------- PopupAnimated --------------------------- + +def popup_animated(image_source, message=None, background_color=None, text_color=None, font=None, no_titlebar=True, grab_anywhere=True, keep_on_top=True, + location=(None, None), relative_location=(None, None), alpha_channel=None, time_between_frames=0, transparent_color=None, title='', icon=None, no_buffering=False): + """ + Show animation one frame at a time. This function has its own internal clocking meaning you can call it at any frequency + and the rate the frames of video is shown remains constant. Maybe your frames update every 30 ms but your + event loop is running every 10 ms. You don't have to worry about delaying, just call it every time through the + loop. + + :param image_source: Either a filename or a base64 string. Use None to close the window. + :type image_source: str | bytes | None + :param message: An optional message to be shown with the animation + :type message: (str) + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: str | tuple + :param no_titlebar: If True then the titlebar and window frame will not be shown + :type no_titlebar: (bool) + :param grab_anywhere: If True then you can move the window just clicking anywhere on window, hold and drag + :type grab_anywhere: (bool) + :param keep_on_top: If True then Window will remain on top of all other windows currently shownn + :type keep_on_top: (bool) + :param location: (x,y) location on the screen to place the top left corner of your window. Default is to center on screen + :type location: (int, int) + :param relative_location: (x,y) location relative to the default location of the window, in pixels. Normally the window centers. This location is relative to the location the window would be created. Note they can be negative. + :type relative_location: (int, int) + :param alpha_channel: Window transparency 0 = invisible 1 = completely visible. Values between are see through + :type alpha_channel: (float) + :param time_between_frames: Amount of time in milliseconds between each frame + :type time_between_frames: (int) + :param transparent_color: This color will be completely see-through in your window. Can even click through + :type transparent_color: (str) + :param title: Title that will be shown on the window + :type title: (str) + :param icon: Same as Window icon parameter. Can be either a filename or Base64 byte string. For Windows if filename, it MUST be ICO format. For Linux, must NOT be ICO + :type icon: str | bytes + :param no_buffering: If True then no buffering will be used for the GIF. May work better if you have a large animation + :type no_buffering: (bool) + :return: True if the window updated OK. False if the window was closed or if the GIF has reached the end + :rtype: bool + """ + if image_source is None: + for image in Window._animated_popup_dict: + window = Window._animated_popup_dict[image] + window.close() + Window._animated_popup_dict = {} + return False + not_done = True + if image_source not in Window._animated_popup_dict: + if type(image_source) is bytes or len(image_source) > 300: + layout = [[Image(data=image_source, background_color=background_color, key='-IMAGE-')], ] + else: + layout = [[Image(filename=image_source, background_color=background_color, key='-IMAGE-', )], ] + if message: + layout.append([Text(message, background_color=background_color, text_color=text_color, font=font)]) + + window = Window(title, layout, no_titlebar=no_titlebar, grab_anywhere=grab_anywhere, + keep_on_top=keep_on_top, background_color=background_color, location=location, + alpha_channel=alpha_channel, element_padding=(0, 0), margins=(0, 0), + transparent_color=transparent_color, finalize=True, element_justification='c', icon=icon, relative_location=relative_location) + Window._animated_popup_dict[image_source] = window + else: + window = Window._animated_popup_dict[image_source] + if no_buffering: + not_done = window['-IMAGE-'].update_animation_no_buffering(image_source, time_between_frames=time_between_frames) + else: + not_done = window['-IMAGE-'].update_animation(image_source, time_between_frames=time_between_frames) + event, values = window.read(1) + if event == WIN_CLOSED: + return False + # window.refresh() # call refresh instead of Read to save significant CPU time + return not_done + + +# Popup Notify +def popup_notify(*args, title='', icon=SYSTEM_TRAY_MESSAGE_ICON_INFORMATION, display_duration_in_ms=SYSTEM_TRAY_MESSAGE_DISPLAY_DURATION_IN_MILLISECONDS, + fade_in_duration=SYSTEM_TRAY_MESSAGE_FADE_IN_DURATION, alpha=0.9, location=None): + """ + Displays a "notification window", usually in the bottom right corner of your display. Has an icon, a title, and a message. It is more like a "toaster" window than the normal popups. + + The window will slowly fade in and out if desired. Clicking on the window will cause it to move through the end the current "phase". For example, if the window was fading in and it was clicked, then it would immediately stop fading in and instead be fully visible. It's a way for the user to quickly dismiss the window. + + The return code specifies why the call is returning (e.g. did the user click the message to dismiss it) + + :param title: Text to be shown at the top of the window in a larger font + :type title: (str) + :param message: Text message that makes up the majority of the window + :type message: (str) + :param icon: A base64 encoded PNG/GIF image or PNG/GIF filename that will be displayed in the window + :type icon: bytes | str + :param display_duration_in_ms: Number of milliseconds to show the window + :type display_duration_in_ms: (int) + :param fade_in_duration: Number of milliseconds to fade window in and out + :type fade_in_duration: (int) + :param alpha: Alpha channel. 0 - invisible 1 - fully visible + :type alpha: (float) + :param location: Location on the screen to display the window + :type location: (int, int) + :return: reason for returning + :rtype: (int) + """ + + if not args: + args_to_print = [''] + else: + args_to_print = args + output = '' + max_line_total, total_lines, local_line_width = 0, 0, SYSTEM_TRAY_MESSAGE_MAX_LINE_LENGTH + for message in args_to_print: + # fancy code to check if string and convert if not is not need. Just always convert to string :-) + # if not isinstance(message, str): message = str(message) + message = str(message) + if message.count('\n'): + message_wrapped = message + else: + message_wrapped = textwrap.fill(message, local_line_width) + message_wrapped_lines = message_wrapped.count('\n') + 1 + longest_line_len = max([len(l) for l in message.split('\n')]) + width_used = min(longest_line_len, local_line_width) + max_line_total = max(max_line_total, width_used) + # height = _GetNumLinesNeeded(message, width_used) + height = message_wrapped_lines + output += message_wrapped + '\n' + total_lines += height + + message = output + + # def __init__(self, menu=None, filename=None, data=None, data_base64=None, tooltip=None, metadata=None): + return SystemTray.notify(title=title, message=message, icon=icon, display_duration_in_ms=display_duration_in_ms, fade_in_duration=fade_in_duration, + alpha=alpha, location=location) + + +def popup_menu(window, element, menu_def, title=None, location=(None, None)): + """ + Makes a "popup menu" + This type of menu is what you get when a normal menu or a right click menu is torn off + The settings for the menu are obtained from the window parameter's Window + + + :param window: The window associated with the popup menu. The theme and right click menu settings for this window will be used + :type window: Window + :param element: An element in your window to associate the menu to. It can be any element + :type element: Element + :param menu_def: A menu definition. This will be the same format as used for Right Click Menus1 + :type menu_def: List[List[ List[str] | str ]] + :param title: The title that will be shown on the torn off menu window. Defaults to window titlr + :type title: str + :param location: The location on the screen to place the window + :type location: (int, int) | (None, None) + """ + + element._popup_menu_location = location + top_menu = tk.Menu(window.TKroot, tearoff=True, tearoffcommand=element._tearoff_menu_callback) + if window.right_click_menu_background_color not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(bg=window.right_click_menu_background_color) + if window.right_click_menu_text_color not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(fg=window.right_click_menu_text_color) + if window.right_click_menu_disabled_text_color not in (COLOR_SYSTEM_DEFAULT, None): + top_menu.config(disabledforeground=window.right_click_menu_disabled_text_color) + if window.right_click_menu_font is not None: + top_menu.config(font=window.right_click_menu_font) + if window.right_click_menu_selected_colors[0] != COLOR_SYSTEM_DEFAULT: + top_menu.config(activeforeground=window.right_click_menu_selected_colors[0]) + if window.right_click_menu_selected_colors[1] != COLOR_SYSTEM_DEFAULT: + top_menu.config(activebackground=window.right_click_menu_selected_colors[1]) + top_menu.config(title=window.Title if title is None else title) + AddMenuItem(top_menu, menu_def[1], element, right_click_menu=True) + # element.Widget.bind('', element._RightClickMenuCallback) + top_menu.invoke(0) + + +def popup_error_with_traceback(title, *messages, emoji=None): + """ + Show an error message and as many additoinal lines of messages as you want. + Will show the same error window as PySimpleGUI uses internally. Has a button to + take the user to the line of code you called this popup from. + If you include the Exception information in your messages, then it will be parsed and additional information + will be in the window about such as the specific line the error itself occurred on. + + :param title: The title that will be shown in the popup's titlebar and in the first line of the window + :type title: str + :param *messages: A variable number of lines of messages you wish to show your user + :type *messages: Any + :param emoji: An optional BASE64 Encoded image to shows in the error window + :type emoji: bytes + """ + + # For now, call the function that PySimpleGUI uses internally + _error_popup_with_traceback(str(title), *messages, emoji=emoji) + + +def _error_popup_with_traceback(title, *args, emoji=None): + if SUPPRESS_ERROR_POPUPS: + return + trace_details = traceback.format_stack() + error_message = '' + file_info_pysimplegui = None + for line in reversed(trace_details): + if __file__ not in line: + file_info_pysimplegui = line.split(",")[0] + error_message = line + break + if file_info_pysimplegui is None: + _error_popup_with_code(title, None, None, 'Did not find your traceback info', *args, emoji=emoji) + return + + error_parts = None + if error_message != '': + error_parts = error_message.split(', ') + if len(error_parts) < 4: + error_message = error_parts[0] + '\n' + error_parts[1] + '\n' + ''.join(error_parts[2:]) + if error_parts is None: + print('*** Error popup attempted but unable to parse error details ***') + print(trace_details) + return + filename = error_parts[0][error_parts[0].index('File ') + 5:] + line_num = error_parts[1][error_parts[1].index('line ') + 5:] + _error_popup_with_code(title, filename, line_num, error_message, *args, emoji=emoji) + + +def _error_popup_with_code(title, filename, line_num, *args, emoji=None): + """ + Makes the error popup window + + :param title: The title that will be shown in the popup's titlebar and in the first line of the window + :type title: str + :param filename: The filename to show.. may not be the filename that actually encountered the exception! + :type filename: str + :param line_num: Line number within file with the error + :type line_num: int | str + :param args: A variable number of lines of messages + :type args: *Any + :param emoji: An optional BASE64 Encoded image to shows in the error window + :type emoji: bytes + """ + editor_filename = execute_get_editor() + emoji_data = emoji if emoji is not None else _random_error_emoji() + layout = [[Text('ERROR'), Text(title)], + [Image(data=emoji_data)]] + lines = [] + for msg in args: + if isinstance(msg, Exception): + lines += [[f'Additional Exception info pased in by PySimpleGUI or user: Error type is: {type(msg).__name__}']] + lines += [[f'In file {__file__} Line number {msg.__traceback__.tb_lineno}']] + lines += [[f'{msg}']] + else: + lines += [str(msg).split('\n')] + max_line_len = 0 + for line in lines: + max_line_len = max(max_line_len, max([len(s) for s in line])) + + layout += [[Text(''.join(line), size=(min(max_line_len, 90), None))] for line in lines] + layout += [[Button('Close'), Button('Take me to error', disabled=True if not editor_filename else False), Button('Kill Application', button_color='white on red')]] + if not editor_filename: + layout += [[Text('Configure editor in the Global settings to enable "Take me to error" feature')]] + window = Window(title, layout, keep_on_top=True) + + while True: + event, values = window.read() + if event in ('Close', WIN_CLOSED): + break + if event == 'Kill Application': + window.close() + popup_quick_message('KILLING APP! BYE!', font='_ 18', keep_on_top=True, text_color='white', background_color='red', non_blocking=False) + sys.exit() + if event == 'Take me to error' and filename is not None and line_num is not None: + execute_editor(filename, line_num) + + window.close() + + +##################################################################### +# Animated window while shell command is executed +##################################################################### + +def _process_thread(*args): + global __shell_process__ + + # start running the command with arugments + try: + __shell_process__ = subprocess.run(args, shell=True, stdout=subprocess.PIPE) + except Exception as e: + print('Exception running process args = {}'.format(args)) + __shell_process__ = None + + +def shell_with_animation(command, args=None, image_source=DEFAULT_BASE64_LOADING_GIF, message=None, background_color=None, text_color=None, font=None, + no_titlebar=True, grab_anywhere=True, keep_on_top=True, location=(None, None), alpha_channel=None, time_between_frames=100, + transparent_color=None): + """ + Execute a "shell command" (anything capable of being launched using subprocess.run) and + while the command is running, show an animated popup so that the user knows that a long-running + command is being executed. Without this mechanism, the GUI appears locked up. + + :param command: The command to run + :type command: (str) + :param args: List of arguments + :type args: List[str] + :param image_source: Either a filename or a base64 string. + :type image_source: str | bytes + :param message: An optional message to be shown with the animation + :type message: (str) + :param background_color: color of background + :type background_color: (str) + :param text_color: color of the text + :type text_color: (str) + :param font: specifies the font family, size, etc. Tuple or Single string format 'name size styles'. Styles: italic * roman bold normal underline overstrike + :type font: str | tuple + :param no_titlebar: If True then the titlebar and window frame will not be shown + :type no_titlebar: (bool) + :param grab_anywhere: If True then you can move the window just clicking anywhere on window, hold and drag + :type grab_anywhere: (bool) + :param keep_on_top: If True then Window will remain on top of all other windows currently shownn + :type keep_on_top: (bool) + :param location: (x,y) location on the screen to place the top left corner of your window. Default is to center on screen + :type location: (int, int) + :param alpha_channel: Window transparency 0 = invisible 1 = completely visible. Values between are see through + :type alpha_channel: (float) + :param time_between_frames: Amount of time in milliseconds between each frame + :type time_between_frames: (int) + :param transparent_color: This color will be completely see-through in your window. Can even click through + :type transparent_color: (str) + :return: The resulting string output from stdout + :rtype: (str) + """ + + global __shell_process__ + + real_args = [command] + if args is not None: + for arg in args: + real_args.append(arg) + # real_args.append(args) + thread = threading.Thread(target=_process_thread, args=real_args, daemon=True) + thread.start() + + # Poll to see if the thread is still running. If so, then continue showing the animation + while True: + popup_animated(image_source=image_source, message=message, time_between_frames=time_between_frames, transparent_color=transparent_color, + text_color=text_color, background_color=background_color, font=font, no_titlebar=no_titlebar, grab_anywhere=grab_anywhere, + keep_on_top=keep_on_top, location=location, alpha_channel=alpha_channel) + thread.join(timeout=time_between_frames / 1000) + if not thread.is_alive(): + break + popup_animated(None) # stop running the animation + + output = __shell_process__.__str__().replace('\\r\\n', '\n') # fix up the output string + output = output[output.index("stdout=b'") + 9:-2] + return output + + +####################################################################### +# 8888888888 +# 888 +# 888 +# 8888888 888d888 888d888 .d88b. 888d888 +# 888 888P" 888P" d88""88b 888P" +# 888 888 888 888 888 888 +# 888 888 888 Y88..88P 888 +# 8888888888 888 888 "Y88P" 888 +# +# +# +# 888b d888 +# 8888b d8888 +# 88888b.d88888 +# 888Y88888P888 .d88b. .d8888b .d8888b 8888b. .d88b. .d88b. +# 888 Y888P 888 d8P Y8b 88K 88K "88b d88P"88b d8P Y8b +# 888 Y8P 888 88888888 "Y8888b. "Y8888b. .d888888 888 888 88888888 +# 888 " 888 Y8b. X88 X88 888 888 Y88b 888 Y8b. +# 888 888 "Y8888 88888P' 88888P' "Y888888 "Y88888 "Y8888 +# 888 +# Y8b d88P +# "Y88P" +# Code to make messages to help user find errors in their code +####################################################################### + +def _create_error_message(): + """ + Creates an error message containing the filename and line number of the users + code that made the call into PySimpleGUI + :return: Error string to display with file, line number, and line of code + :rtype: str + """ + + called_func = inspect.stack()[1].function + trace_details = traceback.format_stack() + error_message = '' + file_info_pysimplegui = trace_details[-1].split(",")[0] + for line in reversed(trace_details): + if line.split(",")[0] != file_info_pysimplegui: + error_message = line + break + if error_message != '': + error_parts = error_message.split(', ') + if len(error_parts) < 4: + error_message = error_parts[0] + '\n' + error_parts[1] + '\n' + ''.join(error_parts[2:]) + return 'The PySimpleGUI internal reporting function is ' + called_func + '\n' + \ + 'The error originated from:\n' + error_message + + +# .d8888b. 888 888 d8b +# d88P Y88b 888 888 Y8P +# Y88b. 888 888 +# "Y888b. .d88b. 888888 888888 888 88888b. .d88b. .d8888b +# "Y88b. d8P Y8b 888 888 888 888 "88b d88P"88b 88K +# "888 88888888 888 888 888 888 888 888 888 "Y8888b. +# Y88b d88P Y8b. Y88b. Y88b. 888 888 888 Y88b 888 X88 +# "Y8888P" "Y8888 "Y888 "Y888 888 888 888 "Y88888 88888P' +# 888 +# Y8b d88P +# "Y88P" + +# Interface to saving / loading user program settings in json format +# This is a new set of APIs supplied by PySimpleGUI that enables users to easily set/save/load individual +# settings. They are automatically saved to a JSON file. If no file/path is specified then a filename is +# created from the source file filename. + +class UserSettings: + # A reserved settings object for use by the setting functions. It's a way for users + # to access the user settings without diarectly using the UserSettings class + _default_for_function_interface = None # type: UserSettings + + def __init__(self, filename=None, path=None, silent_on_error=False, autosave=True, use_config_file=None, convert_bools_and_none=True): + """ + User Settings + + :param filename: The name of the file to use. Can be a full path and filename or just filename + :type filename: (str or None) + :param path: The folder that the settings file will be stored in. Do not include the filename. + :type path: (str or None) + :param silent_on_error: If True errors will not be reported + :type silent_on_error: (bool) + :param autosave: If True the settings file is saved after every update + :type autosave: (bool) + :param use_config_file: If True then the file format will be a config.ini rather than json + :type use_config_file: (bool) + :param convert_bools_and_none: If True then "True", "False", "None" will be converted to the Python values True, False, None when using INI files. Default is TRUE + :type convert_bools_and_none: (bool) + """ + + self.path = path + self.filename = filename + self.full_filename = None + self.dict = {} + self.default_value = None + self.silent_on_error = silent_on_error + self.autosave = autosave + if filename is not None and filename.endswith('.ini') and use_config_file is None: + warnings.warn('[UserSettings] You have specified a filename with .ini extension but did not set use_config_file. Setting use_config_file for you.', UserWarning) + use_config_file = True + self.use_config_file = use_config_file + # self.retain_config_comments = retain_config_comments + self.convert_bools = convert_bools_and_none + if use_config_file: + self.config = configparser.ConfigParser() + self.config.optionxform = str + # self.config_dict = {} + self.section_class_dict = {} # type: dict[_SectionDict] + if filename is not None or path is not None: + self.load(filename=filename, path=path) + + ######################################################################################################## + ## FIRST is the _SectionDict helper class + ## It is typically not directly accessed, although it is possible to call delete_section, get, set + ######################################################################################################## + + class _SectionDict: + item_count = 0 + + def __init__(self, section_name, section_dict, config, user_settings_parent): # (str, Dict, configparser.ConfigParser) + """ + The Section Dictionary. It holds the values for a section. + + :param section_name: Name of the section + :type section_name: str + :param section_dict: Dictionary of values for the section + :type section_dict: dict + :param config: The configparser object + :type config: configparser.ConfigParser + :param user_settings_parent: The parent UserSettings object that hdas this section + :type user_settings_parent: UserSettings + """ + self.section_name = section_name + self.section_dict = section_dict # type: Dict + self.new_section = False + self.config = config # type: configparser.ConfigParser + self.user_settings_parent = user_settings_parent # type: UserSettings + UserSettings._SectionDict.item_count += 1 + + if self.user_settings_parent.convert_bools: + for key, value in self.section_dict.items(): + if value == 'True': + value = True + self.section_dict[key] = value + elif value == 'False': + value = False + self.section_dict[key] = value + elif value == 'None': + value = None + self.section_dict[key] = value + # print(f'++++++ making a new SectionDict with name = {section_name}') + + def __repr__(self): + """ + Converts the settings dictionary into a string for easy display + + :return: the dictionary as a string + :rtype: (str) + """ + return_string = '{}:\n'.format(self.section_name) + for entry in self.section_dict.keys(): + return_string += ' {} : {}\n'.format(entry, self.section_dict[entry]) + + return return_string + + def get(self, key, default=None): + """ + Returns the value of a specified setting. If the setting is not found in the settings dictionary, then + the user specified default value will be returned. It no default is specified and nothing is found, then + the "default value" is returned. This default can be specified in this call, or previously defined + by calling set_default. If nothing specified now or previously, then None is returned as default. + + :param key: Key used to lookup the setting in the settings dictionary + :type key: (Any) + :param default: Value to use should the key not be found in the dictionary + :type default: (Any) + :return: Value of specified settings + :rtype: (Any) + """ + value = self.section_dict.get(key, default) + if self.user_settings_parent.convert_bools: + if value == 'True': + value = True + elif value == 'False': + value = False + return value + + def set(self, key, value): + value = str(value) # all values must be strings + if self.new_section: + self.config.add_section(self.section_name) + self.new_section = False + self.config.set(section=self.section_name, option=key, value=value) + self.section_dict[key] = value + if self.user_settings_parent.autosave: + self.user_settings_parent.save() + + def delete_section(self): + # print(f'** Section Dict deleting section = {self.section_name}') + self.config.remove_section(section=self.section_name) + del self.user_settings_parent.section_class_dict[self.section_name] + if self.user_settings_parent.autosave: + self.user_settings_parent.save() + + def __getitem__(self, item): + # print('*** In SectionDict Get ***') + return self.get(item) + + def __setitem__(self, item, value): + """ + Enables setting a setting by using [ ] notation like a dictionary. + Your code will have this kind of design pattern: + settings = sg.UserSettings() + settings[item] = value + + :param item: The key for the setting to change. Needs to be a hashable type. Basically anything but a list + :type item: Any + :param value: The value to set the setting to + :type value: Any + """ + # print(f'*** In SectionDict SET *** item = {item} value = {value}') + self.set(item, value) + self.section_dict[item] = value + + def __delitem__(self, item): + """ + Delete an individual user setting. This is the same as calling delete_entry. The syntax + for deleting the item using this manner is: + del settings['entry'] + :param item: The key for the setting to delete + :type item: Any + """ + # print(f'** In SectionDict delete! section name = {self.section_name} item = {item} ') + self.config.remove_option(section=self.section_name, option=item) + try: + del self.section_dict[item] + except Exception as e: + pass + # print(e) + if self.user_settings_parent.autosave: + self.user_settings_parent.save() + + ######################################################################################################## + + def __repr__(self): + """ + Converts the settings dictionary into a string for easy display + + :return: the dictionary as a string + :rtype: (str) + """ + if not self.use_config_file: + return pprint.pformat(self.dict) + else: + # rvalue = '-------------------- Settings ----------------------\n' + rvalue = '' + for name, section in self.section_class_dict.items(): + rvalue += str(section) + + # rvalue += '\n-------------------- Settings End----------------------\n' + rvalue += '\n' + return rvalue + + def set_default_value(self, default): + """ + Set the value that will be returned if a requested setting is not found + + :param default: value to be returned if a setting is not found in the settings dictionary + :type default: Any + """ + self.default_value = default + + def _compute_filename(self, filename=None, path=None): + """ + Creates the full filename given the path or the filename or both. + + :param filename: The name of the file to use. Can be a full path and filename or just filename + :type filename: (str or None) + :param path: The folder that the settings file will be stored in. Do not include the filename. + :type path: (str or None) + :return: Tuple with (full filename, path, filename) + :rtype: Tuple[str, str, str] + """ + if filename is not None: + dirname_from_filename = os.path.dirname(filename) # see if a path was provided as part of filename + if dirname_from_filename: + path = dirname_from_filename + filename = os.path.basename(filename) + elif self.filename is not None: + filename = self.filename + else: + filename = os.path.splitext(os.path.basename(sys.argv[0]))[0] + if filename == '__main__': # if got __main__ then try an alternative approach + filename = os.path.splitext(os.path.basename(sys.modules["__main__"].__file__))[0] + if filename == '__main__': + # filename = os.path.splitext(os.path.basename(__file__))[0] # likely to be PySimpleGUI.py which may be a problem... + filename = os.path.splitext(os.path.basename(inspect.getsourcefile(lambda: 0)))[0] + if filename == '__main__': + print(f'Error setting the default settings filename. Please report this error. filename = {filename}') + if not self.use_config_file: # add the extension to the filename + filename += '.json' + else: + filename += '.ini' + + if path is None: + if self.path is not None: + # path = self.path + path = os.path.expanduser(self.path) # expand user provided path in case it has user ~ in it. Don't think it'll hurt + elif DEFAULT_USER_SETTINGS_PATH is not None: # if user set the path manually system-wide using set options + path = os.path.expanduser(DEFAULT_USER_SETTINGS_PATH) + elif running_trinket(): + path = os.path.expanduser(DEFAULT_USER_SETTINGS_TRINKET_PATH) + elif running_replit(): + path = os.path.expanduser(DEFAULT_USER_SETTINGS_REPLIT_PATH) + elif running_windows(): + path = os.path.expanduser(DEFAULT_USER_SETTINGS_WIN_PATH) + elif running_linux(): + path = os.path.expanduser(DEFAULT_USER_SETTINGS_LINUX_PATH) + elif running_mac(): + path = os.path.expanduser(DEFAULT_USER_SETTINGS_MAC_PATH) + else: + path = '.' + + full_filename = os.path.join(path, filename) + return (full_filename, path, filename) + + def set_location(self, filename=None, path=None): + """ + Sets the location of the settings file + + :param filename: The name of the file to use. Can be a full path and filename or just filename + :type filename: (str or None) + :param path: The folder that the settings file will be stored in. Do not include the filename. + :type path: (str or None) + """ + cfull_filename, cpath, cfilename = self._compute_filename(filename=filename, path=path) + + self.filename = cfilename + self.path = cpath + self.full_filename = cfull_filename + + def get_filename(self, filename=None, path=None): + """ + Sets the filename and path for your settings file. Either paramter can be optional. + + If you don't choose a path, one is provided for you that is OS specific + Windows path default = users/name/AppData/Local/PySimpleGUI/settings. + + If you don't choose a filename, your application's filename + '.json' will be used. + + Normally the filename and path are split in the user_settings calls. However for this call they + can be combined so that the filename contains both the path and filename. + + :param filename: The name of the file to use. Can be a full path and filename or just filename + :type filename: (str or None) + :param path: The folder that the settings file will be stored in. Do not include the filename. + :type path: (str or None) + :return: The full pathname of the settings file that has both the path and filename combined. + :rtype: (str) + """ + if filename is not None or path is not None or (filename is None and path is None and self.full_filename is None): + self.set_location(filename=filename, path=path) + self.read() + return self.full_filename + + def save(self, filename=None, path=None): + """ + Saves the current settings dictionary. If a filename or path is specified in the call, then it will override any + previously specitfied filename to create a new settings file. The settings dictionary is then saved to the newly defined file. + + :param filename: The fFilename to save to. Can specify a path or just the filename. If no filename specified, then the caller's filename will be used. + :type filename: (str or None) + :param path: The (optional) path to use to save the file. + :type path: (str or None) + :return: The full path and filename used to save the settings + :rtype: (str) + """ + if filename is not None or path is not None: + self.set_location(filename=filename, path=path) + try: + if not os.path.exists(self.path): + os.makedirs(self.path) + with open(self.full_filename, 'w') as f: + if not self.use_config_file: + json.dump(self.dict, f) + else: + self.config.write(f) + except Exception as e: + if not self.silent_on_error: + _error_popup_with_traceback('UserSettings.save error', '*** UserSettings.save() Error saving settings to file:***\n', self.full_filename, e) + + return self.full_filename + + def load(self, filename=None, path=None): + """ + Specifies the path and filename to use for the settings and reads the contents of the file. + The filename can be a full filename including a path, or the path can be specified separately. + If no filename is specified, then the caller's filename will be used with the extension ".json" + + :param filename: Filename to load settings from (and save to in the future) + :type filename: (str or None) + :param path: Path to the file. Defaults to a specific folder depending on the operating system + :type path: (str or None) + :return: The settings dictionary (i.e. all settings) + :rtype: (dict) + """ + if filename is not None or path is not None or self.full_filename is None: + self.set_location(filename, path) + self.read() + return self.dict + + def delete_file(self, filename=None, path=None, report_error=False): + """ + Deltes the filename and path for your settings file. Either paramter can be optional. + If you don't choose a path, one is provided for you that is OS specific + Windows path default = users/name/AppData/Local/PySimpleGUI/settings. + If you don't choose a filename, your application's filename + '.json' will be used + Also sets your current dictionary to a blank one. + + :param filename: The name of the file to use. Can be a full path and filename or just filename + :type filename: (str or None) + :param path: The folder that the settings file will be stored in. Do not include the filename. + :type path: (str or None) + :param report_error: Determines if an error should be shown if a delete error happen (i.e. file isn't present) + :type report_error: (bool) + """ + + if filename is not None or path is not None or (filename is None and path is None): + self.set_location(filename=filename, path=path) + try: + os.remove(self.full_filename) + except Exception as e: + if report_error: + _error_popup_with_traceback('UserSettings delete_file warning ***', 'Exception trying to perform os.remove', e) + self.dict = {} + + def write_new_dictionary(self, settings_dict): + """ + Writes a specified dictionary to the currently defined settings filename. + + :param settings_dict: The dictionary to be written to the currently defined settings file + :type settings_dict: (dict) + """ + if self.full_filename is None: + self.set_location() + self.dict = settings_dict + self.save() + + def read(self): + """ + Reads settings file and returns the dictionary. + If you have anything changed in an existing settings dictionary, you will lose your changes. + :return: settings dictionary + :rtype: (dict) + """ + if self.full_filename is None: + return {} + try: + if os.path.exists(self.full_filename): + with open(self.full_filename, 'r') as f: + if not self.use_config_file: # if using json + self.dict = json.load(f) + else: # if using a config file + self.config.read_file(f) + # Make a dictionary of SectionDict classses. Keys are the config.sections(). + self.section_class_dict = {} + for section in self.config.sections(): + section_dict = dict(self.config[section]) + self.section_class_dict[section] = self._SectionDict(section, section_dict, self.config, self) + + self.dict = self.section_class_dict + self.config_sections = self.config.sections() + # self.config_dict = {section_name : dict(self.config[section_name]) for section_name in self.config.sections()} + # if self.retain_config_comments: + # self.config_file_contents = f.readlines() + except Exception as e: + if not self.silent_on_error: + _error_popup_with_traceback('User Settings read warning', 'Error reading settings from file', self.full_filename, e) + # print('*** UserSettings.read - Error reading settings from file: ***\n', self.full_filename, e) + # print(_create_error_message()) + + return self.dict + + def exists(self, filename=None, path=None): + """ + Check if a particular settings file exists. Returns True if file exists + + :param filename: The name of the file to use. Can be a full path and filename or just filename + :type filename: (str or None) + :param path: The folder that the settings file will be stored in. Do not include the filename. + :type path: (str or None) + """ + cfull_filename, cpath, cfilename = self._compute_filename(filename=filename, path=path) + if os.path.exists(cfull_filename): + return True + return False + + def delete_entry(self, key, section=None, silent_on_error=None): + """ + Deletes an individual entry. If no filename has been specified up to this point, + then a default filename will be used. + After value has been deleted, the settings file is written to disk. + + :param key: Setting to be deleted. Can be any valid dictionary key type (i.e. must be hashable) + :type key: (Any) + :param silent_on_error: Determines if error should be shown. This parameter overrides the silent on error setting for the object. + :type silent_on_error: (bool) + """ + if self.full_filename is None: + self.set_location() + self.read() + if not self.use_config_file: # Is using JSON file + if key in self.dict: + del self.dict[key] + if self.autosave: + self.save() + else: + if silent_on_error is False or (silent_on_error is not True and not self.silent_on_error): + _error_popup_with_traceback('User Settings delete_entry Warning - key', key, ' not found in settings') + + else: + if section is not None: + section_dict = self.get(section) + # print(f'** Trying to delete an entry with a config file in use ** id of section_dict = {id(section_dict)}') + # section_dict = self.section_class_dict[section] + del self.get(section)[key] + # del section_dict[key] + # del section_dict[key] + + def delete_section(self, section): + """ + Deletes a section with the name provided in the section parameter. Your INI file will be saved afterwards if auto-save enabled (default is ON) + :param section: Name of the section to delete + :type section: str + """ + if not self.use_config_file: + return + + section_dict = self.section_class_dict.get(section, None) + section_dict.delete_section() + del self.section_class_dict[section] + if self.autosave: + self.save() + + def set(self, key, value): + """ + Sets an individual setting to the specified value. If no filename has been specified up to this point, + then a default filename will be used. + After value has been modified, the settings file is written to disk. + Note that this call is not value for a config file normally. If it is, then the key is assumed to be the + Section key and the value written will be the default value. + :param key: Setting to be saved. Can be any valid dictionary key type + :type key: (Any) + :param value: Value to save as the setting's value. Can be anything + :type value: (Any) + :return: value that key was set to + :rtype: (Any) + """ + + if self.full_filename is None: + self.set_location() + # if not autosaving, then don't read the file or else will lose changes + if not self.use_config_file: + if self.autosave or self.dict == {}: + self.read() + self.dict[key] = value + else: + self.section_class_dict[key].set(value, self.default_value) + + if self.autosave: + self.save() + return value + + def get(self, key, default=None): + """ + Returns the value of a specified setting. If the setting is not found in the settings dictionary, then + the user specified default value will be returned. It no default is specified and nothing is found, then + the "default value" is returned. This default can be specified in this call, or previously defined + by calling set_default. If nothing specified now or previously, then None is returned as default. + + :param key: Key used to lookup the setting in the settings dictionary + :type key: (Any) + :param default: Value to use should the key not be found in the dictionary + :type default: (Any) + :return: Value of specified settings + :rtype: (Any) + """ + if self.default_value is not None: + default = self.default_value + + if self.full_filename is None: + self.set_location() + if self.autosave or self.dict == {}: + self.read() + if not self.use_config_file: + value = self.dict.get(key, default) + else: + value = self.section_class_dict.get(key, None) + if key not in list(self.section_class_dict.keys()): + self.section_class_dict[key] = self._SectionDict(key, {}, self.config, self) + value = self.section_class_dict[key] + value.new_section = True + return value + + def get_dict(self): + """ + Returns the current settings dictionary. If you've not setup the filename for the + settings, a default one will be used and then read. + + Note that you can display the dictionary in text format by printing the object itself. + + :return: The current settings dictionary + :rtype: Dict + """ + if self.full_filename is None: + self.set_location() + if self.autosave or self.dict == {}: + self.read() + self.save() + return self.dict + + def __setitem__(self, item, value): + """ + Enables setting a setting by using [ ] notation like a dictionary. + Your code will have this kind of design pattern: + settings = sg.UserSettings() + settings[item] = value + + :param item: The key for the setting to change. Needs to be a hashable type. Basically anything but a list + :type item: Any + :param value: The value to set the setting to + :type value: Any + """ + return self.set(item, value) + + def __getitem__(self, item): + """ + Enables accessing a setting using [ ] notation like a dictionary. + If the entry does not exist, then the default value will be returned. This default + value is None unless user sets by calling UserSettings.set_default_value(default_value) + + :param item: The key for the setting to change. Needs to be a hashable type. Basically anything but a list + :type item: Any + :return: The setting value + :rtype: Any + """ + return self.get(item, self.default_value) + + def __delitem__(self, item): + """ + Delete an individual user setting. This is the same as calling delete_entry. The syntax + for deleting the item using this manner is: + del settings['entry'] + :param item: The key for the setting to delete + :type item: Any + """ + if self.use_config_file: + return self.get(item) + else: + self.delete_entry(key=item) + + +# Create a singleton for the settings information so that the settings functions can be used +if UserSettings._default_for_function_interface is None: + UserSettings._default_for_function_interface = UserSettings() + + +def user_settings_filename(filename=None, path=None): + """ + Sets the filename and path for your settings file. Either paramter can be optional. + + If you don't choose a path, one is provided for you that is OS specific + Windows path default = users/name/AppData/Local/PySimpleGUI/settings. + + If you don't choose a filename, your application's filename + '.json' will be used. + + Normally the filename and path are split in the user_settings calls. However for this call they + can be combined so that the filename contains both the path and filename. + + :param filename: The name of the file to use. Can be a full path and filename or just filename + :type filename: (str) + :param path: The folder that the settings file will be stored in. Do not include the filename. + :type path: (str) + :return: The full pathname of the settings file that has both the path and filename combined. + :rtype: (str) + """ + settings = UserSettings._default_for_function_interface + if filename is not None or path is not None: # Any parameter set means we're changing the location + settings.set_location(filename, path) + return settings.get_filename(filename, path) # Return the full filename regardless of it being modified + + +def user_settings_delete_filename(filename=None, path=None, report_error=False): + """ + Deltes the filename and path for your settings file. Either paramter can be optional. + If you don't choose a path, one is provided for you that is OS specific + Windows path default = users/name/AppData/Local/PySimpleGUI/settings. + If you don't choose a filename, your application's filename + '.json' will be used + Also sets your current dictionary to a blank one. + + :param filename: The name of the file to use. Can be a full path and filename or just filename + :type filename: (str) + :param path: The folder that the settings file will be stored in. Do not include the filename. + :type path: (str) + """ + settings = UserSettings._default_for_function_interface + settings.delete_file(filename, path, report_error=report_error) + + +def user_settings_set_entry(key, value): + """ + Sets an individual setting to the specified value. If no filename has been specified up to this point, + then a default filename will be used. + After value has been modified, the settings file is written to disk. + + :param key: Setting to be saved. Can be any valid dictionary key type + :type key: (Any) + :param value: Value to save as the setting's value. Can be anything + :type value: (Any) + """ + settings = UserSettings._default_for_function_interface + settings.set(key, value) + + +def user_settings_delete_entry(key, silent_on_error=None): + """ + Deletes an individual entry. If no filename has been specified up to this point, + then a default filename will be used. + After value has been deleted, the settings file is written to disk. + + :param key: Setting to be saved. Can be any valid dictionary key type (hashable) + :type key: (Any) + :param silent_on_error: Determines if an error popup should be shown if an error occurs. Overrides the silent onf effort setting from initialization + :type silent_on_error: (bool) + """ + settings = UserSettings._default_for_function_interface + settings.delete_entry(key, silent_on_error=silent_on_error) + + +def user_settings_get_entry(key, default=None): + """ + Returns the value of a specified setting. If the setting is not found in the settings dictionary, then + the user specified default value will be returned. It no default is specified and nothing is found, then + None is returned. If the key isn't in the dictionary, then it will be added and the settings file saved. + If no filename has been specified up to this point, then a default filename will be assigned and used. + The settings are SAVED prior to returning. + + :param key: Key used to lookup the setting in the settings dictionary + :type key: (Any) + :param default: Value to use should the key not be found in the dictionary + :type default: (Any) + :return: Value of specified settings + :rtype: (Any) + """ + settings = UserSettings._default_for_function_interface + return settings.get(key, default) + + +def user_settings_save(filename=None, path=None): + """ + Saves the current settings dictionary. If a filename or path is specified in the call, then it will override any + previously specitfied filename to create a new settings file. The settings dictionary is then saved to the newly defined file. + + :param filename: The fFilename to save to. Can specify a path or just the filename. If no filename specified, then the caller's filename will be used. + :type filename: (str) + :param path: The (optional) path to use to save the file. + :type path: (str) + :return: The full path and filename used to save the settings + :rtype: (str) + """ + settings = UserSettings._default_for_function_interface + return settings.save(filename, path) + + +def user_settings_load(filename=None, path=None): + """ + Specifies the path and filename to use for the settings and reads the contents of the file. + The filename can be a full filename including a path, or the path can be specified separately. + If no filename is specified, then the caller's filename will be used with the extension ".json" + + :param filename: Filename to load settings from (and save to in the future) + :type filename: (str) + :param path: Path to the file. Defaults to a specific folder depending on the operating system + :type path: (str) + :return: The settings dictionary (i.e. all settings) + :rtype: (dict) + """ + settings = UserSettings._default_for_function_interface + return settings.load(filename, path) + + +def user_settings_file_exists(filename=None, path=None): + """ + Determines if a settings file exists. If so a boolean True is returned. + If either a filename or a path is not included, then the appropriate default + will be used. + + :param filename: Filename to check + :type filename: (str) + :param path: Path to the file. Defaults to a specific folder depending on the operating system + :type path: (str) + :return: True if the file exists + :rtype: (bool) + """ + settings = UserSettings._default_for_function_interface + return settings.exists(filename=filename, path=path) + + +def user_settings_write_new_dictionary(settings_dict): + """ + Writes a specified dictionary to the currently defined settings filename. + + :param settings_dict: The dictionary to be written to the currently defined settings file + :type settings_dict: (dict) + """ + settings = UserSettings._default_for_function_interface + settings.write_new_dictionary(settings_dict) + + +def user_settings_silent_on_error(silent_on_error=False): + """ + Used to control the display of error messages. By default, error messages are displayed to stdout. + + :param silent_on_error: If True then all error messages are silenced (not displayed on the console) + :type silent_on_error: (bool) + """ + settings = UserSettings._default_for_function_interface + settings.silent_on_error = silent_on_error + + +def user_settings(): + """ + Returns the current settings dictionary. If you've not setup the filename for the + settings, a default one will be used and then read. + :return: The current settings dictionary as a dictionary or a nicely formatted string representing it + :rtype: (dict or str) + """ + settings = UserSettings._default_for_function_interface + return settings.get_dict() + + +def user_settings_object(): + """ + Returns the object that is used for the function version of this API. + With this object you can use the object interface, print it out in a nice format, etc. + + :return: The UserSettings obect used for the function level interface + :rtype: (UserSettings) + """ + return UserSettings._default_for_function_interface + + +''' +'########:'##::::'##:'########::'######::::::::'###::::'########::'####: + ##.....::. ##::'##:: ##.....::'##... ##::::::'## ##::: ##.... ##:. ##:: + ##::::::::. ##'##::: ##::::::: ##:::..::::::'##:. ##:: ##:::: ##:: ##:: + ######:::::. ###:::: ######::: ##::::::::::'##:::. ##: ########::: ##:: + ##...:::::: ## ##::: ##...:::: ##:::::::::: #########: ##.....:::: ##:: + ##:::::::: ##:. ##:: ##::::::: ##::: ##:::: ##.... ##: ##::::::::: ##:: + ########: ##:::. ##: ########:. ######::::: ##:::: ##: ##::::::::'####: +........::..:::::..::........:::......::::::..:::::..::..:::::::::....:: +''' + + +def execute_command_subprocess(command, *args, wait=False, cwd=None, pipe_output=False, merge_stderr_with_stdout=True, stdin=None): + """ + Runs the specified command as a subprocess. + By default the call is non-blocking. + The function will immediately return without waiting for the process to complete running. You can use the returned Popen object to communicate with the subprocess and get the results. + Returns a subprocess Popen object. + + :param command: The command/file to execute. What you would type at a console to run a program or shell command. + :type command: (str) + :param *args: Variable number of arguments that are passed to the program being started as command line parms + :type *args: (Any) + :param wait: If True then wait for the subprocess to finish + :type wait: (bool) + :param cwd: Working directory to use when executing the subprocess + :type cwd: (str)) + :param pipe_output: If True then output from the subprocess will be piped. You MUST empty the pipe by calling execute_get_results or your subprocess will block until no longer full + :type pipe_output: (bool) + :param merge_stderr_with_stdout: If True then output from the subprocess stderr will be merged with stdout. The result is ALL output will be on stdout. + :type merge_stderr_with_stdout: (bool) + :param stdin: Value passed to the Popen call. Defaults to subprocess.DEVNULL so that the pyinstaller created executable work correctly + :type stdin: (bool) + :return: Popen object + :rtype: (subprocess.Popen) + """ + if stdin is None: + stdin = subprocess.DEVNULL + if command == '' or command is None: + return None + try: + if args is not None: + expanded_args = ' '.join(args) + # print('executing subprocess command:',command, 'args:',expanded_args) + if command[0] != '"' and ' ' in command and (r'/' in command or '\\' in command): + command = '"' + command + '"' + # print('calling popen with:', command +' '+ expanded_args) + # sp = subprocess.Popen(command +' '+ expanded_args, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, cwd=cwd) + if pipe_output: + if merge_stderr_with_stdout: + sp = subprocess.Popen(command + ' ' + expanded_args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=cwd, stdin=stdin) + else: + sp = subprocess.Popen(command + ' ' + expanded_args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=cwd, stdin=stdin) + else: + sp = subprocess.Popen(command + ' ' + expanded_args, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, cwd=cwd, stdin=stdin) + else: + sp = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=cwd, stdin=stdin) + if wait: + out, err = sp.communicate() + if out: + print(out.decode("utf-8")) + if err: + print(err.decode("utf-8")) + except Exception as e: + warnings.warn('Error in execute_command_subprocess {}'.format(e), UserWarning) + _error_popup_with_traceback('Error in execute_command_subprocess', e, 'command={}'.format(command), 'args={}'.format(args), 'cwd={}'.format(cwd)) + sp = None + return sp + + + +def execute_py_file(pyfile, parms=None, cwd=None, interpreter_command=None, wait=False, pipe_output=False, merge_stderr_with_stdout=True): + """ + Executes a Python file. + The interpreter to use is chosen based on this priority order: + 1. interpreter_command paramter + 2. global setting "-python command-" + 3. the interpreter running running PySimpleGUI + :param pyfile: the file to run + :type pyfile: (str) + :param parms: parameters to pass on the command line + :type parms: (str) + :param cwd: the working directory to use + :type cwd: (str) + :param interpreter_command: the command used to invoke the Python interpreter + :type interpreter_command: (str) + :param wait: the working directory to use + :type wait: (bool) + :param pipe_output: If True then output from the subprocess will be piped. You MUST empty the pipe by calling execute_get_results or your subprocess will block until no longer full + :type pipe_output: (bool) + :param merge_stderr_with_stdout: If True then output from the subprocess stderr will be merged with stdout. The result is ALL output will be on stdout. + :type merge_stderr_with_stdout: (bool) + :return: Popen object + :rtype: (subprocess.Popen) | None + """ + + if cwd is None: + # if the specific file is not found (not an absolute path) then assume it's relative to '.' + if not os.path.exists(pyfile): + cwd = '.' + + if pyfile[0] != '"' and ' ' in pyfile: + pyfile = '"' + pyfile + '"' + if interpreter_command is not None: + python_program = interpreter_command + else: + # use the version CURRENTLY RUNNING if nothing is specified. Previously used the one from the settings file + # ^ hmmm... that's not the code is doing now... it's getting the one from the settings file first + pysimplegui_user_settings.load() # Refresh the settings just in case they've changed via another program + python_program = pysimplegui_user_settings.get('-python command-', '') + if python_program == '': # if no interpreter set in the settings, then use the current one + python_program = sys.executable + # python_program = 'python' if running_windows() else 'python3' + if parms is not None and python_program: + sp = execute_command_subprocess(python_program, pyfile, parms, wait=wait, cwd=cwd, pipe_output=pipe_output, merge_stderr_with_stdout=merge_stderr_with_stdout) + elif python_program: + sp = execute_command_subprocess(python_program, pyfile, wait=wait, cwd=cwd, pipe_output=pipe_output, merge_stderr_with_stdout=merge_stderr_with_stdout) + else: + print('execute_py_file - No interpreter has been configured') + sp = None + return sp + + +def execute_py_get_interpreter(): + """ + Returns Python Interpreter from the system settings. If none found in the settings file + then the currently running interpreter is returned. + + :return: Full path to python interpreter (uses settings file or sys.executable) + :rtype: (str) + """ + pysimplegui_user_settings.load() # Refresh the settings just in case they've changed via another program + interpreter = pysimplegui_user_settings.get('-python command-', '') + if interpreter == '': + interpreter = sys.executable + return interpreter + + +def execute_py_get_running_interpreter(): + """ + Returns the command that is currently running. + + :return: Full path to python interpreter (uses sys.executable) + :rtype: (str) + """ + return sys.executable + + +def execute_editor(file_to_edit, line_number=None): + """ + Runs the editor that was configured in the global settings and opens the file to a specific line number. + Two global settings keys are used. + '-editor program-' the command line used to startup your editor. It's set + in the global settings window or by directly manipulating the PySimpleGUI settings object + '-editor format string-' a string containing 3 "tokens" that describes the command that is executed + + :param file_to_edit: the full path to the file to edit + :type file_to_edit: (str) + :param line_number: optional line number to place the cursor + :type line_number: (int) + :return: Popen object + :rtype: (subprocess.Popen) | None + """ + if file_to_edit is not None and len(file_to_edit) != 0 and file_to_edit[0] not in ('\"', "\'") and ' ' in file_to_edit: + file_to_edit = '"' + file_to_edit + '"' + pysimplegui_user_settings.load() # Refresh the settings just in case they've changed via another program + editor_program = pysimplegui_user_settings.get('-editor program-', None) + if editor_program is not None: + format_string = pysimplegui_user_settings.get('-editor format string-', None) + # if no format string, then just launch the editor with the filename + if not format_string or line_number is None: + sp = execute_command_subprocess(editor_program, file_to_edit) + else: + command = _create_full_editor_command(file_to_edit, line_number, format_string) + # print('final command line = ', command) + sp = execute_command_subprocess(editor_program, command) + else: + print('No editor has been configured in the global settings') + sp = None + return sp + + +def execute_get_results(subprocess_id, timeout=None): + """ + Get the text results of a previously executed execute call + Returns a tuple of the strings (stdout, stderr) + :param subprocess_id: a Popen subprocess ID returned from a previous execute call + :type subprocess_id: (subprocess.Popen) + :param timeout: Time in fractions of a second to wait. Returns '','' if timeout. Default of None means wait forever + :type timeout: (None | float) + :returns: Tuple with 2 strings (stdout, stderr) + :rtype: (str | None , str | None) + """ + + out_decoded = err_decoded = None + if subprocess_id is not None: + try: + out, err = subprocess_id.communicate(timeout=timeout) + if out: + out_decoded = out.decode("utf-8") + if err: + err_decoded = err.decode("utf-8") + except ValueError: + # will get an error if stdout and stderr are combined and attempt to read stderr + # so ignore the error that would be generated + pass + except subprocess.TimeoutExpired: + # a Timeout error is not actually an error that needs to be reported + pass + except Exception as e: + popup_error('Error in execute_get_results', e) + return out_decoded, err_decoded + + +def execute_subprocess_still_running(subprocess_id): + """ + Returns True is the subprocess ID provided is for a process that is still running + + :param subprocess_id: ID previously returned from Exec API calls that indicate this value is returned + :type subprocess_id: (subprocess.Popen) + :return: True if the subproces is running + :rtype: bool + """ + if subprocess_id.poll() == 0: + return False + return True + + +def execute_file_explorer(folder_to_open=''): + """ + The global settings has a setting called - "-explorer program-" + It defines the program to run when this function is called. + The optional folder paramter specified which path should be opened. + + :param folder_to_open: The path to open in the explorer program + :type folder_to_open: str + :return: Popen object + :rtype: (subprocess.Popen) | None + """ + pysimplegui_user_settings.load() # Refresh the settings just in case they've changed via another program + explorer_program = pysimplegui_user_settings.get('-explorer program-', None) + if explorer_program is not None: + sp = execute_command_subprocess(explorer_program, folder_to_open) + else: + print('No file explorer has been configured in the global settings') + sp = None + return sp + + +def execute_find_callers_filename(): + """ + Returns the first filename found in a traceback that is not the name of this file (__file__) + Used internally with the debugger for example. + + :return: filename of the caller, assumed to be the first non PySimpleGUI file + :rtype: str + """ + try: # lots can go wrong so wrapping the entire thing + trace_details = traceback.format_stack() + file_info_pysimplegui, error_message = None, '' + for line in reversed(trace_details): + if __file__ not in line: + file_info_pysimplegui = line.split(",")[0] + error_message = line + break + if file_info_pysimplegui is None: + return '' + error_parts = None + if error_message != '': + error_parts = error_message.split(', ') + if len(error_parts) < 4: + error_message = error_parts[0] + '\n' + error_parts[1] + '\n' + ''.join(error_parts[2:]) + if error_parts is None: + print('*** Error popup attempted but unable to parse error details ***') + print(trace_details) + return '' + filename = error_parts[0][error_parts[0].index('File ') + 5:] + return filename + except: + return '' + + +def _create_full_editor_command(file_to_edit, line_number, edit_format_string): + """ + The global settings has a setting called - "-editor format string-" + It uses 3 "tokens" to describe how to invoke the editor in a way that starts at a specific line # + + + :param file_to_edit: + :type file_to_edit: str + :param edit_format_string: + :type edit_format_string: str + :return: + :rtype: + """ + + command = edit_format_string + command = command.replace('', '') + command = command.replace('', file_to_edit) + command = command.replace('', str(line_number) if line_number is not None else '') + return command + + +def execute_get_editor(): + """ + Get the path to the editor based on user settings or on PySimpleGUI's global settings + + :return: Path to the editor + :rtype: str + """ + try: # in case running with old version of PySimpleGUI that doesn't have a global PSG settings path + global_editor = pysimplegui_user_settings.get('-editor program-') + except: + global_editor = '' + + return user_settings_get_entry('-editor program-', global_editor) + + +def execute_restart(your_filename, parms=''): + """ + Restarts your program. The currently running process is exited and a new one is started. + NOTE - this function calls exit and thus will not return + + :param your_filename: Set this parm to __file__ + :type your_filename: str + :param parms: Parameters to pass to your program when it's restarted + :type parms: str + + """ + + try: + execute_py_file(your_filename, parms, pipe_output=False, wait=False) # restart this program + exit() # Exit instead of returning + except Exception as e: + print(f'ERROR restarting your program: {your_filename}') + exit() + + + +# '##::: ##:'########:'########:'##:::::'##::'#######::'########::'##:::'##:::: +# ###:: ##: ##.....::... ##..:: ##:'##: ##:'##.... ##: ##.... ##: ##::'##::::: +# ####: ##: ##:::::::::: ##:::: ##: ##: ##: ##:::: ##: ##:::: ##: ##:'##:::::: +# ## ## ##: ######:::::: ##:::: ##: ##: ##: ##:::: ##: ########:: #####::::::: +# ##. ####: ##...::::::: ##:::: ##: ##: ##: ##:::: ##: ##.. ##::: ##. ##:::::: +# ##:. ###: ##:::::::::: ##:::: ##: ##: ##: ##:::: ##: ##::. ##:: ##:. ##::::: +# ##::. ##: ########:::: ##::::. ###. ###::. #######:: ##:::. ##: ##::. ##:::: +# ..::::..::........:::::..::::::...::...::::.......:::..:::::..::..::::..::::: +# :::'###::::'########::'####: +# ::'## ##::: ##.... ##:. ##:: +# :'##:. ##:: ##:::: ##:: ##:: +# '##:::. ##: ########::: ##:: +# #########: ##.....:::: ##:: +# ##.... ##: ##::::::::: ##:: +# ##:::: ##: ##::::::::'####: +# ..:::::..::..:::::::::....:: + +__UA_FOR_URLLIB = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' + +def net_download_file(url, encoding='utf-8', raise_exception_on_error=False): + """ + Download a file located at a URL on the network + :param url: The address of the file + :type url: str + :param encoding: Encoding data is in. If binary set to '' + :type encoding: str + :param raise_exception_on_error: If True, pass back error by raising an exception + :type raise_exception_on_error: bool + :return: The file contents. Returns None if an error happened + :rtype: None | str | bytes + """ + + try: + req = urllib.request.Request(url, headers={'User-Agent': var_QPi4B1}) + res = urllib.request.urlopen(req) + data = res.read() + if encoding: + data = data.decode(encoding) + except Exception as e: + if raise_exception_on_error: + raise e + return None # error + + return data + + +def net_download_file_binary(url): + """ + Download a binary file located at a URL on the network. Can also use the plain download_file to accomplish + :param url: The address of the file + :type url: str + :return: The file contents. Returns None if an error happened + :rtype: None | bytes + """ + data = net_download_file(url, encoding='') + + return data + + + +''' +'##::::'##::::'###:::::'######::::::'######::'########::'########::'######::'####:'########:'####::'######:: + ###::'###:::'## ##:::'##... ##::::'##... ##: ##.... ##: ##.....::'##... ##:. ##:: ##.....::. ##::'##... ##: + ####'####::'##:. ##:: ##:::..::::: ##:::..:: ##:::: ##: ##::::::: ##:::..::: ##:: ##:::::::: ##:: ##:::..:: + ## ### ##:'##:::. ##: ##::::::::::. ######:: ########:: ######::: ##:::::::: ##:: ######:::: ##:: ##::::::: + ##. #: ##: #########: ##:::::::::::..... ##: ##.....::: ##...:::: ##:::::::: ##:: ##...::::: ##:: ##::::::: + ##:.:: ##: ##.... ##: ##::: ##::::'##::: ##: ##:::::::: ##::::::: ##::: ##:: ##:: ##:::::::: ##:: ##::: ##: + ##:::: ##: ##:::: ##:. ######:::::. ######:: ##:::::::: ########:. ######::'####: ##:::::::'####:. ######:: +..:::::..::..:::::..:::......:::::::......:::..:::::::::........:::......:::....::..::::::::....:::......::: +''' + + +# Dictionary of Mac Patches. Used to find the key in the global settings and the default value +MAC_PATCH_DICT = {'Enable No Titlebar Patch': ('-mac feature enable no titlebar patch-', False), + 'Disable Modal Windows': ('-mac feature disable modal windows-', True), + 'Disable Grab Anywhere with Titlebar': ('-mac feature disable grab anywhere with titlebar-', True), + 'Set Alpha Channel to 0.99 for MacOS >= 12.3': ('-mac feature disable Alpha 0.99', True)} + + +def _read_mac_global_settings(): + """ + Reads the settings from the PySimpleGUI Global Settings and sets variables that + are used at runtime to control how certain features behave + """ + + global ENABLE_MAC_MODAL_DISABLE_PATCH + global ENABLE_MAC_NOTITLEBAR_PATCH + global ENABLE_MAC_DISABLE_GRAB_ANYWHERE_WITH_TITLEBAR + global ENABLE_MAC_ALPHA_99_PATCH + + ENABLE_MAC_MODAL_DISABLE_PATCH = pysimplegui_user_settings.get(MAC_PATCH_DICT['Disable Modal Windows'][0], + MAC_PATCH_DICT['Disable Modal Windows'][1]) + ENABLE_MAC_NOTITLEBAR_PATCH = pysimplegui_user_settings.get(MAC_PATCH_DICT['Enable No Titlebar Patch'][0], + MAC_PATCH_DICT['Enable No Titlebar Patch'][1]) + ENABLE_MAC_DISABLE_GRAB_ANYWHERE_WITH_TITLEBAR = pysimplegui_user_settings.get(MAC_PATCH_DICT['Disable Grab Anywhere with Titlebar'][0], + MAC_PATCH_DICT['Disable Grab Anywhere with Titlebar'][1]) + ENABLE_MAC_ALPHA_99_PATCH = pysimplegui_user_settings.get(MAC_PATCH_DICT['Set Alpha Channel to 0.99 for MacOS >= 12.3'][0], + MAC_PATCH_DICT['Set Alpha Channel to 0.99 for MacOS >= 12.3'][1]) + + +def _mac_should_apply_notitlebar_patch(): + """ + Uses a combination of the tkinter version number and the setting from the global settings + to determine if the notitlebar patch should be applied + + :return: True if should apply the no titlebar patch on the Mac + :rtype: (bool) + """ + + if not running_mac(): + return False + + try: + tver = [int(n) for n in framework_version.split('.')] + if tver[0] == 8 and tver[1] == 6 and tver[2] < 10 and ENABLE_MAC_NOTITLEBAR_PATCH: + return True + except Exception as e: + warnings.warn('Exception while trying to parse tkinter version {} Error = {}'.format(framework_version, e), UserWarning) + + return False + + +def _mac_should_set_alpha_to_99(): + if not running_mac(): + return False + + if not ENABLE_MAC_ALPHA_99_PATCH: + return False + + # At this point, we're running a Mac and the alpha patch is enabled + # Final check is to see if Mac OS version is 12.3 or later + try: + platform_mac_ver = platform.mac_ver()[0] + mac_ver = platform_mac_ver.split('.') if '.' in platform_mac_ver else (platform_mac_ver, 0) + if (int(mac_ver[0]) >= 12 and int(mac_ver[1]) >= 3) or int(mac_ver[0]) >= 13: + # print("Mac OS Version is {} and patch enabled so applying the patch".format(platform_mac_ver)) + return True + except Exception as e: + warnings.warn('_mac_should_seet_alpha_to_99 Exception while trying check mac_ver. Error = {}'.format(e), UserWarning) + return False + + return False + + +def main_mac_feature_control(): + """ + Window to set settings that will be used across all PySimpleGUI programs that choose to use them. + Use set_options to set the path to the folder for all PySimpleGUI settings. + + :return: True if settings were changed + :rtype: (bool) + """ + + current_theme = theme() + theme('dark red') + + layout = [[T('Mac PySimpleGUI Feature Control', font='DEFAIULT 18')], + [T('Use this window to enable / disable features.')], + [T('Unfortunately, on some releases of tkinter on the Mac, there are problems that')], + [T('create the need to enable and disable sets of features. This window facilitates the control.')], + [T('Feature Control / Settings', font='_ 16 bold')], + [T('You are running tkinter version:', font='_ 12 bold'), T(framework_version, font='_ 12 bold')]] + + for key, value in MAC_PATCH_DICT.items(): + layout += [[Checkbox(key, k=value[0], default=pysimplegui_user_settings.get(value[0], value[1]))]] + layout += [[T('Currently the no titlebar patch ' + ('WILL' if _mac_should_apply_notitlebar_patch() else 'WILL NOT') + ' be applied')], + [T('The no titlebar patch will ONLY be applied on tkinter versions < 8.6.10')]] + layout += [[Button('Ok'), Button('Cancel')]] + + window = Window('Mac Feature Control', layout, keep_on_top=True, finalize=True) + while True: + event, values = window.read() + if event in ('Cancel', WIN_CLOSED): + break + if event == 'Ok': + for key, value in values.items(): + print('setting {} to {}'.format(key, value)) + pysimplegui_user_settings.set(key, value) + break + window.close() + theme(current_theme) + + +''' +'########::'########:'########::'##::::'##::'######::::'######:::'########:'########:: + ##.... ##: ##.....:: ##.... ##: ##:::: ##:'##... ##::'##... ##:: ##.....:: ##.... ##: + ##:::: ##: ##::::::: ##:::: ##: ##:::: ##: ##:::..::: ##:::..::: ##::::::: ##:::: ##: + ##:::: ##: ######::: ########:: ##:::: ##: ##::'####: ##::'####: ######::: ########:: + ##:::: ##: ##...:::: ##.... ##: ##:::: ##: ##::: ##:: ##::: ##:: ##...:::: ##.. ##::: + ##:::: ##: ##::::::: ##:::: ##: ##:::: ##: ##::: ##:: ##::: ##:: ##::::::: ##::. ##:: + ########:: ########: ########::. #######::. ######:::. ######::: ########: ##:::. ##: +........:::........::........::::.......::::......:::::......::::........::..:::::..:: +''' + + + +red_x = b"R0lGODlhEAAQAPeQAIsAAI0AAI4AAI8AAJIAAJUAAJQCApkAAJoAAJ4AAJkJCaAAAKYAAKcAAKcCAKcDA6cGAKgAAKsAAKsCAKwAAK0AAK8AAK4CAK8DAqUJAKULAKwLALAAALEAALIAALMAALMDALQAALUAALYAALcEALoAALsAALsCALwAAL8AALkJAL4NAL8NAKoTAKwbAbEQALMVAL0QAL0RAKsREaodHbkQELMsALg2ALk3ALs+ALE2FbgpKbA1Nbc1Nb44N8AAAMIWAMsvAMUgDMcxAKVABb9NBbVJErFYEq1iMrtoMr5kP8BKAMFLAMxKANBBANFCANJFANFEB9JKAMFcANFZANZcANpfAMJUEMZVEc5hAM5pAMluBdRsANR8AM9YOrdERMpIQs1UVMR5WNt8X8VgYMdlZcxtYtx4YNF/btp9eraNf9qXXNCCZsyLeNSLd8SSecySf82kd9qqc9uBgdyBgd+EhN6JgtSIiNuJieGHhOGLg+GKhOKamty1ste4sNO+ueenp+inp+HHrebGrefKuOPTzejWzera1O7b1vLb2/bl4vTu7fbw7ffx7vnz8f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAJAALAAAAAAQABAAAAjUACEJHEiwYEEABniQKfNFgQCDkATQwAMokEU+PQgUFDAjjR09e/LUmUNnh8aBCcCgUeRmzBkzie6EeQBAoAAMXuA8ciRGCaJHfXzUMCAQgYooWN48anTokR8dQk4sELggBhQrU9Q8evSHiJQgLCIIfMDCSZUjhbYuQkLFCRAMAiOQGGLE0CNBcZYmaRIDLqQFGF60eTRoSxc5jwjhACFWIAgMLtgUocJFy5orL0IQRHAiQgsbRZYswbEhBIiCCH6EiJAhAwQMKU5DjHCi9gnZEHMTDAgAOw==" + + +class _Debugger: + debugger = None + DEBUGGER_MAIN_WINDOW_THEME = 'dark grey 13' + DEBUGGER_POPOUT_THEME = 'dark grey 13' + WIDTH_VARIABLES = 23 + WIDTH_RESULTS = 46 + + WIDTH_WATCHER_VARIABLES = 20 + WIDTH_WATCHER_RESULTS = 60 + + WIDTH_LOCALS = 80 + NUM_AUTO_WATCH = 9 + + MAX_LINES_PER_RESULT_FLOATING = 4 + MAX_LINES_PER_RESULT_MAIN = 3 + + DEBUGGER_POPOUT_WINDOW_FONT = 'Sans 8' + DEBUGGER_VARIABLE_DETAILS_FONT = 'Courier 10' + + ''' + # # ###### + ## ## ## # # # # # ###### ##### # # #### #### ###### ##### + # # # # # # # ## # # # # # # # # # # # # # # # + # # # # # # # # # # # ##### ##### # # # # ##### # # + # # ###### # # # # # # # # # # # # ### # ### # ##### + # # # # # # ## # # # # # # # # # # # # # # + # # # # # # # ###### ###### ##### #### #### #### ###### # # + ''' + + def __init__(self): + self.watcher_window = None # type: Window + self.popout_window = None # type: Window + self.local_choices = {} + self.myrc = '' + self.custom_watch = '' + self.locals = {} + self.globals = {} + self.popout_choices = {} + + # Includes the DUAL PANE (now 2 tabs)! Don't forget REPL is there too! + def _build_main_debugger_window(self, location=(None, None)): + old_theme = theme() + theme(_Debugger.DEBUGGER_MAIN_WINDOW_THEME) + + def InVar(key1): + row1 = [T(' '), + I(key=key1, size=(_Debugger.WIDTH_VARIABLES, 1)), + T('', key=key1 + 'CHANGED_', size=(_Debugger.WIDTH_RESULTS, 1)), B('Detail', key=key1 + 'DETAIL_'), + B('Obj', key=key1 + 'OBJ_'), ] + return row1 + + variables_frame = [InVar('_VAR0_'), + InVar('_VAR1_'), + InVar('_VAR2_'), ] + + interactive_frame = [[T('>>> '), In(size=(83, 1), key='-REPL-', + tooltip='Type in any "expression" or "statement"\n and it will be disaplayed below.\nPress RETURN KEY instead of "Go"\nbutton for faster use'), + B('Go', bind_return_key=True, visible=True)], + [Multiline(size=(93, 26), key='-OUTPUT-', autoscroll=True, do_not_clear=True, expand_x=True, expand_y=True)], ] + + autowatch_frame = [[Button('Choose Variables To Auto Watch', key='-LOCALS-'), + Button('Clear All Auto Watches'), + Button('Show All Variables', key='-SHOW_ALL-'), + Button('Locals', key='-ALL_LOCALS-'), + Button('Globals', key='-GLOBALS-'), + Button('Popout', key='-POPOUT-')]] + + var_layout = [] + for i in range(_Debugger.NUM_AUTO_WATCH): + var_layout.append([T('', size=(_Debugger.WIDTH_WATCHER_VARIABLES, 1), key='_WATCH%s_' % i), + T('', size=(_Debugger.WIDTH_WATCHER_RESULTS, _Debugger.MAX_LINES_PER_RESULT_MAIN), key='_WATCH%s_RESULT_' % i, )]) + + col1 = [ + # [Frame('Auto Watches', autowatch_frame+variable_values, title_color='blue')] + [Frame('Auto Watches', autowatch_frame + var_layout, title_color=theme_button_color()[0])] + ] + + col2 = [ + [Frame('Variables or Expressions to Watch', variables_frame, title_color=theme_button_color()[0]), ], + [Frame('REPL-Light - Press Enter To Execute Commands', interactive_frame, title_color=theme_button_color()[0], expand_x=True, expand_y=True), ] + ] + + # Tab based layout + layout = [[Text('Debugging: ' + self._find_users_code())], + [TabGroup([[Tab('Variables', col1), Tab('REPL & Watches', col2)]], expand_x=True, expand_y=True)]] + + # ------------------------------- Create main window ------------------------------- + window = Window("PySimpleGUI Debugger", layout, icon=PSG_DEBUGGER_LOGO, margins=(0, 0), location=location, keep_on_top=True, right_click_menu=[[''], ['Exit', ]], resizable=True) + + Window._read_call_from_debugger = True + window.finalize() + Window._read_call_from_debugger = False + + window.Element('_VAR1_').SetFocus() + self.watcher_window = window + theme(old_theme) + return window + + ''' + # # ####### # + ## ## ## # # # # # # ###### # # ##### # #### #### ##### + # # # # # # # ## # # # # # ## # # # # # # # # # + # # # # # # # # # ##### # # ##### # # # # # # # # # # # + # # ###### # # # # # # # # # # # # # # # # # ##### + # # # # # # ## # # # # # ## # # # # # # # + # # # # # # # ####### ## ###### # # # ####### #### #### # + ''' + + def _refresh_main_debugger_window(self, mylocals, myglobals): + if not self.watcher_window: # if there is no window setup, nothing to do + return False + event, values = self.watcher_window.read(timeout=1) + if event in (None, 'Exit', '_EXIT_', '-EXIT-'): # EXIT BUTTON / X BUTTON + try: + self.watcher_window.close() + except: + pass + self.watcher_window = None + return False + # ------------------------------- Process events from REPL Tab ------------------------------- + cmd = values['-REPL-'] # get the REPL entered + # BUTTON - GO (NOTE - This button is invisible!!) + if event == 'Go': # GO BUTTON + self.watcher_window.Element('-REPL-').Update('') + self.watcher_window.Element('-OUTPUT-').Update(">>> {}\n".format(cmd), append=True, autoscroll=True) + + try: + result = eval('{}'.format(cmd), myglobals, mylocals) + except Exception as e: + if sys.version_info[0] < 3: + result = 'Not available in Python 2' + else: + try: + result = exec('{}'.format(cmd), myglobals, mylocals) + except Exception as e: + result = 'Exception {}\n'.format(e) + + self.watcher_window.Element('-OUTPUT-').Update('{}\n'.format(result), append=True, autoscroll=True) + # BUTTON - DETAIL + elif event.endswith('_DETAIL_'): # DETAIL BUTTON + var = values['_VAR{}_'.format(event[4])] + try: + result = str(eval(str(var), myglobals, mylocals)) + except: + result = '' + old_theme = theme() + theme(_Debugger.DEBUGGER_MAIN_WINDOW_THEME) + popup_scrolled(str(values['_VAR{}_'.format(event[4])]) + '\n' + result, title=var, non_blocking=True, font=_Debugger.DEBUGGER_VARIABLE_DETAILS_FONT) + theme(old_theme) + # BUTTON - OBJ + elif event.endswith('_OBJ_'): # OBJECT BUTTON + var = values['_VAR{}_'.format(event[4])] + try: + result = ObjToStringSingleObj(mylocals[var]) + except Exception as e: + try: + result = eval('{}'.format(var), myglobals, mylocals) + result = ObjToStringSingleObj(result) + except Exception as e: + result = '{}\nError showing object {}'.format(e, var) + old_theme = theme() + theme(_Debugger.DEBUGGER_MAIN_WINDOW_THEME) + popup_scrolled(str(var) + '\n' + str(result), title=var, non_blocking=True, font=_Debugger.DEBUGGER_VARIABLE_DETAILS_FONT) + theme(old_theme) + # ------------------------------- Process Watch Tab ------------------------------- + # BUTTON - Choose Locals to see + elif event == '-LOCALS-': # Show all locals BUTTON + self._choose_auto_watches(mylocals) + # BUTTON - Locals (quick popup) + elif event == '-ALL_LOCALS-': + self._display_all_vars('All Locals', mylocals) + # BUTTON - Globals (quick popup) + elif event == '-GLOBALS-': + self._display_all_vars('All Globals', myglobals) + # BUTTON - clear all + elif event == 'Clear All Auto Watches': + if popup_yes_no('Do you really want to clear all Auto-Watches?', 'Really Clear??') == 'Yes': + self.local_choices = {} + self.custom_watch = '' + # BUTTON - Popout + elif event == '-POPOUT-': + if not self.popout_window: + self._build_floating_window() + # BUTTON - Show All + elif event == '-SHOW_ALL-': + for key in self.locals: + self.local_choices[key] = not key.startswith('_') + + # -------------------- Process the manual "watch list" ------------------ + for i in range(3): + key = '_VAR{}_'.format(i) + out_key = '_VAR{}_CHANGED_'.format(i) + self.myrc = '' + if self.watcher_window.Element(key): + var = values[key] + try: + result = eval(str(var), myglobals, mylocals) + except: + result = '' + self.watcher_window.Element(out_key).Update(str(result)) + else: + self.watcher_window.Element(out_key).Update('') + + # -------------------- Process the automatic "watch list" ------------------ + slot = 0 + for key in self.local_choices: + if key == '-CUSTOM_WATCH-': + continue + if self.local_choices[key]: + self.watcher_window.Element('_WATCH{}_'.format(slot)).Update(key) + try: + self.watcher_window.Element('_WATCH{}_RESULT_'.format(slot), silent_on_error=True).Update(mylocals[key]) + except: + self.watcher_window.Element('_WATCH{}_RESULT_'.format(slot)).Update('') + slot += 1 + + if slot + int(not self.custom_watch in (None, '')) >= _Debugger.NUM_AUTO_WATCH: + break + # If a custom watch was set, display that value in the window + if self.custom_watch: + self.watcher_window.Element('_WATCH{}_'.format(slot)).Update(self.custom_watch) + try: + self.myrc = eval(self.custom_watch, myglobals, mylocals) + except: + self.myrc = '' + self.watcher_window.Element('_WATCH{}_RESULT_'.format(slot)).Update(self.myrc) + slot += 1 + # blank out all of the slots not used (blank) + for i in range(slot, _Debugger.NUM_AUTO_WATCH): + self.watcher_window.Element('_WATCH{}_'.format(i)).Update('') + self.watcher_window.Element('_WATCH{}_RESULT_'.format(i)).Update('') + + return True # return indicating the window stayed open + + def _find_users_code(self): + try: # lots can go wrong so wrapping the entire thing + trace_details = traceback.format_stack() + file_info_pysimplegui, error_message = None, '' + for line in reversed(trace_details): + if __file__ not in line: + file_info_pysimplegui = line.split(",")[0] + error_message = line + break + if file_info_pysimplegui is None: + return '' + error_parts = None + if error_message != '': + error_parts = error_message.split(', ') + if len(error_parts) < 4: + error_message = error_parts[0] + '\n' + error_parts[1] + '\n' + ''.join(error_parts[2:]) + if error_parts is None: + print('*** Error popup attempted but unable to parse error details ***') + print(trace_details) + return '' + filename = error_parts[0][error_parts[0].index('File ') + 5:] + return filename + except: + return + + ''' + ###### # # + # # #### ##### # # ##### # # # # # # ##### #### # # + # # # # # # # # # # # # # # ## # # # # # # # + ###### # # # # # # # # # # # # # # # # # # # # # + # # # ##### # # ##### # # # # # # # # # # # # ## # + # # # # # # # # # # # # ## # # # # ## ## + # #### # #### # ## ## # # # ##### #### # # + + ###### # # # + # # # # # # ##### #### # # # # # # ## ##### #### + # # # # ## ## # # # # # # # # # # # # # # + # # # # # ## # # # #### # # # # # # # # # # #### + # # # # # # ##### # ####### # # # # ###### ##### # + # # # # # # # # # # # # # # # # # # # # # + ###### #### # # # #### # # ###### ###### # # # # # #### + ''' + + # displays them into a single text box + + def _display_all_vars(self, title, dict): + num_cols = 3 + output_text = '' + num_lines = 2 + cur_col = 0 + out_text = title + '\n' + longest_line = max([len(key) for key in dict]) + line = [] + sorted_dict = {} + for key in sorted(dict.keys()): + sorted_dict[key] = dict[key] + for key in sorted_dict: + value = dict[key] + # wrapped_list = textwrap.wrap(str(value), 60) + # wrapped_text = '\n'.join(wrapped_list) + wrapped_text = str(value) + out_text += '{} - {}\n'.format(key, wrapped_text) + # if cur_col + 1 == num_cols: + # cur_col = 0 + # num_lines += len(wrapped_list) + # else: + # cur_col += 1 + old_theme = theme() + theme(_Debugger.DEBUGGER_MAIN_WINDOW_THEME) + popup_scrolled(out_text, title=title, non_blocking=True, font=_Debugger.DEBUGGER_VARIABLE_DETAILS_FONT, keep_on_top=True, icon=PSG_DEBUGGER_LOGO) + theme(old_theme) + + ''' + ##### # # + # # # # #### #### #### ###### # # # ## ##### #### # # + # # # # # # # # # # # # # # # # # # # + # ###### # # # # #### ##### # # # # # # # ###### + # # # # # # # # # # # # ###### # # # # + # # # # # # # # # # # # # # # # # # # # # + ##### # # #### #### #### ###### ## ## # # # #### # # + + # # # # + # # ## ##### # ## ##### # ###### #### # # # # # # + # # # # # # # # # # # # # # # # # # ## # + # # # # # # # # # ##### # ##### #### # # # # # # # + # # ###### ##### # ###### # # # # # # # # # # # # + # # # # # # # # # # # # # # # # # # # # ## + # # # # # # # # ##### ###### ###### #### ## ## # # # + ''' + + def _choose_auto_watches(self, my_locals): + old_theme = theme() + theme(_Debugger.DEBUGGER_MAIN_WINDOW_THEME) + num_cols = 3 + output_text = '' + num_lines = 2 + cur_col = 0 + layout = [[Text('Choose your "Auto Watch" variables', font='ANY 14', text_color='red')]] + longest_line = max([len(key) for key in my_locals]) + line = [] + sorted_dict = {} + for key in sorted(my_locals.keys()): + sorted_dict[key] = my_locals[key] + for key in sorted_dict: + line.append(CB(key, key=key, size=(longest_line, 1), + default=self.local_choices[key] if key in self.local_choices else False)) + if cur_col + 1 == num_cols: + cur_col = 0 + layout.append(line) + line = [] + else: + cur_col += 1 + if cur_col: + layout.append(line) + + layout += [ + [Text('Custom Watch (any expression)'), Input(default_text=self.custom_watch, size=(40, 1), key='-CUSTOM_WATCH-')]] + layout += [ + [Ok(), Cancel(), Button('Clear All'), Button('Select [almost] All', key='-AUTO_SELECT-')]] + + window = Window('Choose Watches', layout, icon=PSG_DEBUGGER_LOGO, finalize=True, keep_on_top=True) + + while True: # event loop + event, values = window.read() + if event in (None, 'Cancel', '-EXIT-'): + break + elif event == 'Ok': + self.local_choices = values + self.custom_watch = values['-CUSTOM_WATCH-'] + break + elif event == 'Clear All': + popup_quick_message('Cleared Auto Watches', auto_close=True, auto_close_duration=3, non_blocking=True, text_color='red', font='ANY 18') + for key in sorted_dict: + window.Element(key).Update(False) + window.Element('-CUSTOM_WATCH-').Update('') + elif event == 'Select All': + for key in sorted_dict: + window.Element(key).Update(False) + elif event == '-AUTO_SELECT-': + for key in sorted_dict: + window.Element(key).Update(not key.startswith('_')) + + # exited event loop + window.Close() + theme(old_theme) + + ''' + ###### ####### + # # # # # # ##### # # #### ## ##### # # # #### + # # # # # # # # # # # # # # # # ## # # # + ###### # # # # # # ##### # # # # # # # # # # # + # # # # # # # # # # # # ###### # # # # # # ### + # # # # # # # # # # # # # # # # # ## # # + ###### #### # ###### ##### # ###### #### # # # # # # #### + + # # + # # # # # # ##### #### # # + # # # # ## # # # # # # # + # # # # # # # # # # # # # + # # # # # # # # # # # # ## # + # # # # # ## # # # # ## ## + ## ## # # # ##### #### # # + ''' + + def _build_floating_window(self, location=(None, None)): + """ + + :param location: + :type location: + + """ + if self.popout_window: # if floating window already exists, close it first + self.popout_window.Close() + old_theme = theme() + theme(_Debugger.DEBUGGER_POPOUT_THEME) + num_cols = 2 + width_var = 15 + width_value = 30 + layout = [] + line = [] + col = 0 + # self.popout_choices = self.local_choices + self.popout_choices = {} + if self.popout_choices == {}: # if nothing chosen, then choose all non-_ variables + for key in sorted(self.locals.keys()): + self.popout_choices[key] = not key.startswith('_') + + width_var = max([len(key) for key in self.popout_choices]) + for key in self.popout_choices: + if self.popout_choices[key] is True: + value = str(self.locals.get(key)) + h = min(len(value) // width_value + 1, _Debugger.MAX_LINES_PER_RESULT_FLOATING) + line += [Text('{}'.format(key), size=(width_var, 1), font=_Debugger.DEBUGGER_POPOUT_WINDOW_FONT), + Text(' = ', font=_Debugger.DEBUGGER_POPOUT_WINDOW_FONT), + Text(value, key=key, size=(width_value, h), font=_Debugger.DEBUGGER_POPOUT_WINDOW_FONT)] + if col + 1 < num_cols: + line += [VerticalSeparator(), T(' ')] + col += 1 + if col >= num_cols: + layout.append(line) + line = [] + col = 0 + if col != 0: + layout.append(line) + layout = [[T(SYMBOL_X, enable_events=True, key='-EXIT-', font='_ 7')], [Column(layout)]] + + Window._read_call_from_debugger = True + self.popout_window = Window('Floating', layout, alpha_channel=0, no_titlebar=True, grab_anywhere=True, + element_padding=(0, 0), margins=(0, 0), keep_on_top=True, + right_click_menu=['&Right', ['Debugger::RightClick', 'Exit::RightClick']], location=location, finalize=True) + Window._read_call_from_debugger = False + + if location == (None, None): + screen_size = self.popout_window.GetScreenDimensions() + self.popout_window.Move(screen_size[0] - self.popout_window.Size[0], 0) + self.popout_window.SetAlpha(1) + theme(old_theme) + return True + + ''' + ###### + # # ###### ###### ##### ###### #### # # + # # # # # # # # # # + ###### ##### ##### # # ##### #### ###### + # # # # ##### # # # # + # # # # # # # # # # # + # # ###### # # # ###### #### # # + + ####### + # # #### ## ##### # # # #### + # # # # # # # # ## # # # + ##### # # # # # # # # # # # + # # # # ###### # # # # # # ### + # # # # # # # # # ## # # + # ###### #### # # # # # # #### + + # # + # # # # # # ##### #### # # + # # # # ## # # # # # # # + # # # # # # # # # # # # # + # # # # # # # # # # # # ## # + # # # # # ## # # # # ## ## + ## ## # # # ##### #### # # + ''' + + def _refresh_floating_window(self): + if not self.popout_window: + return + for key in self.popout_choices: + if self.popout_choices[key] is True and key in self.locals: + if key is not None and self.popout_window is not None: + self.popout_window.Element(key, silent_on_error=True).Update(self.locals.get(key)) + event, values = self.popout_window.read(timeout=5) + if event in (None, '_EXIT_', 'Exit::RightClick', '-EXIT-'): + self.popout_window.Close() + self.popout_window = None + elif event == 'Debugger::RightClick': + show_debugger_window() + +''' +M""""""'YMM dP +M mmmm. `M 88 +M MMMMM M .d8888b. 88d888b. dP dP .d8888b. .d8888b. .d8888b. 88d888b. +M MMMMM M 88ooood8 88' `88 88 88 88' `88 88' `88 88ooood8 88' `88 +M MMMM' .M 88. ... 88. .88 88. .88 88. .88 88. .88 88. ... 88 +M .MM `88888P' 88Y8888' `88888P' `8888P88 `8888P88 `88888P' dP +MMMMMMMMMMM .88 .88 + d8888P d8888P +MM""""""""`M +MM mmmmmmmM +M' MMMM dP dP 88d888b. .d8888b. .d8888b. +MM MMMMMMMM 88 88 88' `88 88' `"" Y8ooooo. +MM MMMMMMMM 88. .88 88 88 88. ... 88 +MM MMMMMMMM `88888P' dP dP `88888P' `88888P' +MMMMMMMMMMMM +''' + + +def show_debugger_window(location=(None, None), *args): + """ + Shows the large main debugger window + :param location: Locations (x,y) on the screen to place upper left corner of the window + :type location: (int, int) + :return: None + :rtype: None + """ + if _Debugger.debugger is None: + _Debugger.debugger = _Debugger() + debugger = _Debugger.debugger + frame = inspect.currentframe() + prev_frame = inspect.currentframe().f_back + # frame, *others = inspect.stack()[1] + try: + debugger.locals = frame.f_back.f_locals + debugger.globals = frame.f_back.f_globals + finally: + del frame + + if not debugger.watcher_window: + debugger.watcher_window = debugger._build_main_debugger_window(location=location) + return True + + +def show_debugger_popout_window(location=(None, None), *args): + """ + Shows the smaller "popout" window. Default location is the upper right corner of your screen + + :param location: Locations (x,y) on the screen to place upper left corner of the window + :type location: (int, int) + :return: None + :rtype: None + """ + if _Debugger.debugger is None: + _Debugger.debugger = _Debugger() + debugger = _Debugger.debugger + frame = inspect.currentframe() + prev_frame = inspect.currentframe().f_back + # frame = inspect.getframeinfo(prev_frame) + # frame, *others = inspect.stack()[1] + try: + debugger.locals = frame.f_back.f_locals + debugger.globals = frame.f_back.f_globals + finally: + del frame + if debugger.popout_window: + debugger.popout_window.Close() + debugger.popout_window = None + debugger._build_floating_window(location=location) + + +def _refresh_debugger(): + """ + Refreshes the debugger windows. USERS should NOT be calling this function. Within PySimpleGUI it is called for the USER every time the Window.Read function is called. + + :return: return code False if user closed the main debugger window. + :rtype: (bool) + """ + if _Debugger.debugger is None: + _Debugger.debugger = _Debugger() + debugger = _Debugger.debugger + Window._read_call_from_debugger = True + rc = None + # frame = inspect.currentframe() + # frame = inspect.currentframe().f_back + + frame, *others = inspect.stack()[1] + try: + debugger.locals = frame.f_back.f_locals + debugger.globals = frame.f_back.f_globals + finally: + del frame + if debugger.popout_window: + rc = debugger._refresh_floating_window() + if debugger.watcher_window: + rc = debugger._refresh_main_debugger_window(debugger.locals, debugger.globals) + Window._read_call_from_debugger = False + return rc + + +def _debugger_window_is_open(): + """ + Determines if one of the debugger window is currently open + :return: returns True if the popout window or the main debug window is open + :rtype: (bool) + """ + + if _Debugger.debugger is None: + return False + debugger = _Debugger.debugger + if debugger.popout_window or debugger.watcher_window: + return True + return False + + + +def get_versions(): + """ + Returns a human-readable string of version numbers for: + + Python version + Platform (Win, Mac, Linux) + Platform version (tuple with information from the platform module) + PySimpleGUI Port (PySimpleGUI in this case) + tkinter version + PySimpleGUI version + The location of the PySimpleGUI.py file + + The format is a newline between each value and descriptive text for each line + + :return: + :rtype: str + """ + if running_mac(): + platform_name, platform_ver = 'Mac', platform.mac_ver() + elif running_windows(): + platform_name, platform_ver = 'Windows', platform.win32_ver() + elif running_linux(): + platform_name, platform_ver = 'Linux', platform.libc_ver() + else: + platform_name, platform_ver = 'Unknown platorm', 'Unknown platform version' + + versions = "Python Interpeter: {}\nPython version: {}.{}.{}\nPlatform: {}\nPlatform version: {}\nPort: {}\ntkinter version: {}\nPySimpleGUI version: {}\nPySimpleGUI filename: {}".format( + sys.executable, sys.version_info.major, + sys.version_info.minor, + sys.version_info.micro, + platform_name, platform_ver, + port, + tclversion_detailed, + ver, + __file__) + return versions + + +def scheck_hh(): + with open(__file__, "r", encoding="utf8") as file: + lines_in_file = file.readlines() + combined_lines = ''.join(lines_in_file[:-1]) + entire_file_bytes = bytearray(combined_lines, encoding='utf8') + cfileh = hashlib.sha256(entire_file_bytes) + return cfileh.hexdigest() + + +def read_last_line(): + with open(__file__, "r", encoding="utf8") as file: + last_line = file.readlines()[-1] + return last_line + + +# ==================================================# +# +# MM""""""""`M oo oo +# MM mmmmmmmM +# M` MMMM 88d8b.d8b. .d8888b. dP dP +# MM MMMMMMMM 88'`88'`88 88' `88 88 88 +# MM MMMMMMMM 88 88 88 88. .88 88 88 +# MM .M dP dP dP `88888P' 88 dP +# MMMMMMMMMMMM 88 +# dP +# M""MMM""MMM""M dP dP +# M MMM MMM M 88 88 +# M MMP MMP M .d8888b. 88d888b. 88 .d888b88 +# M MM' MM' .M 88' `88 88' `88 88 88' `88 +# M `' . '' .MM 88. .88 88 88 88. .88 +# M .d .dMMM `88888P' dP dP `88888P8 +# MMMMMMMMMMMMMM +# +# When things look bleak, show your user an emoji +# and a little hope +# ==================================================# + +EMOJI_BASE64_BLANK_STARE = b'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' +EMOJI_BASE64_CLAP = b'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' +EMOJI_BASE64_COOL = b'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' +EMOJI_BASE64_CRAZY = b'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' +EMOJI_BASE64_CRY = b'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' +EMOJI_BASE64_DEAD = b'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' +EMOJI_BASE64_DEPRESSED = b'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' +EMOJI_BASE64_DREAMING = b'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' +EMOJI_BASE64_SKEPTICAL = b'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' +EMOJI_BASE64_EYE_ROLL = b'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' +EMOJI_BASE64_FINGERS_CROSSED = b'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' +EMOJI_BASE64_FRUSTRATED = b'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' +EMOJI_BASE64_HAPPY_GASP = b'iVBORw0KGgoAAAANSUhEUgAAADgAAAA4CAMAAACfWMssAAAC+lBMVEUAAACSVwBHFgMWAgARAgA3CwEeAwBVHwAnBgAaEA9eKABIFQIuBgAqBQBQJAqGTwBvOABTHAAsBwAMAQCNVgBFHAw3DAAyCAAmBABoLwBdJgBnMAAvBgAiAwC2pqq1pqoVAwBWQUDKvr8wJScSAQDEtbViNghGFwZSIADEtrjEtrdGMCB5QwBrRkC1pqpLP0BuNgBuNgBtRkBtRkAAw/88PDxfX1//vwA3IB08Pj/TnwDMmAD/xgA+NjQ9OTgAyv9oZ2cAxv9hYWI6MzLRnAA5HRhFGgoAzf9lZWY3JiT/wwG7hQD//2U8EwvOmgA7NzY6GRNsMwAAZplGRkc/MS0+GhI7Fg/7vAEEwvlfXV3VwCvCjwOESwD/6ZpZWVk5LSw/KSJ1PABFEQAgwt86OTo9LilMJhVFIBLKkgQ/DQFeKQD/6aRgYWZiWVVNTk7/1kdAQkP6wwr3uACYYAB9RwAnw9c8JB46CgKxeQCnbQCMUABlMABRHAAYw+cNp9YyxM8UZo8nboNqbGxTU1TOwDNLLSXhvxw/IRfwsADZoQCfZwB7QQBxNwALw/QSw+0Htustw9MAZps7Znv/5XpsaWYxVGBPOTH0xhZBFQbqrQP/yQGxfgCpdACb6vwXkbQYiKpOQT1HPjv/zivpxx/svxP2vgivcQHopQDbnADXlgDRkgDFhwAUlr785ImEg4IqY3QuW2k2SE1UNCrosiZTSAdmVAXepQCZWAANrtoQn8u/wcHk5rIbgJ8AXpwcepiUlJUgdpEhZIh4eGr/32n8/GaUlGY0YWJZS0g7QUOqrDz/yxmJ6/9N0/a47egxv8Y6wsIwk6IxeIiIwXf/43FTZ3EjW2/09GWopmW2vlv/1liCpFhbUU7qxEL/1DbfxSZZMA1YQQSfewMizf9NvtSvsbJwu6+srq+mpqZawaUdg6S11pZdr4uAyYNWj4JcjH54n3p2q2/W22fX2mfj42bQ0GacwGOSo0cvOUHJwTaUjzPYoyrSmx2qhRtPMAL18YgiAAAANHRSTlMA/sQsEpw640sF9sysXv784daECfzcuI959uvQaVFNQ0A9LCUbDP31vSQc8O9QMhj48U9Mssd9EQAABxxJREFUSMeNlnV4UlEUwAVldnd3dyC8R0nXiEkMJAZsMDam4OZ0m7Odc2HH1Nnd3d3d3d3d7fd53gMFNozfxx+Py/29c+85591HkZA0bdmufv16QP367Vo1LfJfFAurQ2pRu0KFNuWrEAhVyrepUKF2i+pli1b+u1W5BKkCwfD1+hX33Gl0H5LIRUuk5WtXD/uzVrJs6bRv7gmmFVfmSigBSEBPXJZDLPEHr2i1tHXnTKZ9cymhoEucuaRiobwStZznXK4V10eMGNEDYzgOfglD8+cvkGQlVSxa2Atr/eDEiRnHk6MHjB49apROp+uCoQNGjRo9ekB0dPKgk6dOV21c0GtS9d6MGcfudvkrbOFMYskCIun0sRkzjutGjR6A3Tx57Nixg3DgIjk5OnrAgNGjdJg5pE6BxDR7um3btuE9bs6bl5eX1xtYEImxYAF2nZc3b968mz0+H/l49Wrx4ARVT5lgMrkpS1I3EdKMOVZrbm6Ej9xcqzXHmEbYtHARfeTSJYuNZYMKX3GdybSid1pcP5lMq9UqlUr+b+ALDMlk/WypiTQamlItKKV93C7Xvk39LEwyk8FgMJEgmEyunatgZsZNR2lyZ60mAWKNhftcpnW2vjDp8O7lsyYxyAEwV82ceYFKjUI08TQI2SewgcosmeCasLAfA2GuGShksXRDGAHedjaLJZxJ5XPVNgiJJtUIaNLSU1e43FYtzFouxOql88dkDGGxYUi4WylWyIwgppTxi+2L55lM69L7IozVMAlgLf8tIgNZeO3HcPkKTX8ajSct7Rcb15zrmuCMUyOMJzALn7aG6Qs4qYsX4QVllCVdypMbKvqf7IY5c13u1H5MMmMLiDiwVt9KfSOsnUqxGssrrXgrv2i8YTpaXgZbHPhr2upf4u5fI7OUYm4cAQpSquVvsVOae4IkV4n4I7JXF4q4XUnlyvpAdko1+i22Jbjdkf35IM4qtEdIF45wFYia3ILijaMj4/uCuMorsraAh8M8PAY32bpPfBD7B4ud045KcNGXfDZ7lb+OO4V4wFlKKibyaDwQ/cmhe0XI/hghNMp2f+fEkJcLWWzhQITvE+W1WvpFK52SGE+Nwes2c/PAIUwmBPdCZiI7B26etcZOpVIVmgiU5oRy+BsAjsMIPleBbUptVzNAY6otfTMzMy0wwiAjDGYUJmqtKN4A/pZLpNBztNwoTIx1COwI2SJwODLWTp4ca0HIOGIQubLyKLRcUJNL6EkyLlVBRtSCYYcEdo1jtkrl8SCe2QIGbsaAB52TjWJN7qfaYjpd2k8tFsMSY+ckrLVlqBAy4vF4YjwZmZiIYCuNstvyeWh2pQCxkpQuWZRuiaKKFWSB3dxzdq9ew8xmvV4/DJktUJBjFODBSjPjnXK0fN0AsS6BTqFYtQpsPVPUvTicrvDB4PTyODRiMabBTbGOk9cMPM0bd4ykTIMTAG4siyWrQPqF3jN5CtUL1w4Ph1xaMeiNR9woiZyazidHaQTMmF4cvzd06ByvKOYytXDmoKkkXPCfVtOyNibFaS2Y19WPeddDiCgWR3EZFpktFfWdVX6KdqBsdPJS420WJNDTi7Y+iu3LVdv7amy2iHxoVAOc5EGUWZbopGXlT1GoOEEBt/aEMzrOlt7/x20DCiutUqngW7XmVOzoy0SGcQK8vVtXCuKtxux8A23DeimPhuZDwALUyUFReX8uOUDUc+6v1PThoSjK44FokKPSUg2KFKJGhDQ/FglIqb7rLvDkchogN6zfgKLTS9UN+S6vGG8/TFb5vZUTZUYeeAB6Z/0daR8i1D6kGSfQ8sXDRL6YQ68JkmCVKIZhw21r6bIlQ3vFqqZkLU21CtRmzOR0nZyeZJBKpSnTs6vk1CJWCgMtNNU3YX+KJIuNgtkcTsI1x5Ryt8qVI1YrQ6pRNqxJkT9T1HFkPgWg05f1zzBPbi4gx8QoqkJj/gvSGWH048sLKJTIjahRYGsuiAWalyYSSSWK/c1r0ho/QJPPzl/k5DnTD+l74phVc+ZkVCXVbdAgrGjoTZY9KAQPiH5NW2zMGNrNB6eXSqUqZyRkZ1dpETJyme/PB3hN9skv6XpcEiUkJHQTmVXkZlkj6fRpyyqFqkXxRZIRZ6NxU3hw7dCJ4wePF4kOXNqbIOrWVXWLJ6HA5iuECBkWEQk/zf9wqgubtdmhnzi++7hxey6Fh188AKbZYaAA01LqhNhiGp2CEXnkWTIEHD+ue/fu415cDA/ffyChG8eSQgEkI4mF81Mp1StOXbrYUK7n+cF7MHPHq/Dw8HcTRSJ1UiJeYkJY4dws84pZNDQ7Y+L5weMHDwbxJYj7YZtz+kzFxaXVC4nVluJiopyGRhwa2s3rDXkD4mWRqJuqWRYF/7l2oU4iLsHFkfB3pBwHCoEt9cxbiPd+IojDHFLvWpN+P8g/Ae0w92jPe3LOAAAAAElFTkSuQmCC' +EMOJI_BASE64_GLASSES = b'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' +EMOJI_BASE64_GOLD_STAR = b'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' +EMOJI_BASE64_YIKES = b'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' +EMOJI_BASE64_GUESS = b'iVBORw0KGgoAAAANSUhEUgAAADgAAAA4CAMAAACfWMssAAAC+lBMVEUAAAASAQAsJSVJIRIZCglaJAEvCAAyCQAuBgA9DgArBwAtBwAhBgMgBAAQAQBMGglpMgBFFwhUHwNFFQJPGwBEFAJOLiRRKRheJwBTHwUWAgB3QQBCGg5nMgA9EQI8DQA1CAArBgBuaGZeNyJzOgBDFAhADwE1CQDAvLrk5OV4UUNzTkUlAwBwTkVrRj1sSTtCOCxpQC90T0VxTkhxTkhZSEh5WUxlQzZeNSVEDAA8PDw3IB0Aw//NmAD/vgBmZmbTngDQnAA+NjQ8OTg7Pj9naGj/xwE9CwFoamtiYWQ8FxA6NTU4Kyk8EQgAyv83JiRFEwE3IyE+JiBkMAFdKgE8HxjgowL/wwHKlQAAxv///2Y5MjG7hwEAZpk9NDE9MS1PGgBjXl05Ly6OWQGWXgDEhQNyPADAiwL/uACeagCcZAB8RgAAzP8pw9c+LimzfgCrdQBEw73/6aBXJALTlAASw+0NptT/55ktXGnorAXusACueQBtNgD/6ZF0cm9qZmRZTkzewCI4Hxv+wxJIQAf1uAHvpQDXogACvfUdxOE1xM8UlbxlxaAbZYuFc2y0w043R0v/10pGSUpERURUQT1NOzbKvjM9Kyb+ySHvuxG6gQC3dwClbwCATACY6v8Hw/cPnsodgZ8SZpEkd44pZ3mMw3b/4mwwVWGpw1k0S1FwWwWQbwPZmQH5uwClYgCLUACFTAAGtuwIsONMwbGTlJRxw5CEh4l8w4T/54Mnan58enpSU1TJxj3qyB2uhAHLjQAYjLDv6qwAYZxHiIb/4ndHZnWVxG5qbW1cWlr/2VfqxUpmSD72xzXVxi9jTAmedwLjmADTigAx0f+u5eELq9kAZp0mcYmUioZYZm1hZmjb3meFiGfAwGatrWaPj2b282SnmjlrRDZEODa7szK4nBnLkRJtTxGIYwdRSAf3vwZGLANw6P+Z8Pil6PYbs9E4sdHW6s8xt78uoK2026NcsY83Zn5JZnSzwm1kWFQ+V1FnfUxAQUF1ain6rgCbetAOAAAAOnRSTlMAKAr9Hdlpg1qvnU9GPhPv6dPIwr65/v3t4zT+/Pi/nJF4Gf3w46V0OjKog25XQ/foyZGLcTX++tRiBZ/EUwAAB3VJREFUSMetlnVcU1EUx4eUWIiC3d2dm2/b21sXY5sbKLK5jcE23CaggiIWiN2KCtjd3d3d3d3d+fl47nPxZv/hjw/7LO53v3POPefu0v6vCgW0btK4VcOWLVo2bNW4dY1/YgKKNypSOrCkzZoXT2pqvq18lUYBfzEqHhxeyxSfms7U8inKTjWWq/YH1C84cPndQ2Mn8/lapq/4idH3yxf+HVa1VvyRPRvGDvJBpgyYNHrf+hHdh3V7Nr7uL4MMLpdwsG+vg27sIQBz164eNrRHB1IxMfKYhUG/qEgV06G+yfMQhogR3bsB4KPpPYa+LFvhpzDLx89L7nVo0oL14OG7fuiw7iPW7xu9ZdKdO3h+6R/9wm7sfHHaF+nRrfuIuQu2DNiqTfw6+MRgpnYJhuHmor5gyO4n06adohKjjwIw+MTJvGUrzKoUvUJvTk2Pxth9fC2LfnwMHImsXbBl6yAg4pctN6v1CoFMJhZ3VObqcmWKqWywzChOBas8n/b09Ih9WwbwEwcvyTNVVOkFQABgj+MQdG5nqdRAEDJ1NIaxLdWolan5eufOPVrmyWU2hCBCFwcAKTqdTkQOZDAkOoGJjeEJgYW8YNCyeb2Sx6abvyMcwg2Q4oDiohiMKEKMLHEzJdYidzckJ0/OENgpiIebP7zn8LRcBoNhsAvy2RjbVN0Lhmv6Jm+IFdi5LgeCwqUNSZInDUkbiCxlZhzqGuHhSgROgZ5ZLkMLCXra7DlcjhecIYcNks+wg2VnpT4WpybpV3IQpJgh5gLHHS6Xy3sudHnC61UxqE9XccEyMk5ggfJU9nODFUpO7pV8RN0RQM7MJFiXNNxjSfQkHXvSIyFWiawiJGkrRgX7puuVXPe6mJVj3JacOTFy+NvIMaBYO0Jd2cYgKrhhicKOHL2gh+y5sudGDl0CoBQlybYEU3OclyrQIXB2UgyEuoNDqSt9DPzTiSgAdYo+bLaziGc0oKpjSRC0Y7o8ZgYYUgQvEOiqDu4I8cx+qfS+R1wgQcyfkwZLf1YkAmUmNj61Cs2tCM2eyShHd4t5vTggwgtyZEY2HlvK23KpBwdp9LkA+iLchWnndpwZ/nuwet5Ybe8UJRVcOH/jzBmrhiTFrDwzk+7NEUKlgsWMfCZTJfaAUNwhcvmQVcNnzpk/hiAjh+1wFYeao18tOHFXyCQST6BpMzfOH0OnZMg1MNB2CGA7oKqesgama/l5Ap3UJ0VqaSVSBshANkB+EcpAbudrNYpcqZSSpsuJTkgMUsgPiSBbzkoZyMImSDJDLGEY6F4UEGAiXRAyJGQ2aPICygkZUHIpk+8UxEkZUglBANDZIEUIVZGSOLHCgWMYjJVXEala2JCOqHRRUQD8qCipRNdRkeKEcYyFQfaNlW8Fy4E/MeAl7RyXKxYoHm3LwWCqgr1YieJ+gb2RpZhu8A0wKlJq6KxTAqWyLso6jsPxWC7AhcBDxM1SYX34Sx/mCcT2uDjI0C2dzq4UywR6ldGB5SzOWozjmDmIjDDwZmgTWrG2azLLqpdmYzlWtUKhgCOflFgMjEKvKrDA5oHX8azFOZiNPMiDa2auG9WCVvhwJq+rLJ+PR7OxxY/UZpVKDVKpzDajxZGAs4ECsRdnbUvIILmgskIea1QDWvvDm0TCCXpNb9jdbVmLcthYNAhjI0FwLuGLjhm/3wL8Qj8IWfsBLAwgj1VJrdFE47EPjkVjPwm5HleXDy5BQ6o6QchiZQJYvOk6EUs4oXY5B3y+KGsb7sMg24Q+xsqlgwJcv4n+XXks0aZRDWkl2q0RsVisMrVDKzrBchGGk2IjRcf2sayoHBgS5G6X4iH+/cFQtKZpYxqtzvn9LBaPN8E/LKTcintZ9xMSEmKnOpwWoy1D7a8oUtSvkGeOqvpPFAHH4q0JrQGD3GadCJ5fHK8MKlGsbp2I8FKlwsMjQupUipIaJJWKubrEDxSi/AzlAMN1o1B9azTfJARQOI4bGlwkIjy8KC2gcNXSYWH+pGqHhZUOrhAUWK5yrVAld7wQGe4/Xx5lXL9YzUwh78AE5UCxantqrDO0Tu0y/bt6tHn8+In++j547yUpAwcqJ/YXCYWZNcnZqkerW6Z/GXVFk9Wq2s7PTkhBn/E8Ym0eN25cJWc2M6PAYjXZVP4T+5dtRCPBQrSqKdboHI1GY3LymbGoMUD90INIJGLxuo4b19G0tHfGdliRgztsirpAIbAGrfpUbWLilAG3v1j5TEdZIcm9mzXyoujy1WsiEZjaC7I1qhu3B0xJTExkrnAVrEZ9WvX4o3Ph+iafsZzPdJYRIm5vl7NnR17u1KnTFbRXt1TpJxcmTUc3odFbl7tPj/qFCu+Wk1fEIfcSl1oARBxo1+xLiIRox6fgy2YndSA1dGIF977Wb5KG3pze7c2xwdnGiUJWvwuzRpLk7utAXhPxNldymD+t7kZ+e4dmAZ6OqNcM3caOZmtszvSCCQgc+Rahu84h8KqId0BZoIofPIW8Xr4qTbnmNsfI27QmX2A19ydDJS1nvQfuUiaAtxQV8d5MJK3rx/wbiVBTfAjuMFcAAAAASUVORK5CYII=' +EMOJI_BASE64_HAPPY_BIG_SMILE = b'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' +EMOJI_BASE64_HONEST = b'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' +EMOJI_BASE64_HAPPY_IDEA = b'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' +EMOJI_BASE64_ILL2 = b'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' +EMOJI_BASE64_ILL = b'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' +EMOJI_BASE64_JEDI = b'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' +EMOJI_BASE64_HAPPY_JOY = b'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' +EMOJI_BASE64_KEY = b'iVBORw0KGgoAAAANSUhEUgAAADgAAAA4CAMAAACfWMssAAAC91BMVEUAAAAMAQAvBwAfAwArBgBAEwMaDQsoBQBYIgFRHwAWCwpEFQMtBQAcBABnMgFDFgUOAgCHUQI5EQFAFAIpBQAnBQBcJgBbJgBNGgAsBQCCRgJTHwBkLAEzDAAsBQCJWCBzQxZKHAxiLARCEwBSHwFtSECmejWabzhMGwh5OwNwMwV0RiJlNxlyTEBvSUBtSEAfAABvSEBcREA+PzmRajmTZzE8KiImBwDJvLvLvrw8PDw3IB3/vwDTngA8PT4Aw//NmAA+NjT/xQA5JSI8OThnaGllZmbPmwDxsR09Ewo+DQJiW1k4Hhr/2CoAx/89MjCudgAAg7n90y06GRP0tAF5PwAAy/9gYWfiwB73uQFZJAAUw+w6MzI5Ly43KCbqoxpJJhnRnQDHkgBqZWM7NTQ8Lyw4Kyo9Kyc8Ix2ocQE6xcj/6qNvNQHKlgC0gQAhwt72tR7AjgC/ggCTXABFEgAaw+UyxM41SE45Q0fyvgv/yQKaZwCOWACKVQBlLQBhKQAJr+Iqw9UgeZb/43RpbW5eU1BaSkU0Mzf4wjVTOC74uiOMSwxcMAj9vADzsADVlAC9iACgaQCCSgBLFwD/6Jb/54YnaHxQMSZmVQZdSwXssQC4egClbQCX6v8Rm8UVk7oPe6kchKQzUFqcjVFWQDn/ySj0xBXGfhWmZQyWVQl5RwnhoQPLjQLFiACVYACZXAAFwfgDvPQGtusMp9YuY3D/3Fz40VxZV1rKoUtES0v4xkHsxxzjmxpeOBbpvhXPhROlWw1RRwfnqQDbnwAGf7IzdI4lcYhLbXtaanD/3mcvV2Pkx2GDfFxRUlP/2lL6zEvmuEbatkRHQUHJrkCfqD/zyi7dlBluPQhj3/697ehAyOIQoMxBwLsaiatnhnFBaGSmnVFQSEqxnUn/2UjmsjXeqCvXwiqEcynUnybOlxzSjBS2bQ74vgp2XwWlgAIDufGC3Oqj17np5rXr57TW6q5GuKtJfoO5llS0gSTThxdiNBFWJw/usQ6bpK/aAAAAOnRSTlMAC3tBUpUTWsjAI8tvM/rAKP6zomhK6+DSovLbzZl0/OHh2bGvdfz48/He0sqgmo+KVTnx7+/dXzgukodRWQAABwVJREFUSMfVlmVYU2EUx5UNZyB2d3e32513dz1Wso05XACucGNSCpKKgmKB2N3d3d3d3d3d8cHz3nFlF+uz/y/b2bPfPXnPc4r89yrJqNi2WvkSxYvXLF68RPlqbQMqlf03VJThX7N65JPHD75rDYbRBoN2zLKc5erqNWtVKvpXrGLVuMenhkwYcm8BwckXgTR639gqfsX+yDGqLj49xDV+wwLOaAorwKeOrcH6A1dbd3+Ca/zGhQMH7tzZy0c7dw4c+JxDcJbr/H/L+d16c+XK66sDBvfr169///698wVf+/UbPHhA3+vXP9z6HcnccnnGjMs9/iZlyPqAX7hina/OmDEDHJCPHzCgLyX4PhiCgAhW91AqO5QsDAY8ev/23bGH27YthByhDVrtGCQtyDBw4MKF27b1enj+/PlH/oUbUVUyfvwEYt+qPJ3O7U5LS0tPD0VKT09PS3O7dTrdkhxib05OVOVCTSmdd9LlOhkZL9Vo5HK2k+8rJ1sul2ukslVTo3CsHKtQSadBA5/InN25v1N3k8na3SGLxHBMXY0Ollk2wXUkTwr/+Z24djnbzNWk4bg4pmpRWor1R4x3DQ/lezmBgM6ByWezTbZ4Tzgurkyra9lmwa4Jy2UqBPIECYm8AgrsRC7PxGbzrbI4iFXXnjalKfdcG1ZJyf/Nnbl2UIaggDs6c9C6iSo2m23VuMOhOu1oYzP2pGuBWwMOBYmDQpTKkAzKpyBhLdjKiXKI1RkaIcZWNvIFK6qPTNCSKfImhqDhGsSlHGYgO+QaJGm2jfOEY8ltaC/GtCEblo2zIfCgF0wU5INzSHudHZJUQUOw6a1pbYwdEpwDtUEprlaCh1k8yuN6JfI4xwFJqqTJWHhkKzq4IWmFjAcguFwToryWIPjZizk9QpQzE1F1jNKUwmDt2GAilgSRz4nruYijyKMHwbaiskpTC4dacVoSBQLJ41EcZXfnGpFHBI6lFYc1nSCg/93/JAqMw362A9Zhw2JFGKsIIkdmM3L/CJryi4OleMFudR5YdrOKlM1LIpaNc9gFXpIWKTm6XDO0wyZTY1ied3K6Nl4QvaiEX/FALaFN59vtJJg4tyBLAU+VMLc7V4AGwDEuV4wF5s9q3a2Si+5nliUrCEKnMbKNXC6wGbMmJgh4pBKPzpmV4I3U5EyPEuPUCqhwOtoycpdliZog1DIrn223CkAZa1YPmnljzo1Z69aunpWgMtrZZDeWYuLcUlQjNo+QLK7csLzamyQbBNtCPmzizEGv1qxZuy4jAVYJKTOauIINULrxcMmiMowKOgMHYoVUvJJrNOZhw4bZ4TP/F76AfDlSWdS73wIlueTpyBUcbazMKTCZ2RSLRBlmk9UhS8FwPPDnAvAnk4xenDw6Kjw1Xuq0qUx2sxk8U57MZrtJZXNK45dGicM9DQqGBiXpbl5Gx4HX2zMqHjaknO+w2VRGo9VqVNlsDodTI42PD40MF+NYHqtg3TQZLtlVvFiRBitgbeKT90Qm69JCx8lk0nzJxoWm6+LUU6bEAOcp5bPjIMntzYsVKVkFx/CoyVMiMEwc41GPXZmSWi41ZeVYtScGxzBsMoBYTGBpRFBJnom2LGHA1Fb2YNiLPfBgXCzGCgQR4vDEyTiWG8iiLSpI8pkf6kyp1IiXe15i+K8K9+xJxlfWYNCPjE7DJV+Kl0StCaiRN2VyFOkFBIAYCWzxiynlfj0CWkKSu5uVYCKUWaFqYArklRsTEREVAYrJjVVPj7tUowELMLpYHU9JJBbLrpH+UDFgSzNr14Irp8oopCpw6dTyY5YGqrAYTY5IJNEjoiWW3f601J0wcny/P582LYcA83TR/eESy8j8YherVKtMqXphSPVKlSlf8beHFePTKcnF6v5+9c/AsFcoy2AymRXqZWcGUTpx9mx20zIBlZiVGPTbyu/YAsnuLlDbuhsl29PqfI6NTA7MHCr8KdGmLVu2hKVMnzZtegka6b+53KVQPwimxLERlqUbg5NG703NFIpEIr1eL+oDEupPJO7ADQSRFBtA8/jtzvyw+U0rVEIeRz6H62vqpU0InHf3uP7wgYxDfYTCE2G5HJChvq/LgOyhk4KCJmXF1xkevSgOnX77duiBO6dQXDg+u2fP/UCKHGoEJkUyfcBqQZmThs7PCpo0afGIkcsRGLFDSHJA3twP5OE+Il6cAR2Cexv6gKWCsrKHZmfOz9J/XUU6HK3OFuqPKxTn5gUrLnzs2bPngT7Cs0unchBZvaQPKMrMgmCzs4aGuQ0ckDYuS6ifp1CcuRusCL7pBe+M2keCKwJ8PUJgQaL5mUPDpiVxQHuXbkJgMGCK25Dk7MN9hJvCcskLdkwJnwMHgaiKwrAcApUuAmqDQBDJHeojEuodyd5Yy3ln6wdz+Btv2aUJhAAAAABJRU5ErkJggg==' +EMOJI_BASE64_LAPTOP = b'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' +EMOJI_BASE64_HAPPY_LAUGH = b'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' +EMOJI_BASE64_HAPPY_HEARTS = b'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' +EMOJI_BASE64_MASK = b'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' +EMOJI_BASE64_NOTUNDERSTANDING = b'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' +EMOJI_BASE64_NO_HEAR = b'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' +EMOJI_BASE64_NO_SEE = b'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' +EMOJI_BASE64_NO_SPEAK = b'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' +EMOJI_BASE64_OK = b'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' +EMOJI_BASE64_FACEPALM = b'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' +EMOJI_BASE64_PARTY = b'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' +EMOJI_BASE64_PONDER = b'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' +EMOJI_BASE64_PRAY = b'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' +EMOJI_BASE64_QUESTION = b'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' +EMOJI_BASE64_RAINEDON = b'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' +EMOJI_BASE64_READING = b'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' +EMOJI_BASE64_NEWS = b'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' +EMOJI_BASE64_HAPPY_RELIEF = b'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' +EMOJI_BASE64_SALUTE = b'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' +EMOJI_BASE64_SANTA = b'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' +EMOJI_BASE64_SCREAM = b'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' +EMOJI_BASE64_SEARCH = b'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' +EMOJI_BASE64_SKEPTIC = b'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' +EMOJI_BASE64_SLEEPING = b'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' +EMOJI_BASE64_SAD = b'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' +EMOJI_BASE64_HAPPY_CONTENT = b'iVBORw0KGgoAAAANSUhEUgAAADgAAAA4CAMAAACfWMssAAAC9FBMVEUAAAAeExMtBgAkBAB3PgBBFQIfFRUNAQBaJwBAEQI9EAAjAwBWIABNGwBKGQAkAgAwCQAsBgAiAwAbAwBtNQBjKwBLIA89DQAxCAAcEBB9QwBpMQBSHgBnRUBIPD7Kvr+ETQB8QQBMIxNEEQBrRkDJvb/IvL/Kvb/Mv79NKhcwDQDMv79RMxV1RyckAAA8PDw3IB3/vgAAw/88PT7SnQA9OTjMmAA+NzT/xwFmZmY6MjE4KCbPmwA6FA3/wQE3JCIAZpr/xADQnAAAy/9naGk6Ly3//2Y7JCA3HhvTngDDkAA+EgcFuO//6qI/NDFWIgGASQA7NzU9Lis7KSbVlwEAx/88Hxk6EQnKlgDAiwCvewCjbgCcVwBgYGXMxzy7hgCKVABGFAALqtlkY2TSxzb/zio4LCq+hgO2gAKbZgGqcAAWkbYffptnwZj/6ZT/54JqZmRjYWFISEo6QENJJxk8GBFLQgfoqwX/wgHvsQDXoADdnAC2eABmMABNGABCEAAA0P8IsuYchKRfwaAAYJuIwXcqY3YtXmwxU14zUFldV1g2NDc8DQT2tgCiZwCWYQCQWwB6RQAKZZQUZo91wIhcjX7/32pgZWnh4mb/3FqxyFY1S1I3SE43R0w4RkrAyEhVLg5vRQWvdAL6uwG2igHZowDdogC7cwCuZgCdYQClXgBeKQCI7f+Z6v/M6dMPos9twZIjdI0qZoOAwX4naX1WZm6ZxWvo6GZ4eGb39GQvV2SlxmBSVVf/1kb0xUX/1Ts/ODhfOhpAIhj/zRdYSwZiOAU3CgWCaARsOAPKjAKWcgLytwDlpgDloQDPjADHfgCRVgAlzv8DvfMSmsNLsZ0cZos5eoj/4nVsbmq/v2b5+WU2SU9YTE1FQEBPOTPfrTH1vBluWgVmTQRSHACE1cbn7sO727JKorGk1a3r5ZRXr5ErgpAmZoZHZnXV1WaCgmaqqGWovVLEmU2RhkeXpkRjZDlaQTjOnC3rtSuZZyjqsyaBZgRXqGEDAAAAL3RSTlMACm9D/rgeE+nBqlrYzcWZg2VOOfDk15J3KezYwEs3G/777aRWNy4hC/uiFOvli3MR7oEAAAYfSURBVEjH1ZZnWFJRGICD1Nxpmrb3XkJwuZcLSSwRBAREHGSi5jZNLfdIK80s07aaI7e2995777333rv+dC7YYGV/ex+Fw8N9+b7zne/ec9r95+DMevXq2XPAgAE9e/bqZYb7N6mrVcce3R1VRVE1GRkZNVHNfRy79xjVyaytUFY9uoXf3rWodPd+5BeuqfKMbpad/uZZWUfeXhQbuyjUlfgnKQiSkn7Gtr0xrUP/M7viRHE7U4gGYDJPmTjjDHsW758+XPVkxoz1C9asmThx4jQM8L5mwYL162ds2v72w0dLQybO9PGKlSvOjjaO99TnzgbELpdWrFwJvL+a+folMhvxYNWqRyCjsrKqqvGACRqwYVVVWdn2TTMWPLtwwQmnF7AmLjY2lJh++nRjY1NTS8u4n7S0NDU1Np4+dZJJlMvTJHohbb6JRJeTTbJn+/j4jNHBBzA7SJWa5kv2t9Ttl747RaJdmYdkEMDFxYX0G/BJiqKw7JCknkL37dxBW7SPWiSKjTgkTlRfCgNcNEBgSJISCDRIlu1PpvAlOm3QUR4nKjWZQtJcnBcdnQeph/DStTH5EIlLcGdAYyR8CjkSry1aJMeKvtz3UovwBm8223sDFhNaGgyGa2GIQXBHect96WT/jlreEOs7orijs8WaiMFsb292MDYSx7DB8gkroDCQrCwogswKtNASe3cOFZU2+2gSLReyheBvKQSCrwYi2zsfRgkEBuoRSaYLbLTEQY6hotDWKcIzR+dWXs89V7AHFDcnOH9mLjsPBuUhoFMkZIqv9XAtse/uuNpMXqsYAwPWloOIidHlYlgck49NksBVHCFT6Oa9/xQHSnaWJnuC2mAkqt8g7JUE8gWAIY1ACMOqQzcfrC3uDj2ZxVUbWmCeWgUizctToC/uR9KDgKiHtugHxN7ac0SY/ySyKOZaxRnsiDAbfqYKQToWDP1KleVrPUR7HV2ZoDhStVdQIIb+1MTbZkIuDE1xWAIbnc6Zw5yznBcmJQGx8nxMpRiGIQAMi122Ra+ugKQEbDkydToHYHGCyTRx59JI6oUUnovOK6hITKwoyMsNZgeXwyRU3QAlZNCruncHgjSPQQkoCQBfP8+eOlqYkyMcPXWqMCYRLCmtteX07g58BoKAJmcQwqQQVp5tuatzhMKc4OgNlWKpFAWepsn5fXTuRwcVeNJ78rju4JcZNBqNx+NxCwu5PIWCx2AQMNxRRSaFQnc003kad57jipzxgRjA1OCuhvDrIw2eXcxnhdu208Ey3fW4PFsh5dIIhqChsCLLj8VX2untN0VMFn9ulsc+GYqG0UB6GtSZh6GobJ/HfSWZQjZx0BVBrg2+5MCDQdkeUxReXjIuqoEr8+IppngEBS0TAC/Q1sAWUHTcl8K/m6SMLMn0zMr28PAAT1Twmp3lmSkpOpZ0mE+hkEsM7JI42/B6CuvuAUEany6I8FfOLVapVMWRSv9AAYtfX5f0nUznz+3fzgBmNkpy2uGkOhYoOov8GxYdhPJPOlZPLzY1skFaloTXJR3jU/ThHz4giDjijDO6lduW3LsnSNPEUaOJnVZ3YJmJKegZ4zg425j3mRvlHxHo5+cnAP+B2HQl5rZ2Dm2fV9rb2w2zNLX2rK6u9rQxHdbRzsrBrN2/g+cVFhbu00qv7Zj2pk5O/SZj9HNyMsV3bVtpb4/H21n0+zQrPiQkJD4+PiR+R8LNW0Mt7PB4+78Fx3/9LA+PMpl1hcOhUidRARzqrISEm0eiAuWniroY9TqMvByKpKSqbmDa4o1UagA1IIQTn7BHkgwOV0g3oyWyf7efSHRNXTaLQ520cf7YddQ3S65uCeBQEw4mgzMactRoyB53XIHYsDcAePPGjp1+aaub22Zg7qiWp4AvarvjjCx+M0IE3wv2cqiL548FTF94zc3tFch4cjh2KkSijJwgndOZREDNLc6klxfXzQMx5y1xc3N7HRAiU9YCk3miv0EP1x3TXI8XY7V5MX9+a8QlV0Koe1SpWEhmtw4G11CpzvSEujaLL2KeZo5UTsLBBiIAybAyJFrKsUxrBXsXg/Vb99NbchUs5o6h4XOwXE+a/r78B7UscEFRBY9LAAAAAElFTkSuQmCC' +EMOJI_BASE64_SMIRKING = b'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' +EMOJI_BASE64_HAPPY_STARE = b'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' +EMOJI_BASE64_TEAR = b'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' +EMOJI_BASE64_THINK = b'iVBORw0KGgoAAAANSUhEUgAAADgAAAA4CAMAAACfWMssAAAC91BMVEUAAAAQAwBLGwVRKBYvBwAnBQAVAgASAgAyCABeKQFEEgAjBQARAgByPAA+DQA4CgA1CAAtBgAjBAANAQBOIAxeKABEEQFgKAE5CwAvCQBfOBFpMAB+SAhtNgAvCAASAgCNVgBxOQBLGAJcJwBAFQBHJhhBGAxBEAF9UCgAw/88PDz/vwA3IB3NmADSngBlZmY8Pj8Ayf89OThoamtnZ2j/xgD/wgA6GxY+NzXQmwA7PD0+NTL//2XKlQA6MzIAZpo8Egk8MS48JB87FxBHR0fVoACzfQD/6p84KyraowAAy/8Wkrg8DAJHEwA9LilTMif8vAH/ugDxswCcZACYYABlLwD/5Xw9KiU3IyCibQB5QgBWIQBpZmQ/Hxb2uQJQGwHipgCtdAAEuvAJrt8MpNNgYmdMTEw5OTr+yBLsrwGTWwBKGAADwvldWlowTVdcU1JbRkA9LSs3JiVGHA3BjQLbnADGkgCKUgCDTQAAzv8MZpT/5owaZoz/5HMtWWj/00I3MDFYTAZwPALVlgBsNwBBDQAawuUxw845wML86asagKAkaYOBxIFjYWFTU1P/2FI5S0zXwitCMCrnqQC6iwDIiQC+gQB+SACV6v8Mw/MZhaZgxKJuw5KfwWBURUVBQ0M5QUMvOD5JOTVIQAdPKAaeeALnnQDQkQAAwv4FxfwCvfVIw7cffZokepEgb4oqXm+BgWe2wk9YTUzKvzb0wDD+zSjapyPlwx6kZgRsUgTxpgC3hABf3Pz//+4Hs+ckw9sQrNgQnMcbh6gfdY81bnkqZHaGm3FTZnCVxW/I02vV1WYsVWOsyVstQkvjszmWajivfzNWOjDtxhmFaARCFQSScgP2rADengC8dgC16+7/+c5VwKkDX5caeJbW2ItFZnZpbW6krWru7mbi4mZubmb/4GRRaFTFx0PMlhv9sQDakAAUw+uT6OVFweHK6NTW6Mq94rfj0KUAW57RsHRwrHPa2mbVr2XFwmTQo0afqUGlni62pSbKqRdhka02AAAAKXRSTlMABcn+dlMxKYz+rT0M/r2WgF1MEuzs5dqmnf78+uFoHf310saz/dX6/v8pul4AAAgjSURBVEjHhZZlXFpRFMAZMHNO3XTqujeJBzzgUcMRUlIioIKdM2Y7daFzbq67u7u7u7u7u7vrw+57MGBz8f/E78f5c86593Dvxf1OA7f6RN+GTeLMA2p8agZ4Nmno16gB7n809iZ6tWvROmXihEWXxmVHRUVlJ/efIG+O9/X+l9WgUXAL0+OTfTewURCEDEAQ9GP2xAENvf+qEdsaN46Kjh6VRa4Dwt6a0syv3h+9Rm2N66MVvfuSDc74xE1j1q1bM+Pw8OnTry0bvN/rD2Y9D5+Ndi1y0xgQPHz6tcGDdg2csjjUDmNp9xW+db1g0yjFkJsgftrgQQOnhNaFMXWsYOVo/99F34evr1zZ3v336CkDdw0avGza9OGHZxxvWpin79DE/Vev/ujtkydvt1e15NmuQcumDT98/NGYTWezIg1PLm5duHAhOWfmbWaBPsDLv5XLenZ8MXny5CUD0Xg0PCvyydaFTydc3pxTYR1g9oxLyq3VNmtNoDGZzBFrzwQQnQkfPn/56ua6s2zDxYVPL28utzbzTNJqNCKRSCrlUCSSGJ1YJ9XGjR2ZwQJugd5hej3urVBsMFy2muOweClHElMkFnBhEh0AiyUUiZiekGSdX5SZR8vkZxLq27xWQesViugoH42UItGJ0XA7fD6JBMPHVgwdOuxEGFfTurR8voTEJ9HXBrjbKm0+SqEYVa7R2cNJLnBHq0N7hqapV84JS4gTysqM82F+t1mFeGwUPIwPFIqTuRI6qQ7c/LSeS9OXV8WKOEpxrQXiJZcn0EndwvV+qNhwYqWid6lGgIrwr97oNEZqampoaNq+Yg4s8pEJt5k6jQVxmQR05JssqhxSaRLBfK4Ang0LuA5PQEpfshObCkbP9OoiSVypD4FQUgK+oc/s2BiHy+1fOaSvVUoS5E9NT0vfWwXb1dkH0lPVwMPouUep05r1TNqIggKQctYZLxwuqUe0Yr2ZM3tvKGMxg8EI3VMlEPDRnz2gPrCbEWonYljM+ZIRLBaLSZtFQttsiYq9s+MkK6euGrYTRABdPbQKRlscu4rhnPL0sPOFTBqNxhzZDXzHDw9AxcrkpBj6WLAU9rrUsK3J5U4xtPscAgt4LJAQhT4X9Bg96pJWx4f3RPz89bTZMCZOdREZ3ZwJMROsavSGHlodXOUMilguwMQVrqV2iGeBhCMc243rOOFB1qVcHXe5S9RuOia69BgxVH+bBQjv5hCD5X0R0CNX7VJXaj5aKzw7zbmqN/R5mZkjw0kOcH7GLASs6i9i92NcLOUwp3gsaSRYZ5ITMORscqSZIxjqIi7N59qGbm+EfaGnUs7rZ/FjBHSn6N4iksyeJC2qcukxjW7bEBhekRrBYEQsvUGhiEtKCOYOLmI9/DiEbdGIlekM50oIHAObv0+t3jeHQ4nlSmtKqT5FzlXFhSxis/vX6iT5S+wmY+dokJCPQeKKYyQcDoVSLNCYZJC8BOY7RP/NbHKiZ0KYdFX3CCxfahWXDuaRyw1TKotjKTaqdVo5BG1r0oFO/ym6tyGT2SYNN5ZzQp3KYKSqT0iUxcXFsUBxoiRJPYVUyOJRPwCm20TQZDLC7qGNCaNwOHPy8+eAwn4jVhkmkNYaISpUUR/nFVcEDhhUxPmlsMnIJBGspFA4gDpWdZguoTbOwqNShYGtcO3kFSXKbnw+EN1ArUgPbQIcBlpyVWKLldVicQxHpM2dv0BFpcoswbjGQf17TMxpSmiKHTuLEFWyqVaUECMWhzkQi8U6CUekyfWskJ+bdwGi8so83XDuTb98/c42bL2IXY6T2CohT27N1daix7eUA5BKRSKNNs48ybiNCqkWzDsH8XhWIjhN9/fsPnDw9DVnsWuu4YREIVVW2q+fxVhu9RlgNpubDbBW5FjkpVQIAr1BC+ZdUAmtvuhpqrZN4UAciltgMkgJxDIZhMKDMFAJAzrXb7y8mR+aA//zHLJfPM2EMh51y7zxILIusrJ+W6zY8wFs+rf3g6c4RNBmoEmoAgXJflWw1GXyigCvRrY4orFH/+QxM6YNmoKz08o3MEe+pd94GeSEWjZebmldE9S+peMqxo/nCaPAwyJyDM6BOxEfOH+LyZICsBhzyieBWxXf3sPfrbEzxs0HEkKRZBScK628/YkeISEhvn6+ImV1dXWTBrYHl5t3Izfsk4cFEo5DHGJdGjcqKYqRJHTC49vig/2COp861RzfElz/7UDfiZiX+AfLzaNtAIGgP1NYWFCQGR4+N/fdVUV05cnNgSH+LVRCFeaxU+o8zeq3JxTm0VhMG7S8TLimb5bBQM7KSuxvNNlbRLIDXR1/j/btgpIKWUwWixYfD87tjAxw5s81IT+fdAgYE3RNDUiFv8v7yuv0xnEyas5MJlDiDx0C5/bB1awMpl6uyk60rWSUUBiFkJHefScGuyT0PlW5AUGijEAEXq+uw2ifunQ5ujpDn6ICewpkMhKFFWoYsqO5m4vo8THLAFYLzRif0atr164rj3Tp0uXu6gJCTY5cCP4csmTV+LKoxEhD7x3N3V0qDVqPVVO+FmTs0xWlF2oeZY1YW5QA/pM8MPLbFpSCJ8TVIUENXDahNRsVsycVMOP39xnWFeR8exBNeZ/GygynJ7RtY5rIk/Eg2cYhO04TcU6IEzBxXE0eK/5Wnz59etkz3gErOxLsZkv3liHtWrQpT/n85vQvb972tlGSNc1j0YAJvOt30ErvAzEPiCHYRLl7twxuSHT1Grcgo0SWNUU3A23yOlrovXsfVmewRoSHh+N/e1n/AKXqD7zZF+HlAAAAAElFTkSuQmCC' +EMOJI_BASE64_HAPPY_THUMBS_UP = b'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' +EMOJI_BASE64_UPSIDE_DOWN = b'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' +EMOJI_BASE64_WARNING2 = b'iVBORw0KGgoAAAANSUhEUgAAADgAAAA4CAMAAACfWMssAAAC/VBMVEUAAAAWBgQOAgAwCQEPAQAyDAIrCQEPAQA8EwQuBwAwCQEuCAEgBQATAgBdJwBwOgBEGAg6EQAuCAAmBgBMGAFPHgg9FABMKRdkLQBnLwBSPC90PQtKGxFbQjhWJAmsGhVBFQd+RQCeGxFVHRHGZGNuZmAAw/88PDz/vgA3IB3SngDMmAA8Ojk+NTJmZmb/xAA8MS47CwL/xgAAx/88EQg+NzU3JCEAyv/QmwBnamthY2Y4LCr/wAA7QEFADwE5MC9AMS0Azf8HtOhSwaw3KCeRWgA2SE7+1C08Ih04HBizfgCeaADqHSE7FxDUlAHOmgAAgrk3Qkb/2ik9KCPiGhx5RABpZWQxT1k7NjU+LihPLSDZogDFkgCVYABXIgAJrt//6aM9HRW7fQC0bACkaAALqdodf58heJV0wYskb4cwV2TcX2HvUVjFJCNhMgX1uAPlqAHfoADBjQCKUwBeKQABgrXai4tcW1y+x0ngNTb9zyztrADamgCETACS6//9+fkUhKtjwZz/5HwsXW3yW2H/3Fz+1EZGRETIxz/cuDfyxzLLHRxIPQe9hwPIjACpcwADv/YEue8OpNIRnMYWjrP/55r/6Yk/eohXaXL/4Wmex2ivyFnIT1DBQkPYKCnXGRpnVQX5vAO4cwB+SQBqNABOGgBIFAABw/vz2Njtx8fioqMpaHuSwWzOaWt7dV5aUVLwTFDBp0PtP0NWQ0DsxDvvLTDNlRxZOAZ8ZASecQHglgDPhgCtfQDCewD57e0VlLrot7jjqar/7ZqFw33ScnJdaGzxaGpMS04wNDliQTBuNi6waiD/ywhXTAezhAEt0P+/6eDY6soRmMNEp8DmsLHiq6wMd6ndmJnyc3nmb3Bua2JSVFbfTE61n0jEx0SxMjGvcy6UKyV9KiP/zx5yShe5GRVQJRSyexJpPQnvtAD4rgCA3t2z3cGc1rg4krjo6qQ4kKJlgXvJX2CZllJiVVCikk/Dl0x2jEfOQkOvR0LNsT+YWyf4wCHkqhKNcAS6UpZjAAAAJnRSTlMAMgl8FZtPH6lzaFs/KtL927GNRs/Fnv7r4v3mZPTr+/Ty54PtOA4ISEkAAAd2SURBVEjHrZZ3VFJRHMdBFHGlaXtvfA+QJSNQQAJEEAyJwBCEQs1Sc5Wp2VYrU9t777333nvvvffeu073PcHQbJ3T5w+Ol/s+fn/35+9cH+a/4YoN8PTwd0Pxx3nise4/9ty98Y0aNfLCe7tWkVwC/Gs3zLy/bp1a3Sc9vY9arS7tLG1Yww3viu62bNX9yqqcnGnFKS08nTV3XA3lujUTB04svH2EisBAofboU1bfDYvBYLsPXpGcPHjwilVrI1u4/kjD1bu/ZuCusQW5gVUIoTJ6lPi6uWK7R3boELkqpwP4bOrj8Hxq2wrH7RpYGPJDcHYZj2y1WiJizsUr04F4F+vw/F4/P3nyadeuXQcMGNDOmQEDwJe7l0xa8v4gEFOmnN9zPWXaqpTW9lb6ne7bt+/xNr8j7PSFwVOmLt3Ra8rSPckp9kS3F3/wAJxn+y4uWrRzwcKzZ3rlFHujHrbB4xMnniAFTZo8eXLv3r2vDUG51hswefKkSUt2dx3Q7mVyTq+F2/r1W9BrSkpxQHlgybixY3OpjzZtUm/evHXrrFld7MyatXXr5s3qTZvyqNT0w8nTp+zs16/fwqVTU4rx6AnrDbOMHTjTZBbQUYKdoKMI5ubnpR1OnrYHJG5bsOjVtGIvRMRLCyyWwny6nEahxIjIZBGFbIclohApMTE0mpY+x3h48OBFZ88s2HF+Z68V0xohon/pQMuudfSY0FAiefFosXh7NxYRhRyaGC+OSxBCfCKFLr1xYV93pKtTp3ZPzkFnrvbXcZaJ+cFEQP/54lHx4hFJLNSTxY+IGxU/Iv5ABJtozfqcvDZy+ode3VOmR64txiFHrP9lrGWYWQ7y9Il6skikGZSoISPi4iQZKFa2eFAExBfNq3vobofItftWREZOb3rIDYhYXbhlHElACwXPikSybnqWyFEqRaTppieKJBDEZgnuZS8/dOvmx+s3bx3MzkYSvaWFlgJbMJJB0W8f2Wbk6G4UxxkTxPNHxCfRIAgyWLPuLOft5QXxeG2D3hBcgOhlK7Tk6lQgkKUXhzHbMDkjBlHKvdFg2YbDSYyAIKE8K0N552CDxo0b1ybgMQieXQrGzUxFjkgcFVY+XWINmp9QvmQy9RGQJGZeidFYVtPHp+JK8Og8sSDNrA0lUgYxHXOZRAGBGrF9HTbGCrFpgjIYVhAwP8B1npibPo8GxASOQ9wORFa3NnaYcZIIICqBWLOSWHBELUDE/hXiaCBSBnEcovgAEINNziJaai5DTUeeTKwQx1RNhCBasLRKqZ6zGECs9CRnMXrGOMcZ+6vs4hY3J9HLxqD2EdCQ/p+ydzU+FO1qEqc8cL4sAiovtczfSQyQMqjpc2OEIFIWH8ZkMsPEehaRzCITyWM4HCaTMz9JDiFd3QjDSg8nETubEZJn1vINwNQkxI2MGyMDnqabjEUmJ40Si0cPorAhSEITbIFhqZfzRVw/MCRwToRQgk5nqExDAZ5sFDMO5FKIMhmLZQAjx9fOLeHCOm/ni79GXggjU2WAhOickR1DE4a0logs+UAUWrNIUdx67hgnavahMjrTQT18AyIhhIKGMkfKyEA0GBAPMgTPhrkZNVwwlSaAQU2bqxWCbTZbwgdoNSOZoJt6uYTNZiMacsQy9O/vjHcmI5CqU5HZ0A9OhXHCwLxUrA1yc2wUbHJqKnoF9AicWUrXkvkVaoQwqX+ipsKTGET0TJjE9cViKkFQB3KNOro1hiLkS9jlpkqlQj1Qu5AistJTM7jckloulUV8JpVLIinNAoFKDu5CoVDI50uQwwqFNFqM1hosmCuN5ZJgE67qf+Ja6WkkknHDcJ2veZ4gWKWyyuVarVxuVamCBfPMc3TDZ3C5JG5sE3dMFQJ888Av3DD8mDFDsVE62zc1K8tszspKnaPLVCoy4NijM2KjouDZHpifwOVzYUSEo2AELikWQOKWL7gZR2eA7zMJmGrAzVEYtwzfCJPsRAEcP8PHhn8zZujquGCqI6BWvmLGjCguqSogd8PRLdImnphf4OJVO3W9KYMEVyEqduP61Foerpjf4ONJqFHPNz/TpFQqbTbwYZLm+9arUdMD64L5I+5Yb7yXp58cDGkzHHiJwroD6S9x9cH6gTmgNcP7/IOFxdVq0slB3bp+BPxvT4c2x79OHYLfvdXZQW3tBF0uKirq5FezTh1/nPsvRdyNoWnqEulq8LydjkFB2UVFoamK0vT00vq/CnZtODAcvPCVNUA8HqBjx71A5e0nPkgLoVKPdPb4hejx7jZ4Z5sJEoH3dujKSxMS+ydMAKH71xtDwE4P51uj0o3VA9l+OHt52yDe1ejo6KHj27dv339Cx7bZdUuRN0OGDV+t6K1kBAIx7UE24oXnhiNmz/YJIF6rCARQ0wjVinX6UBGRtJ7Hu7QmetiyT9HRK8+179lzQkeeyASKAWZz92pbE4gwU9GgLW/ZsPDclWvCEbE9EIOKdHlorZ2rG/MAG1rpQ9NqVAyPtpc6vmNQ2/2pMFprXu1qRAKoFGDULUdFAOL1TNwL2nq5rsJeq4+T8R1masAYcJ7mxAAAAABJRU5ErkJggg==' +EMOJI_BASE64_WARNING = b'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' + +EMOJI_BASE64_WAVE = b'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' +EMOJI_BASE64_WEARY = b'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' +EMOJI_BASE64_HAPPY_WINK = b'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' +EMOJI_BASE64_WIZARD = b'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' +EMOJI_BASE64_ZIPPED_SHUT = b'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' + + +EMOJI_BASE64_MIKE = b'iVBORw0KGgoAAAANSUhEUgAAAEYAAABGCAYAAABxLuKEAAAkzklEQVR4nM18eZRdVZX3b59z7rtvrCFVqVTmOSEJYUYQRQhKQAQF7CoQaRG7lcGBbpxtO5VSv+9zbm0GUbtbnBBS4IBgx4mEMWEQQkgqZKBSSSpVqdSUevMdzt7fH/e9ShESEhBX917rrbfycuvcvX/nd/bZZ+99L+FvIG1tbWrlypUKgCUiqf4uIinf9+cDepEVXiDALBaZBEitCOIAQIQyQKOKqB8iu0jprRp2SywW205EhXFjEQB96D3eKKE3cjARUQCIiGz1N8/zlgjR21lwLgtOYsvT4wnXKAIEADPAAohEthERFAFKRcqxAOWSFyqt9mhSG7TGGrH2Idd1N4+7rwYgRMRvlC1vCDCV2VNVQAqFwlTHcVusyBWhtWekEy4xgJJv4ZU9WLYsFSQqfztemEAARboRESki5bouknEHCkC+5InR+kkiusd19Coi6q2MpQHwG8GgvxoYEdFVQLLl8uIY6Y+xyJUJ16n3GcjlC2DmkJkJALGIgkRsERFUiAIWFkWK4okEmBm+V4ZSCiIC141BKw3fK4eklCilnJpMGjEFlLxgRGv9C7HBrfF4fMuhOr1eed3AVJaNEJEUi8Xp2nE+b1muTcSc+GjBgx/4ITMrERCLkIiAWcAVMEQEFcqAmcV1XYI2xezwYJciJJOZ2tk2DGw8njCeV35JKRVmMpmFBIEww/c9q5SCG4vp2lQcJT8oK9CP2Ab/L5lM7qkwkV7v8npdwIyfkbLvfwKgFa5jGoZzRdjQhiysWUDMDMvjATn4YWapssZ148QivVv/8sjOvds3Ni49++Lc3EUnnlbI5+AmkkHPjs7HO9f/Sc68sLWhUCxJbW1tQ319/TSvXGSlNClFoWOMU59JwgvCIUC+FI/F/v1QXf+mwIiIIaJwdHR0QTyR+l7M0edlix48z48AYSHLAsscAcI8xhIWgSACKua6EBHYMAS0Ht3yxO+fL470ny1Cpdknnb0uXd84y4ZBYajnpdGBXdtmJxKxaaO5wo6BoQODTRMnxpZd9oHGVCo1w/fKcB2DIAhEK2VdN2Zqki78wD5ULhVuqK2t3VbV+W8CzHgHW/S8FkXqB8YxdcMHciEzaxFQaBmWGdZGYFSZUv2ICKxl0cZBfnT4RVKG6pomz9i95bln+zavO8VNppJhGIoNgvzO3T3lmTOmKkU0IRZzCURy4MAoMTMaJ9QiNXHmw80z5jj9u3d0Lz79bQtTycSpYeCLVgpKKTuhLmNsaEf8wL8+k0yueq2O+ZiAGb9e88XyikTCbc8XPZTLnhVAh9YitFWWREyxwmPAjLFHBNZaiblx3vvic+sGuzc11U1dsCs/sGeho9UMPwiEiEgpBWstHMdBaC2EWbTWNDqalZgbk3QqSUEQ7vc9f+tJy97T2NDYNJXZ1ihFZLSC0RpEsHHX1emki1LJa0sn418a7xePZrN5TaCUvTtSbuy64WzBBmGoRKADy7DWwtrIn1QBsWP+hWGtFQFYKSVaa51MpXWmaVpiqHvztNLg7gUKQBCGICICAGYGEYm1FgSQVCZwNJujKZMnURCE7DrOJDeZGU7WNsywIqkgDMVUdjEWwNFKl8plCcOQJ9Sk2otlbzIR3SAiSkRwNHBeFZjxy6dQ8u9Mus41Q9lCEIbWYRYElhFaBltGyAyWaBmFLNG3DUVrbZ2Ya+KJhLZhgN6eHuzZ2fWiP/CSdmKuy0IsEm3l4+9NROR5HowxUEqN/c4s0JpgmcV6JZQ8bx/gzLXWAoKKL4ucuqMVhaHVQ9lC0FCTur5Q9hNE9EER0SLyqsvqaIzRRBTmiuU7knHnmqHRfGCZHcuMIKyyJALFcgSStYwgDEUpxal0RkPE7OraYXt79/5px9at925+dv22c9605NoFc+d+MCdiCaIOd2OlCL4fYGBwGDOmTwUzQ0SgFEFESGlNpUI+vnv7po5ZC5d+WixDNMAQmApCIgLHALBwhkbzQUNt+ppcsVwmoutFxAA4okM+rFLAwd3nQL64Ip1wrxvKFgLL7IQ2AiXyK1xhjUUQMvwgRGitTaXT5MRiesvGDXt+fc/PvvKBv7tk9prvrfjQKdOSuasvX36T1s4Hs/kCE6CrWzZEUFlIIDCsDVFbm4K1AcIwQLnsQUSQSMQRhiGFYcj5fH5mz9bnlzFo2DKTH1oJrR1j8kFdGdayM5QtBOmEe92BfHEFEYUVcI6dMZW9PxwplN9bk3TbR3LFMAytqTIlDG20XNiOKeD7vsRcV9x4Qm95YcO+vzz1xLe+2t72nwBG7r3z+8u8oPxNK7I4lUjG6+pqpeIIoZWC0QTLCkHgQZsUQhutKmEC6QyMcWFtiKlTJmJPz17s7N6FE5cuQankqUkTmuvLpVJDMhGXUqkkgEOiAeBgAFm1VEKYkVwxrMsk20eyhc1EdN+R4pxX7EpVz10ul2dDmecCa9OlsgdrWfnhQSCqoFTYY1PpjB7Y14enH3/k+5+9+eMrAexTSuHuu++Oje7ruliIN8Wd+K9jjrMAlaOBMGM0V8CBbIiaZBG7ekbRVDOApnof1goECkU/DlbT4aZnIZcvYV/fLkyZ3IyamnqbiAW6a9fun9v01H3nnr/8kxMnNSOfy1mjtXaMhtEKWkXfRivEjIbWihNxF0arPLFzUjyObhwmQjaHoFJ1guIz3ZmKm5rscNGySGX3qXwqoPhBCAHCmto6s/EvT++9/56fX3/XXT99gIiwYsUK097ebidu3syt7e2//NHt3/jkhPq6RT29+8Kund26sWECJk9uRhB4aJIf4Z2L92BgWhIT0kVMaQSsjSY7ZGAwC3T1T8Mo6vD2N/dDkYeNPUulKO9F3HX4M1/41Kc6n7vykcuu+sDtJ51+xtR8Lhv6QWiq5lWNCohARKpU8mzDhJqaQtH7cRzuOQAIIoRxzphejktEq1yh9LF0Mn7LwIFcyCzGD23F2doxn+IHIUAUJpMp88iff//ozddefVUJ6FmzZo1ZtmyZRXRORFtbmwKAOZNrn08lEkvyxSJnszmdTiXhxlPY37sZV59+OxonKiBkWFEIQhpTjAhwNINURWcBEAP27UX44EtfNDV1M36Jaz7c2hoth2m3/fDHPz/ngoveVioWQoiYmGNgtIajFbTWcIxGzGgoReHEuozJF8sfz6QStx66pNQ4UBQAzufzk5VSX8kVPWZmHdoIkOqWXPUzUCqMxxPmwV933HvDtVe/o0yqp62tzSxbtiysggIAK9vbpb29XWxof+MHfqiVUo0N9YjFYlDw4aSPw7PdcwFmFMoaQSAgMFD5iDC8ACh5CiVPo+QrlAsGNSlCQvWgUNZ7Wonsj9ra4qRUz0c/fM35D9x7d4cbjxtSKgwCO7ZzcsWW0Fows84VPVZKfSWfz08GwFW/9zJgKutMrDJtyXistuR5HIX5lZhkHCgChIl4wjxw392/+MwnbmwRkWDFin9V7e3tr9j+OlatUgBEKQocxzFKKba2GiEzEnEHe4dq4XuA0ajsTC8XIkCRQBFDkQAQxF1BQg8iX048BwDdQLjiX/9ViUjwuZs/3nr/PXfd5cYTRghhEFbBqcZXAhFQyfM4GY/VWmXaKjHN2N3NeLaMlsvzDdS1I/kSi4geO/uwHAzerLWZmlqz+jf3/u7zn7zp/SKiqgHrK00CWlpaGFH0WssslMvnyY3FEI+7CIIArgPsys1DrvAsamsEQYgx/QhyWKBEAKWgOei3L+6eu67yM7e3t3N7e7sSESKiq2Nxt+7i9155US47apUirYhgmUDMCC3BIaVH8iV2HXNtqSTfBPBSxR6uOl8iIs4VyzcnE04sXyyFzGKqZx8rETieH3KmtlY/8fBDnTd/9LorRQQrV648IigAsHblSg0gTCXiG/cPDmJ4aITnzJmltry4Hel0CrNnzUYsPgFlH6gjBdcJoSr+RBgIrAJzBJAIIKhMQkKpmOzedNu337QjivDbqzowEVXD/itq6yesP/vty5fkDhxgrZQiYiiOANJMFASBrU8nYvmS90mi+A3V5WTaIoRsLpebBOD9o0VPWETbCu24kk/x/UCS6ZTseLGz9J+3fu0KpVSutbVVd3R0vGquY2DJEgGAsue3NjU2or6uDgDQ3NyEdDKOkmfg6hxqM4BCiN39CtliBloxMskSGutCxAwQhATHCLQjKJUgLEBdon8EUIzIJYwP77m1tVUrpfLf+/bXWidNnvL03AWLXK9YEOXGiCmyzSoFUqJHi55oRVflcrmVRNTf1tamzEpAtQOsHPfKpOtkBkayoQgitohU2MIgpdj3PP37B3712XXrntnU1tZmDudTDpWW1lYGAOYwNCYOPwgVM6GutgYsBoN963D+wl9CtMKdf34Ldg2eCbIhKCxAcxYc7Mc7z34KpyzNo2+fwep1x2EoO52SmTT2DexpBNbrwzG2o6PDVnTs/O9fdXz2Izd9+hZS2lpmrRRBCcEyQ4si3/PCifU1NfmivA/Ad1auXKnMysgbU7ZQvto3WqSSeasyhVkQhtYmMzX6odW/XX/bd759SzUyPhooALC2rU2jvT1kmrA6W5BLPF+4JsWKrYdcUWNhwx+xeHEJz26oRd/IRLx9SQfqk7vhGgYEGMlPQENdAGEAQmjIDGHxrD1kUYfHClNnNzfPm6DUjgFU4q/x925vbw8r4cOtx5906vve8a73nFXMZa1WSjPJWCJNlCbfsrDI+0XkuysBVu1EnPO8hdroU3KFEqrLqJp5s9ZCOw7t3d0tq3997z8TEVpbW48FEwDAuUs6BQCGu/9r4cKa/4Mm+SH6B0ZgjAsigZU0pEBYOiePj174SzRN9CCZc1BIXAgv83Z4REjGAxARBkcFkyYzmmctlpmzgaUznnhp377zDjC/EpSq3H777UKkcH/HXTfv6e4S7cTIWltJpI2lXnWuUII2+hTP8xa2E7ECALJYnnIdxdba8UnrKMkkNp5Iqo3PPvPb3/72t+uZ+ah+ZZyQvqLDAi2JdyxZ17JoSjdOnLZBn9JwC/oHhuHEXPihhoggl2c8178cDct6sX7oM7hj9ZlYcNGfEDatQEIzlAU8vQSpM7rw8VuOZ31CNwabHngS+EEARKejw0lHR4dltvqPf/zjk8//5an744mEYkE4llms2mqtTbmOCiyWA5U4hknOYwAsQgfTkFHCSBuHevfsxsN/ePBrIkKvhS0RNACwOAjFLcUzSp7orJHm2gHMTt2LkdEQEzNDCBh4bKMLLu3ESw9fj6nOr3D2ou3Y+PvPIlG8F8oQBIKGeDd6X/gW3rZ4Bx3YtgLS9/3mivmvmnRqbW2FiNCff3f/V3t2d0MZo5jtwTx0ZHN0WCI6DwDM3r17kyR0Usm3AEDMYxeCmW08ldI7tnY+/Zvf/OYJAOo1sAUAxFpoovZwd3/y2VNPkjnHzyqHpI2aO3Ebnu7NQjVruBpYfmaAXGE7XnxpO6bXAstPBrwyEJ8KhCAwE9JuFo1DK3DjcsiW7WswtAe7AGDtytZXTdFWdFarV69e/54rrn5y+sxZZ5TzOctRwgrMAmhQybcQkZP27t2bVLWNjfNFZJpX9sAianyZg5SScrmEHS92/oSIsHLl2iPmb448W1Hkev8jNV/v6jI4canvzGoOZdIEH416NWK6ACFAhFGXUTjzJAfzZhhYaDgJB4FoCAOhBWrSBDFJaKNwwpIYpjRlYgBw7rlH12PlypWKiLCt8/mflIpFkNIiMo4EIsqLcj7Tahsb5ytlsTiRjGtrLVdTgxIlsEUbx+ze2eWvfuCeB6OK6trXXLzq6IDlFVB3PrDv6Y4/Jd7/4982ZgdGXZpQJ3Ld8rVYOmsIvh/Vq60VEEJoZQFhCIdQxIjHBIoARwsgITwf5CZ91GeC6QCAcw/veMdLe3s7iwhWd3Q82L3zJU8bx1hmGauGCmCt5UQyrsVisbGEhS4BApGxCmGU4eGY6+r9/X3Pb9y4bWclzH59Vb128DnnwHzutuxdEyeduGTHxV033nB5WNtYJyJWiChiFREwlFWoSTFU5d+eT9jVZ1BfY9HYxEi4glyBpA6Qok8HAABrj6nawRUbdg309W5YcvyJZ5RDj0Wgq1VRgYiOchQLlUBmVa0VjF0AEAmzYHBf3+MAsHbt2iN6/mORpqYWkTaoBXPq9+8Zmelk4hV6juUXgOe2ORgaVUi41QIdKskUwY4eB09vjGEkp5BOCeAp6uxyHo10OzYdqjb09/U9xmwBIhmzuZLpYwDCMstAMKmSVadKzRQQQCmNQj6Hvp49z1QG/WtwQUdHB0NAdt3JP73krFVXZBr4zFKWWBE0AQhDYNGsEGWfsOklB4tmB1AEGAXMmxZi9hSLwRGFuCtcV896/YbYrm/+ou5ukSwR4Zg2hKoNfT07n8nncoi7sWp3QdWFUGUyJikIavmQBSIiAJE+MDyEri2btgJAZ2fnX9taIVgLtf4P/zZseP8LICKiSloWgFZAwhVkkgxSwLoXXOzYa1DwCKElaBI0T7Koq2FAFP36kfg3Rkd3j6xdCY0jBHeHEQaALZs2bRsZGgQR6SpTxi5gACK1BgRXKsjI2EfEaEP5XLb02JNr+4DKjL8xQiHHFOSVJwpmQBGwZHaAXFGhZ0BjS7cDAIi7AkcLZ5Li50vKB2gfABroPGZQ0N7eLgCwfv36vlwuV9TGJK3niURpEQCAMANE7pGqBFBaw/f97PBwaZSIcCiyr0vOjYZ54NtS82rusuwRXEewaEYAK0C+qOCHCLt7Hb75tpqr//Bo5lGgaz8AtHYc2zKqCimFYrGYDXx/VGudDI+Aq4KIR5VKXzVpTESiFCG0YRGAR4fLFr12UcD3FZGWmhQviPpiDl/XquZeyj4hCAgJV2TiZDbTmjg2p9HuJXTtb2s7enn5sGNHX+XQBkUiBSIaqwAAEXAQ8RSIRtVh1CMigCUEXtuMHDrMqlWrdHQaBxNdF1z4Znvy3Gn2eC6DFR254BfpAGgFFhD9172pO2/8et3Zd/xq+KkVbVDt7UeuIr66RpVEF0t4uPlWURfhqCJCfxQzkFBEl2r7G5Qig1epVh5J2tra1Jo1a4xSSlpbWy0R2bhgyle/+sNrP3zl8b+Y2hwYz9eHTVuOF8sQJyFqc5ce+IcvXXTdrx8eeKytDWhvP3LG8KgSuQSlFJmIKVHARBUMKvFTvwGou2r5QUiEIALjOAkAcRHJH8s9K22sRES2vb2dASTb2r64/NxzznvfjBnTz2+c2Fz/6Jo4uvbcgDmTi6rkUyW5fXhRChaazKadzr1Kdfgb70bs+Fb4rxsUjG1fcW2cZOQ3K3yokgGAAnUrCLZaAajShEFRUQrMjFgsVtuQSNQczfG2tbUpEVHt7e1MRHbpwoUL7777rq9s6ezc+IlP/NOvFi06rjWfz9fv69ttZ85/K3d6n8PwAYbraBxpaBHA0aKG92usXpe8hxnU/hod7WHHZUYyiZqY69ZK1G5S+UQY2Ciw3KpiGp2lYtlqrVWFVVBKEdtQMjW1iTPPO29yxfjDEn/VqlW6Agi3XnbZmatX/+6u1Q/9ecNll733XxzHzO16qYuLpZJdsGChLFi4WB83v1nVzXgPNhdvRDEfwDjOYcERAesE1Et7ZfvTO/51vQio468EpmrDaae9rbmmpiZprRWlKkUOImitValYtjGNThUbHNxORD1u3IUiYkUERQQIbENDI+YtXLygMu4rfI2IqNbWVnvGGScv+t2Dv73n9h/8YN3y5Re8b2R4JL7x+Q1hOp3h004/Xc2ePUfHEwliZhgnjuPmNYAm3YDOfAuCog9jXglOFPyRbNo1sX/Hjps8xxC3tLT8VceSqg1LTjh5QUNjI0R4zF5FYDfugoh6BgcHtyuaOrUoJBsSsahFQCkCKYIwI53JYNqMmacBwLmHnO2r9Zdbb/33j/3sp3c/886LLm7dt69PnnrySTuxaaKcdvqbzKTmZlU92gMY69ttnDgZk5scYPqXsTl7KbyiDyfmgMf1Qhuj9VCfyJsu+s5b16x9anVopbGa4H69qFRtmDlr9qk1NbVRZk4RlCIAkERMQ0g2TJ06tagAQAk9pAAoIola1qNWNa01midPfktl0DEai4hWSvE3v/7Vmy+/7PJb5s1fkCyVSmFDQyOdceabdVPTJBrL6VTWcFWqweLceQuQcstQs7+BTYVrMTzoIxFjgDQsaygFjJYdRYn5fO45p1/wzNNPPX7qqUuXVhPcrxMYCwCTpkx9q9ZRl70iVWEMiapgAVSoJRp/KHgBK621oghBIlKB56Fp8pSTFi1aNLNSwlQASGttRSRx3tvP/wyz8GOPPGwPjIyY5smTxzqfDgVkvETgAEuOPwFJp4TE3DbsTNyKLT3NEBsi4YRQToiegRj2DQaqc/ML4eTJUxbc/Yv7HrnqqtZ3LFu27PWAo4hI5k6ZMr15ypSTA99H1AcZ6am01gUvYNH4AwCoNhGVcd2tNrTPZlIpKEVWKYLWimwYhrPnzHPfffnlFxER2trWqFWrVilmxsdu+PBbFi5cOGnqtGl405lv1n19vdjS2fmyfrlXk4rHw3GLl2L+7AlY/OaPYrv5Ie7feiMeeOEc/G7DBdju34SlSxZg8ZKlZnBw0BJR3Te+/u3ffeyGj1y6bNmycHwR/mjS1tamiAjvvurqi+bMnR+3QRBqrUgrgiKymVQKNrTPZlx3a5uIQrXdqlD2bxIR2T+cDXoHD0h336Bs29UX9owU5c67Vq0DIr9SvX7V3XfdIiIsIoFU5PkNz0n3zp0iIsJRduyoUr2ObSC+70lff1Y2v7hXOrf2Sr4QDR0VL0S2bOm027Zt5Z6enuDjN9ywTEToWB1yFcT/+Oldj+8dKcq2XX1hd9+g9A4ekP3D2UBEpFD2b6pca8b6V3K53KRssZw9UChz39AB3tM/LDv29MtLvUP2iec28aWXvutNUc5GFAD91JPrtzCzhGFoxyu/7onHpVwuHxMoxwacvAyc3t69wcjwsNz1s5+sGW/wq0lLS4sWEbrwwgtPf+wvG7mrd8ju2NMve/qHpW/oAB8olDlX8kZFpKnKriqaGgByxfL3RET6h0eD3oER6e4blO279wV7R4pyy/f/477qEjjvvLcu7uvda0WEqwpXZ76vt1c2b3qhwgL7OoBgsdaKtfYVrKv8H7+w8XnevHnTIIC6ih971cNF1b7v3HZHx96RomzfvS/o7huU3oER6R8eDUREcsXy98Zfqw7+rZAh91tFL/Adx1FKkWilQETGK5f5lNPOuPSSSy45k5npkovefU7z5CkKgK36lKqjndTcjBkzZka/HaO/GS9EBBW1vb/CeRMRcrkcNTQ0yty5cxuueO97l4oIWlpajnijlpYWrbW2y5cvO/W0M866zPfKTEQmaq0ncRxHFb3ANwn3WxK12skYMJUkt0okaEcY8o/q0wlFRNZoBccYhIEvs+fOU5de8b5vEZEct2jJWUeYGRARgjBEPp8f++2NkOo4pWIRdfX17LpxnH3O2acBwI033nhExtx4443EzLjsig9+e868+TrwfXGMgdEKRGTr0wkVhuGPEkQ7EO1cPAbMwXsLaYTtxbI/mnBdRQTRmmC01qV83p6zbPlZLS1XXj95yuR5EtW1Xz5TFeX37N6FIAgA4Ihb9uuVbHYUw8NDAIDp02ecCrwy+KxKtfXtho9+9CPL3nHB20qFvDVaa60JRJBE3FXFsj+qwe3j2QKMA6bKmnQ63cfMX8wkXaWUskZrGKPBbFU87soVf3/Nrb4fnFIx+OXAVEBgFqTT6TcQjoOSSCQR+L4CgIlNk5ZUfn7FGaqlpUV/+ctfCY877rgFl7Zc9a10Om3ZWmWMhtEaSimbSbiKmb+YTqf7MI4trzCMotqLTifjt2WL3qMT6jKGAOtohVjMoVKhQKecfqbeP5KLDQ8NQWv9sqVSPZWLMBzH+ZsAYxwHQRAQANTV1c4G0KCiFqzx1FSrVq0SZpv4/Iov3XPCyaemi/kcxWIOOdFZ2U6oy5hssfxoOhm/TQ7TBH3ojFfz4Ygp+WDgh9lEwiWliB2t4DgGYgOZtWARHlv/FIqFwliIH4nAK5egVBRaHN6/cNRDdiQRC0gYfR9GHMeBtZYASENDY+3FF18wU0TGn/5JKsXBf7v19p+f/86LT8pnR20s5ihHKyhFnEi4FPhBNqbi14wpfoi8wpsfdMSJrnLofyidcJVjDCulxIn6YymdiGPm/MVY8/CjKBWLFaZYAIRSOUQsVmFLtfYpEYvGbkljm+GhqEBIA2QAenlVpOqrHGNgbdSk1djYiDedevo8AFiyZAlV8kIgIvu1b/7bf/3dFVdfVi4WQ6OVjnRX4hjD6YSryl7woUSCduKQJXREYCpKWBEx9anUfdlCqa0+kzTG6NAohZhjIMyor63BtLnH4c9rH0V2dARKaYjNIzvSjVS6rjoQAAJIgSpgSLkbXnZb9U6Vb4ZwAAGBCn9E8OKHkOv7Mw7TJAVjDDgq94jSGlOmTlsAAIVCwfnyl7/MRKS+9Z3bfvK+D3zo2jAMQkK1CVrBGB3WZ5ImWyi11dek7pPoQZLDUvOI+3/16Yy6dPJL+ZL3/YaalKO1CoxWiMUMmC3q62oxe+EiPPzEc9jT9Syo60xkn1mO0FbnH4AUkP3LO7Fnx6PRuHs+hd//5DIUSwHE74lAEQVSDsh7GJ2/Wo4HH9qL3ida0Ln5eQBRCmRMYa2rwAAAGhoa54mIvvbaa8vM3PQfd/7sv6/8wDV/zzYMIWxiMVN5pkAFDTUpJ1/yvl+XTn5JjvKc5NEiMCsiOpOMX1/0gh831KYdrXVglIIbMxBhZNJJzFl8BmjvpzG4bTNSsh+9235TWTqEYN8qZPKrsf3xL6AUAEF5P4b8ExAPHsDjP1mMPf0KJJ3I9/wcBzZ+AX/YfjHe9Y/fRXZ4BP37D0QAj/NVWo8l0UlE0NTUNIOI7FVXXfWOXz/4hycvufzvzvfL5RAQ48YMtFLQWgcNtWmn6AU/ziTj11ei21fNBh6lfEGCSit5Kh77YKHkR8wx2ioicR0FoRQanU1Ilh7Bvz96DcyktyDs/zGEVPQqgv6vIecDSdmE3u5NKA0+ieTEM6CCNdjZG0Mc3RhddxZ+csdKDPR149xTy9i39lQ8tuttOPGUsyDCIHXwnGiMwbTpM7oi9Qhlz5v+uX9p+87Nn1/xxze/9exZ+WzWakXGdQwUkThG24aalFPy/DtS8dgHK2eroz40etSYvTKAiIhKJ93r82X/qxNqUjoRj5MiscZJoNH/OVavM3jLZd/FpBM+jQl4Ch33PQwZWonVD+3FpvCLaMiUcKDnz8jlfMRTU4ByH+ZMdzDyzLtx99q34oJ/XI/5C2pQHFiPpw/cgav+eQ0m1DoVp8svywISwR0ZHqIn1q1DqNx5H/2nm2+a1DwZhXyO3ZijY46BUmSTiTjV1aR0oeS1JeNutbn5mB4WPabDzDhwdCbhfr5Q8q90HT3SMGGCdnU5LPXdL/n4MiyeX4v95SWYNzuJMxKX47G727Fu+NOYd8q1cByN4MBjsAxMaGyGPzKMhgwjzL6At7zna5g7qwHBhK9gwQzg8rOewaTRs7Bu1duRLwGViiF838O+vj5seP6FqZu2dlFqQjMWHX+C2DC0HAaScGPKaBKlKGyor9ExY0aKJb+18gRt9cUYx3RGOeYsWGVAu2bNGpNJuveMjo4+B1XzvcYae17fwC6Ymr8Pa1NicjwVxfrrsb/rZ3iu9Cm87x8+hm1dnTguU4u9G57DxpEpOHF5AXt3bsSL5qe49OIXsemBd8FbsB1u03vR+GYHOx76OHbuS2A/XYCZIwPo3TOCwcFhFMs+0nX1mDb3OHFdl6LXGYQUM1orRaJIhZUH0o0f2Ic8Dq+vTca3H83RHtbe13JxVSpNxWH0/BN/YuPvr1nh1X+kYckpZ0oumxMrCTUwOIqJE2tAXIBPDZjSexb+9HAX8vPXYeHEF7Dlj9ehPOW7mLfweDQMXI0t+0/H1OOvA5SLoZEigpBRX+ci8AuIxZOoqatHTaYGxhhYG0KEETMGWisQwRpj9IT/yVcYVGX8et1elOkzHHxBwNezAMViPtRak+8HmpkRIINa7z50r/8q8jN/jgUL56LrpS7U1U+AtRZCBsP9O5GumwRFFq4bh+MYEBk4MTd6jwxbsLUQRCd4o5XEHGO1Uqa+JoXy/4aXXoyXg+wB8qXgQsfQLTGj53kM5HMFWOYQwmThKBGQ2HL0wLjjIAwjdgsA47jg0I+eLhGOGsAE1QphNVYURcREhEQ8rmuSLopewFrRXWDzf+Nx+p9/Tcp4kXEPrg+IZOqtvTK0+EDI9q2peAwBgGKhBN8PBCCOXnzBNNZBIAdzOeOHJYoYWak46Hg8jpRrQABKXnAARD9m8I/Srvt8RY//PS/WGS+rRHTruJkSkRO8wF7Mwuczy4nGOPXGEFiAIGAEYRAtpUMOm0pF72cwjgPHROX2cjkACHsU4amYVr/TWq+mg28aGp9we0Pkjc0iYYw9r3iplhRluueEJwvjNIEsZcZcEZ7KIrWVE+N4hcqkaJiAXk1qKyl6TkE/7Th4nohGx93LIGLIGwZIVf4/zqFcUTp2jLMAAAAASUVORK5CYII=' + +EMOJI_BASE64_SUPERHERO = b'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' + + + + +EMOJI_BASE64_HEAD_EXPLODE = b'iVBORw0KGgoAAAANSUhEUgAAADgAAAA4CAYAAACohjseAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjlCMDEyRDc5MzQwQzExRUQ4QjhGREE4RURBODNBOEY0IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjlCMDEyRDdBMzQwQzExRUQ4QjhGREE4RURBODNBOEY0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OUIwMTJENzczNDBDMTFFRDhCOEZEQThFREE4M0E4RjQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6OUIwMTJENzgzNDBDMTFFRDhCOEZEQThFREE4M0E4RjQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7feGyYAAAQ70lEQVR42sxa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' + + + +EMOJI_BASE64_HAPPY_LIST = [EMOJI_BASE64_HAPPY_STARE, EMOJI_BASE64_BLANK_STARE, EMOJI_BASE64_HAPPY_LAUGH, EMOJI_BASE64_HAPPY_JOY, EMOJI_BASE64_HAPPY_IDEA, EMOJI_BASE64_HAPPY_GASP, + EMOJI_BASE64_HAPPY_RELIEF, EMOJI_BASE64_HAPPY_WINK, EMOJI_BASE64_HAPPY_THUMBS_UP, EMOJI_BASE64_HAPPY_HEARTS, EMOJI_BASE64_HAPPY_CONTENT, + EMOJI_BASE64_HAPPY_BIG_SMILE, EMOJI_BASE64_PRAY, EMOJI_BASE64_GUESS, EMOJI_BASE64_FINGERS_CROSSED, EMOJI_BASE64_CLAP, EMOJI_BASE64_COOL, + EMOJI_BASE64_UPSIDE_DOWN, EMOJI_BASE64_OK, EMOJI_BASE64_COOL, EMOJI_BASE64_GLASSES, EMOJI_BASE64_HEAD_EXPLODE, EMOJI_BASE64_GLASSES, EMOJI_BASE64_LAPTOP, + EMOJI_BASE64_PARTY, EMOJI_BASE64_READING, EMOJI_BASE64_SANTA, EMOJI_BASE64_SEARCH, EMOJI_BASE64_WAVE, EMOJI_BASE64_KEY, EMOJI_BASE64_SALUTE, + EMOJI_BASE64_HONEST, EMOJI_BASE64_WIZARD, EMOJI_BASE64_JEDI, EMOJI_BASE64_GOLD_STAR, EMOJI_BASE64_SMIRKING] + +EMOJI_BASE64_SAD_LIST = [EMOJI_BASE64_YIKES, EMOJI_BASE64_WEARY, EMOJI_BASE64_DREAMING, EMOJI_BASE64_SLEEPING, EMOJI_BASE64_THINK, EMOJI_BASE64_SKEPTIC, EMOJI_BASE64_SKEPTICAL, + EMOJI_BASE64_FACEPALM, EMOJI_BASE64_FRUSTRATED, EMOJI_BASE64_PONDER, EMOJI_BASE64_NOTUNDERSTANDING, EMOJI_BASE64_QUESTION, EMOJI_BASE64_CRY, + EMOJI_BASE64_TEAR, EMOJI_BASE64_DEAD, EMOJI_BASE64_ZIPPED_SHUT, EMOJI_BASE64_NO_HEAR, EMOJI_BASE64_NO_SEE, EMOJI_BASE64_NO_SPEAK, EMOJI_BASE64_EYE_ROLL, + EMOJI_BASE64_CRAZY, EMOJI_BASE64_RAINEDON, EMOJI_BASE64_DEPRESSED, EMOJI_BASE64_ILL, EMOJI_BASE64_ILL2, EMOJI_BASE64_MASK, EMOJI_BASE64_WARNING, + EMOJI_BASE64_WARNING2, EMOJI_BASE64_SCREAM] +EMOJI_BASE64_LIST = EMOJI_BASE64_HAPPY_LIST + EMOJI_BASE64_SAD_LIST + +EMOJI_BASE64_JASON = EMOJI_BASE64_WIZARD +EMOJI_BASE64_TANAY = EMOJI_BASE64_JEDI + + +def _random_error_emoji(): + c = random.choice(EMOJI_BASE64_SAD_LIST) + return c + + +def _random_happy_emoji(): + c = random.choice(EMOJI_BASE64_HAPPY_LIST) + return c + + +''' + +M#"""""""'M .d8888P dP dP +## mmmm. `M 88' 88 88 +#' .M .d8888b. .d8888b. .d8888b. 88baaa. 88aaa88 +M# MMMb.'YM 88' `88 Y8ooooo. 88ooood8 88` `88 88 +M# MMMM' M 88. .88 88 88. ... 8b. .d8 88 +M# .;M `88888P8 `88888P' `88888P' `Y888P' dP +M#########M + +M""M +M M +M M 88d8b.d8b. .d8888b. .d8888b. .d8888b. .d8888b. +M M 88'`88'`88 88' `88 88' `88 88ooood8 Y8ooooo. +M M 88 88 88 88. .88 88. .88 88. ... 88 +M M dP dP dP `88888P8 `8888P88 `88888P' `88888P' +MMMM .88 + d8888P +''' + +''' + +90 x 90 pixel images + +These images are intentionally a little large so that you can use the image_subsample to reduce their size. + +This offers more flexibility for use in a main window (larger) or perhaps a titlebar (smaller) + +''' + +HEART_FLAT_BASE64 = b'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' + +HEART_3D_BASE64 = b'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' + +PYTHON_COLORED_HEARTS_BASE64 = b'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' + +RED_X_BASE64 = b'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' + +GREEN_CHECK_BASE64 = b'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' + +LICENSE_GRAPHIC_BASE64 = b'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' + +TRIAL_GRAPHIC_BASE64 = b'iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAC91BMVEVHcExEP0D42lz111s8e6xHSEg+eqo0NDT/4Fz93lw+d6VSUVFOZ3pMaoFSZXTexVtVVFWCe11UVFjJtFr73VtWV1paW1taWln+4Fvv0ltVVFT/41xVVVZHa4dbWlpaWlrnzFvQultBdZ9VVFVaWllZWVqKgVtXVldZWVo7e65XVlZXV1hualpCc5o9eqpaWls/d6NZWVlVVVdZWFhYWFhGb49IbYtVVVhGcpTawVpEcZTpzltZWluWi1tWVlhnkJhXVlevn1rjyVuklltWXmSckFs5bZhnZFvhx1tYV1dBdZ1ZWFlqZ1pWXmUCAgNIgKWZqoQoAABRYm9kYVpRUlm8qVpPa3/WvltPhaO8vHQEBAS3pVt7dVpmdXKqm1rItFvRulvHw3KunlyIoIq6BAH3AQEAAABQUlmak2EAAABRUllibWx2fmz/AAD9AABabnaGhmXHAgJTYGtQUlnCr1sAAAABAQEAAAACAgIAAABRYm14cln7DANWXWIAAABqZ1q3OTX6AAC3a1DHUT1MTVQoMS/pAADvAAD0AwR9AQGrAAAoTGXcCwuZdXzBKCkrFRYAAABHWVwAAACgkEP3AwPNAADAi0OlAABPAACLEhV+Uk6mWzeYAABmAAAwMDNEAAAGBgbjBgYSEhIzMzP/AK7/fF3/4F3/AAA+fK3/313/5F0AAAD/4l08fK//4Vv/5l373Fzv01rs0Fz011o8fbA6eq7FsFpXYmpgYF2hk1u/qEZzcF7RAADOtUudAQBrAAB8d14PDQYuKRFZX2PixlIkIA7/mDz+XSK3pVrl0mbYwFteVCU/OBeRh1oGBgWbiTmwm0D1AQI2MBbqzVWEczD9vE2PfjV2aCtZWFf1iDbqAACkkDz6NRHZvU7eBAJWSh/zUB/+di1LQRv8IggYFQr/zVSOAQFCAQAJERcgP1dpXCd9BAOpBAHncTEmAABYAQL7sEcpV30ZMEGVHgxvKBIRHCTom0LZNSN4Z4+uLA89PzeIUCFLFhoRXZguAAAA9nRSTlMAEPz4/gr9A/7+/Bn8/P79MP5A/fy3/N749SL8OPz1zPb++yql1f5K7vtUm/769sL0rl2DjPz0av718vzm/nH8ZP7+/fr8//7xefCV8vIt/f0c+Oa/+vPy/f5n9vn7+/D1/vf8/nyak/WAzfz7RLz6+v7mgfNO7z3R39Lp+t/Byfne/f6i+S1hpuHx/p7+zryp/bb9xz/86cSZ4fvjzt7xsM6jS/7///////////////////////////////////////////////////////////////////////////////////////////////////////////6X+Y3eAAAF1ElEQVR4nO2X7U9TVxzHW9rS3lJaKZXR0kdpi1QpCFSBWnUYccyqQ53BiAbnNhlxkWH2ZGLcXixZTLbEd4t/wDm9pWW3pYUqgqAys2KZbj5Gnbq5JXtIzBaXvdib/c5podhH8N2S/V70ntue7+ee83u6pzze/5bbNGa326x5Lmn9ocZ6vsYQi0Zjlkp+feOhevGi9Ef1LldXb69VLZGoY729XZtc+obF6LU7u1Uqwd79aglCEvWLewUqVfdO7SIA7TGORcjnQ/DJkitiudjRBYr5WqXtxDCDqFEANab0hE2p5S9Ab3aXTMSCVO1jkVpAL2AB10SJ25yfsKVEEXQGOaqP+nwvNftQlBJUwWBQUbIlLyBS6qVLVhkRK2FZn4+FCzIW0C+9pZH8gGEv3XZBK5pnrQXUId7hCE/8Mc6lrywDAHIGmTnvJXzJBIEIgMoPcA6Acpd7owmCphYwKMUYgRMCa9rofi8HYM3mM+AzNk1MjbuHGciJ5qkcgMirFcThQVUG/S2McZCE5kJ2gGjU6Jvz2DPGoqEBAFwi4ysYi7IAxKMK3zPZF7fLCA1yJeP4GsZsHJC1MFdsgmdzgfk+uPsbyAa/Xv8XxrCGryDBHpzDb2cD2CbA0wWK+S745jzGoBfOYDz1OsZDCE1nB4gtruTumXvwwDiAWy9se4LxXVjCTwj9Op4VsMIqgPonNcw9xNQQugqqg8LwLxjf4SbpN9fH8ed0+qep+iq3AIKo6jbeiKvPYfwInQVAobBzikj/gS9V6Pp5/JGN9wZOj+a62JckZdXfEvXTP2SPf8eXWQIId+6Bzx8Ti4JNJYapgA1d5QiWHoDJN/d0hoWnxvGjwTGygj1nx6niZwp4QsfX3kxrDfzT9BcGJIg50Bn+E/zPHYa7VwanyQ8PxqZJNpE14S/eT80FKFJi79xSOQkAQn8b478PrG+juEkaQDQ0QwCTn6S3pW3xTeHNkAdokkhoGIR2IQXcf0J8CAk6PXBtzDlRnx5AqHF8EqaSTGQnEzT8WdgTriGA6xjfI3rfd2c5pDpjzgA4+VbHNpgahTxAj2cBeHt4O/E/ggIkTRIZFfAhia5MB3SQbcBUUo3sFHHFzRni8oMHOAIYSOyAUZFqMo5mbs0dMK27AtKQJA2Lxma+B8IgFQ885WYrlEUVzSszVyMBlJjUXtIxyGuBpD6+A4CHaIhqA07wgldtsq7KqKeABre1VHEhHjNEo45u3p8tr6EA8ilKre6GoswA/gBJTujKV0gYyRpuPRhLdpYg8a93eHn204KIAuC98MM5jCSK1K6moIDSnVn1PN4sADrGDfCWpDVAnw/lHWiV0CHrNVlyAGbmAFdpRxEUoFYjw0DwC0ifgLe8T+BqzAGIvzFWWccucVy8LbLAQCpB3BGB/Wc2Wi3ZGjKYOA7QWLpiMZcz/c2kGD21a00OPY/3ISYJydO0r9XpXmNSTyhMT4suQxHMt3c74ldtf7V9n9HrrWg2lZNnl5uay71e9T67fe2Cjkkis8zvlx7p6Tms0/WRU1qfTne4p+eI1BOSmRdy1luytcbj8Uvb2qTVQkdfNNrnEFbDnd3v8dT0L8mvFzfIpB4wvx8UwpaV7hZh4sbjKZS151+CaGuT0DNr/pay2y3+uVthzfGcYaC2QS71JM1RW+uYd7tsJEM7S9nBC02hpKBOXqUcqUveVxdb8u3BdvHl5JKrHcdFIoujOrmlZRer8gAMxTA9FIpDpPJ1cO5J7MkfCpElGPJ4oGy1VFqzW1ZcSD1ggeovMlAvFBbLdtdIC1eXbcilFxki+v5jS81bljtgDSF5o5jEVQ6P9juWrzAvPdavjxhynXb5SqW2UlMkEreP1Pk99n6autp+u8dfN9IuFhVpKrVK5QIO3PDY2hF7qGkpdbl4VVPILq9d3D8WHl/vsMtt8bFNbnfoF/Tc+WYb2aGfHet35E+gdDNHzBmGizCNYS5nqgzP9ddPNFc4okU74D9l/wK32773g6nxAgAAAABJRU5ErkJggg==' + +""" + MM"""""""`YM dP + MM mmmmm M 88 + M' .M .d8888b. .d8888b. 88 .dP .d8888b. .d8888b. .d8888b. + MM MMMMMMMM 88' `88 88' `"" 88888" 88' `88 88' `88 88ooood8 + MM MMMMMMMM 88. .88 88. ... 88 `8b. 88. .88 88. .88 88. ... + MM MMMMMMMM `88888P8 `88888P' dP `YP `88888P8 `8888P88 `88888P' + MMMMMMMMMMMM .88 + d8888P + M""M dP dP dP + M M 88 88 88 + M M 88d888b. .d8888b. d8888P .d8888b. 88 88 .d8888b. 88d888b. + M M 88' `88 Y8ooooo. 88 88' `88 88 88 88ooood8 88' `88 + M M 88 88 88 88 88. .88 88 88 88. ... 88 + M M dP dP `88888P' dP `88888P8 dP dP `88888P' dP + MMMM +""" + + +def __pip_install_thread(window, sp): + window.write_event_value('-THREAD-', (sp, 'Install thread started')) + for line in sp.stdout: + oline = line.decode().rstrip() + window.write_event_value('-THREAD-', (sp, oline)) + + + +def execute_pip_check_package_is_installed(package): + """ + Checks to see if a package is installed. Note that currently the interpreter cannot chosen. + The check will happen using the currently running version of Python + + :param package: The name used on the import statement, NOT the name used to pip install + :type package: str + :returns: True is the pacakge is able to be imported + :rtype: bool + """ + try: + __import__(package) + # print(f'{module} passed') + return True + except Exception as e: + return False + + return False # shouldn't get here + + +def execute_pip_install_package(package, interpreter=None, force_reinstall=False, upgrade_pip=False): + """ + Pip installs a package using the currently running interpreter + + :param package: The name of the package to install + :type package: str + :param interpreter: The interpreter to use for the install. If none specified, then the currently running interpreter is used + :type interpreter: str + :param force_reinstall: If True package will be uninstalled before installing + :type force_reinstall: bool + :param upgrade_pip: If True pip will first be upgraded + :type upgrade_pip: bool + """ + + + if interpreter is None: + python_command = sys.executable # always use the currently running interpreter to perform the pip! + if 'pythonw' in python_command: + python_command = python_command.replace('pythonw', 'python') + else: + python_command = interpreter + + if '#egg=' in package: # if this is a long pip string with a security token, get the pacakge name from the string + package_name = package[package.index('#egg=')+5:] + for i, char in enumerate(package_name): + if not char.isalnum(): + package_name = package_name[:i] + break + # package_name = package[package.index('#egg=')+5:-1] + elif '.whl' in package: + if '/' in package: + file_name = package.split("/")[-1] + else: + file_name = package + package_name = file_name.split("-")[0] + else: + package_name = package + + # If need to upgrade pip, do that first by calling our own function recursively + if upgrade_pip: + execute_pip_install_package('pip') + + + + layout = [[Text(f'Installing {package_name}', font='_ 14')], + [Multiline(s=(90, 15), k='-MLINE-', write_only=True, expand_x=True, expand_y=True)], + [Push(), Button('Downloading...', k='-EXIT-'), Sizegrip()]] + + window = Window('Pip Install PySimpleGUI Utilities', layout, finalize=True, keep_on_top=True, modal=True, disable_close=True, resizable=True, font='courier 10') + + window.disable_debugger() + mline = window['-MLINE-'] # type: Multiline + + + + mline.print(f'Installing {package_name} with the Python interpreter =', python_command, c='white on purple') + pip_command = f'-m pip install --upgrade --no-cache-dir {package} {"--force-reinstall" if force_reinstall else ""}' + sp = execute_command_subprocess(python_command, pip_command, pipe_output=True, wait=False) + window.start_thread(lambda: __pip_install_thread(window, sp), end_key='-THREAD DONE-') + + while True: + event, values = window.read() + if event == WIN_CLOSED or (event == '-EXIT-' and window['-EXIT-'].ButtonText == 'Done'): + break + elif event == '-THREAD DONE-': + mline.print('\n') + __show_package_version(package_name, mline, python_command) + mline.print() + mline.print(f'Done Installing {package_name}.', c='white on red', font='default 12 italic') + window['-EXIT-'].update(text='Done', button_color='white on red') + + elif event == '-THREAD-': + mline.print(values['-THREAD-'][1]) + + window.close() + +def execute_pip_get_pypi_package_version(package): + """ + Returns the newest version number of a package located on PyPI + :param package: Name of the package + :type package: str + """ + try: + url = f'https://pypi.org/pypi/{package}/json' + response = urllib.request.urlopen(url) + data = json.load(response) + return data['info']['version'] + except Exception as e: + return 'error' + +def execute_pip_get_local_package_version(package, interpreter=None, window=None, key=None): + """ + Retturns the version number of a given package that has been pip installed. + If a window is provided, then the function will run threaded due to a possible long delay. + When the thead completes, they key provided in the paramters will be returned as an event and the value will be the version + :param package: The name of the package to get version of + :type package: str + :param interpreter: The interpreter to use to check. If none specified, then the currently running interpreter is used + :type interpreter: str + :param window: Optional Window. If provided, the operation is run as a thread and the results passed to the window as an event + :type window: (Window) + :param key: key that will be sent to Window when operation completes + :type key: str | int | tuple | object + :return: String with the version number or None is package wasn't found or if a window is provided (the return value wiil lbe sent to window) + :rtype: (str | None) + """ + if interpreter is None: + interpreter = sys.executable + if window: + thread = threading.Thread(target=__get_ver_thread, args=(interpreter, package, window, key), daemon=True) + thread.start() + return None + else: + return __get_ver_thread(interpreter, package, window, key) + + + +def __get_ver_thread(interpreter, package, window, key): + """ + Not directly user callable + The thread that gets a package version and returns it. Uses a Python progrm it creates and runs as a subprocess to get the value to return + :param interpreter: The interpreter to use to check. If none specified, then the currently running interpreter is used + :type interpreter: str + :param package: The name of the package to get version of + :type package: str + :param window: Optional Window. If provided, the operation is run as a thread and the results passed to the window as an event + :type window: (Window) + :param key: key that will be sent to Window when operation completes + :type key: str | int | tuple | object | None + :return: + """ + ver = __get_ver_pre_38(interpreter, package) + if not ver: + ver = __get_ver_38_later(interpreter, package) + if ver == ' ': + ver = '' + if window: + window.write_event_value(key, ver) + return None + else: + return ver if ver != ' ' else '' + +def __get_ver_pre_38(interpreter, package): + """ + Function that shows all versions of a package + """ + # interpreter = sys.executable + # sg.cprint(f'{interpreter} ', end='', c='red') + pstr = __make_str_pre_38(package) + + + + # Now you can use 'temp_file.name' as the path to your temporary file + # Remember to delete it manually when you're done (or set 'delete=True' when creating it) + + # Create a temporary file securely + with tempfile.NamedTemporaryFile(mode='w', delete=False) as file: + file.write(pstr) + file.seek(0) + temp_file = file.name + + + # temp_file = os.path.join(os.path.dirname(__file__), 'temp_py.py') + # with open(temp_file, 'w') as file: + # file.write(pstr) + sp = execute_py_file(temp_file, interpreter_command=interpreter, pipe_output=True,merge_stderr_with_stdout=False, wait=False) + out, err = execute_get_results(sp) + if err: + out = '' + os.remove(temp_file) + return out + +def __get_ver_38_later(interpreter, package): + """ + Function that shows all versions of a package + """ + pstr = __make_str(package) + + with tempfile.NamedTemporaryFile(mode='w', delete=False) as file: + file.write(pstr) + file.seek(0) + temp_file = file.name + + + # temp_file = os.path.join(os.path.dirname(__file__), 'temp_py.py') + # with open(temp_file, 'w') as file: + # file.write(pstr) + sp = execute_py_file(temp_file, interpreter_command=interpreter, pipe_output=True,merge_stderr_with_stdout=False, wait=False) + out, err = execute_get_results(sp) + if err: + out = '' + os.remove(temp_file) + return out + + +def __make_str_pre_38(package): + return f""" +import warnings +warnings.filterwarnings("ignore", category=DeprecationWarning) +import pkg_resources +try: + ver=pkg_resources.get_distribution("{package}").version.rstrip() +except: + ver=' ' +print(ver, end='') +""" + +def __make_str(package): + return f""" +import importlib.metadata + +try: + ver = importlib.metadata.version("{package}") +except importlib.metadata.PackageNotFoundError: + ver = ' ' +print(ver, end='') +""" + + +def __code_that_prints_version_pre_38(package): + return f""" +import warnings +warnings.filterwarnings("ignore", category=DeprecationWarning) +import pkg_resources +try: + ver=pkg_resources.get_distribution("{package}").version.rstrip() +except: + ver=' ' +print(ver, end='') +""" + +def __code_that_prints_version(package): + return f""" +import importlib.metadata + +try: + ver = importlib.metadata.version("{package}") +except importlib.metadata.PackageNotFoundError: + ver = ' ' +print(ver, end='') +""" + + +def __show_package_version(package, mline, interpreter): + """ + Prints the version of a package to the Multiline element provided + + :param package: Package to get version of + :type package: str + :param mline: Multiline element that will be output to + :type mline: Multiline + :param interpreter: The interpreter to use + :type interpreter: str + + """ + # interpreter = execute_py_get_interpreter() + mline.print(f'{package} upgraded to ', end='', c='red') + + if sys.version_info.major == 3 and sys.version_info.minor in (6,7): # if running Python version 3.6 or 3.7 + pstr = __code_that_prints_version_pre_38(package) + else: + pstr = __code_that_prints_version(package) + temp_file = os.path.join(os.path.dirname(__file__), 'temp_py.py') + with open(temp_file, 'w') as file: + file.write(pstr) + sp = execute_py_file(temp_file, interpreter_command=interpreter, pipe_output=True, wait=False) + for line in sp.stdout: + oline = line.decode().rstrip() + mline.print(oline, font='_ 10 bold') + os.remove(temp_file) + + + + + + +# MM'"""""`MM oo dP M""MMMMM""MM dP M""M +# M' .mmm. `M 88 M MMMMM MM 88 M M +# M MMMMMMMM dP d8888P M `M dP dP 88d888b. M M .d8888b. .d8888b. dP dP .d8888b. +# M MMM `M 88 88 M MMMMM MM 88 88 88' `88 M M Y8ooooo. Y8ooooo. 88 88 88ooood8 +# M. `MMM' .M 88 88 M MMMMM MM 88. .88 88. .88 M M 88 88 88. .88 88. ... +# MM. .MM dP dP M MMMMM MM `88888P' 88Y8888' M M `88888P' `88888P' `88888P' `88888P' +# MMMMMMMMMMM MMMMMMMMMMMM MMMM + +def _github_issue_post_make_markdown(issue_type, operating_system, os_ver, psg_port, psg_ver, gui_ver, python_ver, + python_exp, prog_exp, used_gui, gui_notes, code='', detailed_desc='', priority_support_code = '', checklist_answers=None, project_details='', where_found=''): + + # **cb_dict): + + # cb_docs, cb_demos, cb_demo_port, cb_readme_other, cb_command_line, cb_issues, cb_latest_pypi, cb_github, detailed_desc, code, project_details, where_found, priority_support_code = cb_dict + + # Print(f'{dict_to_string(cb_dict)}') + body = \ +f""" +## Type of Issue (Enhancement, Error, Bug, Question) + +{issue_type} + +---------------------------------------- + +## Environment + +#### Operating System + +{operating_system} version {os_ver} + +#### PySimpleGUI Port (tkinter, Qt, Wx, Web) + +{psg_port} + +---------------------------------------- + + + +## Versions + + +#### Python version (`sg.sys.version`) + +{python_ver} + +#### PySimpleGUI Version (`sg.__version__`) + +{psg_ver} + +#### GUI Version (tkinter (`sg.tclversion_detailed`), PySide2, WxPython, Remi) + +{gui_ver} +""" + + # .format(issue_type, operating_system, os_ver, psg_port, python_ver, psg_ver, gui_ver, project_details)) + + if priority_support_code: + body += \ +f""" + +### Support Code + +Priority Support Code {priority_support_code} +""" + + + body2 = \ +f""" + + +--------------------- + +## Your Experience In Months or Years (optional) + +{python_exp} Years Python programming experience +{prog_exp} Years Programming experience overall +{used_gui} Have used another Python GUI Framework? (tkinter, Qt, etc) (yes/no is fine) +{gui_notes} + +--------------------- + +## Troubleshooting + +These items may solve your problem. Please check those you've done by changing - [ ] to - [X] +""" + # body_checklist = "" +# """ +# +# - [{}] Searched main docs for your problem www.PySimpleGUI.org +# - [{}] Looked for Demo Programs that are similar to your goal. It is recommend you use the Demo Browser! Demos.PySimpleGUI.org +# - [{}] If not tkinter - looked for Demo Programs for specific port +# - [{}] For non tkinter - Looked at readme for your specific port if not PySimpleGUI (Qt, WX, Remi) +# - [{}] Run your program outside of your debugger (from a command line) +# - [{}] Searched through Issues (open and closed) to see if already reported Issues.PySimpleGUI.org +# - [{}] Upgraded to the latest official release of PySimpleGUI on PyPI +# - [{}] Tried using the PySimpleGUI.py file on GitHub. Your problem may have already been fixed but not released +# """ + + for (cb_desc, cb_answer) in checklist_answers: + body2 += f'- [{"X" if cb_answer else " "}] {cb_desc}\n' + + body2 += \ +f""" +## Detailed Description + +{detailed_desc} + +#### Code To Duplicate + + +```python +{code if len(code) > 10 else '# Paste your code here'} + + +``` + +#### Screenshot, Sketch, or Drawing + + + +""" + # .format(python_exp, prog_exp, used_gui, gui_notes, + # cb_docs, cb_demos, cb_demo_port, cb_readme_other, cb_command_line, cb_issues, cb_latest_pypi, cb_github, + # detailed_desc, code if len(code) > 10 else '# Paste your code here')) + + if project_details or where_found: + body2 += '------------------------' + + if project_details: + body2 += \ + """ + ## Watcha Makin? + {} + """.format(str(project_details)) + + if where_found: + body2 += \ + """ + ## How did you find PySimpleGUI? + {} + """.format(str(where_found)) + return body + body2 + + +def _github_issue_post_make_github_link(title, body): + pysimplegui_url = "https://github.com/PySimpleGUI/PySimpleGUI" + pysimplegui_issues = "{}/issues/new?".format(pysimplegui_url) + + # Fix body cuz urllib can't do it smfh + getVars = {'title': str(title), 'body': str(body)} + return (pysimplegui_issues + urllib.parse.urlencode(getVars).replace("%5Cn", "%0D")) + + +######################################################################################################### + +def _github_issue_post_validate(values, checklist, issue_types): + issue_type = None + for itype in issue_types: + if values[itype]: + issue_type = itype + break + if issue_type is None: + popup_error('Must choose issue type', keep_on_top=True) + return False + if values['-OS WIN-']: + os_ver = values['-OS WIN VER-'] + elif values['-OS LINUX-']: + os_ver = values['-OS LINUX VER-'] + elif values['-OS MAC-']: + os_ver = values['-OS MAC VER-'] + elif values['-OS OTHER-']: + os_ver = values['-OS OTHER VER-'] + else: + popup_error('Must choose Operating System', keep_on_top=True) + return False + + if os_ver == '': + popup_error('Must fill in an OS Version', keep_on_top=True) + return False + + checkboxes = any([values[('-CB-', i)] for i in range(len(checklist))]) + if not checkboxes: + popup_error('None of the checkboxes were checked.... you need to have tried something...anything...', keep_on_top=True) + return False + + title = values['-TITLE-'].strip() + if len(title) == 0: + popup_error("Title can't be blank", keep_on_top=True) + return False + elif title[1:len(title) - 1] == issue_type: + popup_error("Title can't be blank (only the type of issue isn't enough)", keep_on_top=True) + return False + + if len(values['-ML DETAILS-']) < 4: + popup_error("A little more details would be awesome", keep_on_top=True) + return False + + return True + + +def _github_issue_help(): + heading_font = '_ 12 bold underline' + text_font = '_ 10' + + def HelpText(text): + return Text(text, size=(80, None), font=text_font) + + help_why = \ + """ Let's start with a review of the Goals of the PySimpleGUI project + 1. To have fun + 2. For you to be successful + + This form is as important as the documentation and the demo programs to meeting those goals. + + The GitHub Issue GUI is here to help you more easily log issues on the PySimpleGUI GitHub Repo. """ + + help_goals = \ + """ The goals of using GitHub Issues for PySimpleGUI question, problems and suggestions are: + * Give you direct access to engineers with the most knowledge of PySimpleGUI + * Answer your questions in the most precise and correct way possible + * Provide the highest quality solutions possible + * Give you a checklist of things to try that may solve the problem + * A single, searchable database of known problems and their workarounds + * Provide a place for the PySimpleGUI project to directly provide support to users + * A list of requested enhancements + * An easy to use interface to post code and images + * A way to track the status and have converstaions about issues + * Enable multiple people to help users """ + + help_explain = \ + """ GitHub does not provide a "form" that normal bug-tracking-databases provide. As a result, a form was created specifically for the PySimpleGUI project. + + The most obvious questions about this form are + * Why is there a form? Other projects don't have one? + * My question is an easy one, why does it still need a form? + + The answer is: + I want you to get your question answered with the highest quality answer possible as quickly as possible. + + The longer answer - For quite a while there was no form. It resulted the same back and forth, multiple questions comversation. "What version are you running?" "What OS are you using?" These waste precious time. + + If asking nicely helps... PLEASE ... please fill out the form. + + I can assure you that this form is not here to punish you. It doesn't exist to make you angry and frustrated. It's not here for any purpose than to try and get you support and make PySimpleGUI better. """ + + help_experience = \ + """ Not many Bug-tracking systems ask about you as a user. Your experience in programming, programming in Python and programming a GUI are asked to provide you with the best possible answer. Here's why it's helpful. You're a human being, with a past, and a some amount of experience. Being able to taylor the reply to your issue in a way that fits you and your experience will result in a reply that's efficient and clear. It's not something normally done but perhaps it should be. It's meant to provide you with a personal response. + + If you've been programming for a month, the person answering your question can answer your question in a way that's understandable to you. Similarly, if you've been programming for 20 years and have used multiple Python GUI frameworks, then you are unlikely to need as much explanation. You'll also have a richer GUI vocabularly. It's meant to try and give you a peronally crafted response that's on your wavelength. Fun & success... Remember those are our shared goals""" + + help_steps = \ + """ The steps to log an issue are: + 1. Fill in the form + 2. Click Post Issue """ + + + t_goals = Tab('Goals', [[HelpText(help_goals)]]) + t_why = Tab('Why', [[HelpText(help_why)]]) + t_faq = Tab('FAQ', [[HelpText(help_explain)]]) + t_exp = Tab('Experience', [[HelpText(help_experience)]]) + t_steps = Tab('Steps', [[HelpText(help_steps)]]) + + layout = [[TabGroup([[t_goals, t_why, t_faq, t_exp, t_steps]])], + [B('Close')]] + + Window('GitHub Issue GUI Help', layout, keep_on_top=True).read(close=True) + + return + + +def main_open_github_issue(): + font_frame = '_ 14' + issue_types = ('Question', 'Bug', 'Enhancement', 'Error Message') + frame_type = [[Radio(t, 1, size=(10, 1), enable_events=True, k=t)] for t in issue_types] + + v_size = (15, 1) + frame_versions = [[T('Python', size=v_size), In(sys.version, size=(20, 1), k='-VER PYTHON-')], + [T('PySimpleGUI', size=v_size), In(ver, size=(20, 1), k='-VER PSG-')], + [T('tkinter', size=v_size), In(tclversion_detailed, size=(20, 1), k='-VER TK-')]] + + frame_priority_support = [[T('Priority Support Code'), In(size=(20,1),k='-SUPPORT CODE-')]] + + frame_platforms = [[T('OS '), T('Details')], + [Radio('Windows', 2, running_windows(), size=(8, 1), k='-OS WIN-'), In(size=(8, 1), k='-OS WIN VER-')], + [Radio('Linux', 2, running_linux(), size=(8, 1), k='-OS LINUX-'), In(size=(8, 1), k='-OS LINUX VER-')], + [Radio('Mac', 2, running_mac(), size=(8, 1), k='-OS MAC-'), In(size=(8, 1), k='-OS MAC VER-')], + [Radio('Other', 2, size=(8, 1), k='-OS OTHER-'), In(size=(8, 1), k='-OS OTHER VER-')]] + + col_experience = [[T('Optional Experience Info')], + [In(size=(4, 1), k='-EXP PROG-'), T('Years Programming')], + [In(size=(4, 1), k='-EXP PYTHON-'), T('Years Writing Python')], + [CB('Previously programmed a GUI', k='-CB PRIOR GUI-')], + [T('Share more if you want....')], + [In(size=(25, 1), k='-EXP NOTES-', expand_x=True)]] + + checklist = (('Searched main docs for your problem', 'https://Docs.PySimpleGUI.com'), + ('Looked for Demo Programs that are similar to your goal.\nIt is recommend you use the Demo Browser!', 'https://Demos.PySimpleGUI.com'), + ('If not tkinter - looked for Demo Programs for specific port', ''), + ('For non tkinter - Looked at readme for your specific port if not PySimpleGUI (Qt, WX, Remi)', ''), + ('None of your GUI code was generated by an AI algorithm like GPT', ''), + ('Run your program outside of your debugger (from a command line)', ''), + ('Searched through Issues (open and closed) to see if already reported', 'https://Issues.PySimpleGUI.com'), + ('Have upgraded to the latest release of PySimpleGUI on PyPI (latest official version)', 'https://Upgrading.PySimpleGUI.com'), + ('Tried running the Maintenance Release. Use Home Window to access Maint Releases', ''), + ('For licensing questions please email', 'mailto:license@PySimpleGUI.com'), + ) + + checklist_col1 = Col([[CB(c, k=('-CB-', i)), T(t, k='-T{}-'.format(i), enable_events=True)] for i, (c, t) in enumerate(checklist[:4])], k='-C FRAME CBs1-') + checklist_col2 = Col([[CB(c, k=('-CB-', i + 4)), T(t, k='-T{}-'.format(i + 4), enable_events=True)] for i, (c, t) in enumerate(checklist[4:])], pad=(0, 0), + k='-C FRAME CBs2-') + checklist_tabgropup = TabGroup( + [[Tab('Checklist 1 *', [[checklist_col1]], expand_x=True, expand_y=True), Tab('Checklist 2 *', [[checklist_col2]]), + Tab('Experience', col_experience, k='-Tab Exp-', pad=(0, 0))]], expand_x=True, expand_y=True) + + frame_details = [[Multiline(size=(65, 10), font='Courier 10', k='-ML DETAILS-', expand_x=True, expand_y=True)]] + + tooltip_project_details = 'If you care to share a little about your project,\nthen by all means tell us what you are making!' + frame_project_details = [[Multiline(size=(65, 10), font='Courier 10', k='-ML PROJECT DETAILS-', expand_x=True, expand_y=True, tooltip=tooltip_project_details)]] + + tooltip_where_find_psg = 'Where did you learn about PySimpleGUI?' + frame_where_you_found_psg = [[Multiline(size=(65, 10), font='Courier 10', k='-ML FOUND PSG-', expand_x=True, expand_y=True, tooltip=tooltip_where_find_psg)]] + + tooltip_code = 'A short program that can be immediately run will considerably speed up getting you quality help.' + frame_code = [[Multiline(size=(80, 10), font='Courier 8', k='-ML CODE-', expand_x=True, expand_y=True, tooltip=tooltip_code)]] + + frame_markdown = [[Multiline(size=(80, 10), font='Courier 8', k='-ML MARKDOWN-', expand_x=True, expand_y=True)]] + + top_layout = [[Col([[Text('Open A GitHub Issue (* = Required Info)', font='_ 15')]], expand_x=True), + Col([[B('Help')]]) + ], + [Frame('Title *', [[Input(k='-TITLE-', size=(50, 1), font='_ 14', focus=True)]], font=font_frame)], + # Image(data=EMOJI_BASE64_WEARY)], + vtop([ + Frame('Platform *', frame_platforms, font=font_frame), + Frame('Type of Issue *', frame_type, font=font_frame), + Column([[Frame('Versions *', frame_versions, font=font_frame)], [Frame('Priority Support', frame_priority_support, font=font_frame)]]), + ])] + + middle_layout = [ + [Frame('Checklist * (note that you can click the links)', [[checklist_tabgropup]], font=font_frame, k='-CLIST FRAME-', expand_x=True, expand_y=True)], + [HorizontalSeparator()], + [T(SYMBOL_DOWN + ' If you need more room for details grab the dot and drag to expand', background_color='red', text_color='white')]] + + bottom_layout = [[TabGroup([[Tab('Details *\n', frame_details, pad=(0, 0)), + Tab('SHORT Program\nto duplicate problem *', frame_code, pad=(0, 0)), + Tab('Your Project Details\n(optional)', frame_project_details, pad=(0, 0)), + Tab('Where you found us?\n(optional)', frame_where_you_found_psg, pad=(0, 0)), + Tab('Markdown Output\n', frame_markdown, pad=(0, 0)), + ]], k='-TABGROUP-', expand_x=True, expand_y=True), + ]] + + layout_pane = Pane([Col(middle_layout), Col(bottom_layout)], key='-PANE-', expand_x=True, expand_y=True) + + layout = [ + [pin(B(SYMBOL_DOWN, pad=(0, 0), k='-HIDE CLIST-', tooltip='Hide/show upper sections of window')), pin(Col(top_layout, k='-TOP COL-'))], + [layout_pane], + [Col([[B('Post Issue'), B('Create Markdown Only'), B('Quit')]])]] + + window = Window('Open A GitHub Issue', layout, finalize=True, resizable=True, enable_close_attempted_event=True, margins=(0, 0)) + + # for i in range(len(checklist)): + [window['-T{}-'.format(i)].set_cursor('hand1') for i in range(len(checklist))] + + if running_mac(): + window['-OS MAC VER-'].update(platform.mac_ver()) + elif running_windows(): + window['-OS WIN VER-'].update(platform.win32_ver()) + elif running_linux(): + window['-OS LINUX VER-'].update(platform.libc_ver()) + + window.bring_to_front() + while True: # Event Loop + event, values = window.read() + # print(event, values) + if event in (WINDOW_CLOSE_ATTEMPTED_EVENT, 'Quit'): + if popup_yes_no('Do you really want to exit?', + 'If you have not clicked Post Issue button and then clicked "Submit New Issue" button ' + 'then your issue will not have been submitted to GitHub.\n' + 'If you are having trouble with PySimpleGUI opening your browser, consider generating ' + 'the markdown, copying it to a text file, and then using it later to manually paste into a new issue ' + '\n' + 'Are you sure you want to quit?', + image=EMOJI_BASE64_PONDER, keep_on_top=True + ) == 'Yes': + break + if event == WIN_CLOSED: + break + if event in ['-T{}-'.format(i) for i in range(len(checklist))]: + webbrowser.open_new_tab(window[event].get()) + if event in issue_types: + title = str(values['-TITLE-']) + if len(title) != 0: + if title[0] == '[' and title.find(']'): + title = title[title.find(']') + 1:] + title = title.strip() + window['-TITLE-'].update('[{}] {}'.format(event, title)) + if event == '-HIDE CLIST-': + window['-TOP COL-'].update(visible=not window['-TOP COL-'].visible) + window['-HIDE CLIST-'].update(text=SYMBOL_UP if window['-HIDE CLIST-'].get_text() == SYMBOL_DOWN else SYMBOL_DOWN) + if event == 'Help': + _github_issue_help() + elif event in ('Post Issue', 'Create Markdown Only'): + issue_type = None + for itype in issue_types: + if values[itype]: + issue_type = itype + break + if issue_type is None: + popup_error('Must choose issue type', keep_on_top=True) + continue + if values['-OS WIN-']: + operating_system = 'Windows' + os_ver = values['-OS WIN VER-'] + elif values['-OS LINUX-']: + operating_system = 'Linux' + os_ver = values['-OS LINUX VER-'] + elif values['-OS MAC-']: + operating_system = 'Mac' + os_ver = values['-OS MAC VER-'] + elif values['-OS OTHER-']: + operating_system = 'Other' + os_ver = values['-OS OTHER VER-'] + else: + popup_error('Must choose Operating System', keep_on_top=True) + continue + checkboxes = ['X' if values[('-CB-', i)] else ' ' for i in range(len(checklist))] + if not _github_issue_post_validate(values, checklist, issue_types): + continue + checklist_text_answers = [(f'{checklist[i][0]} {checklist[i][1]}', values[('-CB-', i)]) for i in range(len(checklist))] + + # cb_dict = {'cb_docs': checkboxes[0], 'cb_demos': checkboxes[1], 'cb_demo_port': checkboxes[2], 'cb_readme_other': checkboxes[3], + # 'cb_command_line': checkboxes[4], 'cb_issues': checkboxes[5], 'cb_latest_pypi': checkboxes[6], 'cb_github': checkboxes[7], + # 'detailed_desc': values['-ML DETAILS-'], + # 'code': values['-ML CODE-'], + # 'project_details': values['-ML PROJECT DETAILS-'].rstrip(), + # 'where_found': values['-ML FOUND PSG-'], + # 'priority_support_code' : values['-SUPPORT CODE-']} + + markdown = _github_issue_post_make_markdown(issue_type, operating_system, os_ver, 'tkinter', values['-VER PSG-'], values['-VER TK-'], + values['-VER PYTHON-'], + values['-EXP PYTHON-'], values['-EXP PROG-'], 'Yes' if values['-CB PRIOR GUI-'] else 'No', + values['-EXP NOTES-'], + project_details=values['-ML PROJECT DETAILS-'].rstrip(), + where_found=values['-ML FOUND PSG-'], + code=values['-ML CODE-'], + detailed_desc=values['-ML DETAILS-'], + priority_support_code=values['-SUPPORT CODE-'], + checklist_answers=checklist_text_answers) + window['-ML MARKDOWN-'].update(markdown) + link = _github_issue_post_make_github_link(values['-TITLE-'], window['-ML MARKDOWN-'].get()) + if event == 'Post Issue': + webbrowser.open_new_tab(link) + else: + popup('Your markdown code is in the Markdown tab', keep_on_top=True) + + window.close() + + +''' +MM'"""""`MM oo dP M""MMMMM""MM dP +M' .mmm. `M 88 M MMMMM MM 88 +M MMMMMMMM dP d8888P M `M dP dP 88d888b. +M MMM `M 88 88 M MMMMM MM 88 88 88' `88 +M. `MMM' .M 88 88 M MMMMM MM 88. .88 88. .88 +MM. .MM dP dP M MMMMM MM `88888P' 88Y8888' +MMMMMMMMMMM MMMMMMMMMMMM + +M""MMMMM""M dP +M MMMMM M 88 +M MMMMM M 88d888b. .d8888b. 88d888b. .d8888b. .d888b88 .d8888b. +M MMMMM M 88' `88 88' `88 88' `88 88' `88 88' `88 88ooood8 +M `MMM' M 88. .88 88. .88 88 88. .88 88. .88 88. ... +Mb dM 88Y888P' `8888P88 dP `88888P8 `88888P8 `88888P' +MMMMMMMMMMM 88 .88 + dP d8888P + +M""""""""M dP dP +Mmmm mmmM 88 88 +MMMM MMMM 88d888b. 88d888b. .d8888b. .d8888b. .d888b88 +MMMM MMMM 88' `88 88' `88 88ooood8 88' `88 88' `88 +MMMM MMMM 88 88 88 88. ... 88. .88 88. .88 +MMMM MMMM dP dP dP `88888P' `88888P8 `88888P8 +MMMMMMMMMM +''' + + + + + +def _upgrade_entry_point(): + """ + This function is entered via the psgupgrade.exe file. + + It is needed so that the exe file will exit and thus allow itself to be overwritten which + is what the upgrade will do. + It simply runs the PySimpleGUI.py file with a command line argument "upgrade" which will + actually do the upgrade. + """ + interpreter = sys.executable + if 'pythonw' in interpreter: + interpreter = interpreter.replace('pythonw', 'python') + execute_py_file(__file__, 'upgrade', interpreter_command=interpreter) + + +def _main_entry_point(): + # print('Restarting main as a new process...(needed in case you want to GitHub Upgrade)') + # Relaunch using the same python interpreter that was used to run this function + interpreter = sys.executable + if 'pythonw' in interpreter: + interpreter = interpreter.replace('pythonw', 'python') + execute_py_file(__file__, interpreter_command=interpreter) + + + +main_upgrade_from_github = _upgrade_entry_point + + +#################################################################################################### + + +# M""""""'YMM dP +# M mmmm. `M 88 +# M MMMMM M .d8888b. 88d888b. dP dP .d8888b. +# M MMMMM M 88ooood8 88' `88 88 88 88' `88 +# M MMMM' .M 88. ... 88. .88 88. .88 88. .88 +# M .MM `88888P' 88Y8888' `88888P' `8888P88 +# MMMMMMMMMMM .88 +# d8888P +# M""""""'YMM dP +# M mmmm. `M 88 +# M MMMMM M .d8888b. d8888P .d8888b. +# M MMMMM M 88' `88 88 88' `88 +# M MMMM' .M 88. .88 88 88. .88 +# M .MM `88888P8 dP `88888P8 +# MMMMMMMMMMM + + +def main_get_debug_data(suppress_popup=False): + """ + Collect up and display the data needed to file GitHub issues. + This function will place the information on the clipboard. + You MUST paste the information from the clipboard prior to existing your application (except on Windows). + :param suppress_popup: If True no popup window will be shown. The string will be only returned, not displayed + :type suppress_popup: (bool) + :returns: String containing the information to place into the GitHub Issue + :rtype: (str) + """ + message = get_versions() + clipboard_set(message) + + if not suppress_popup: + popup_scrolled('*** Version information copied to your clipboard. Paste into your GitHub Issue. ***\n', + message, title='Select and copy this info to your GitHub Issue', keep_on_top=True, size=(100, 10)) + + return message + + +# ..######...##........#######..########.....###....##......... +# .##....##..##.......##.....##.##.....##...##.##...##......... +# .##........##.......##.....##.##.....##..##...##..##......... +# .##...####.##.......##.....##.########..##.....##.##......... +# .##....##..##.......##.....##.##.....##.#########.##......... +# .##....##..##.......##.....##.##.....##.##.....##.##......... +# ..######...########..#######..########..##.....##.########... +# ..######..########.########.########.########.####.##....##..######....######. +# .##....##.##..........##.......##.......##.....##..###...##.##....##..##....## +# .##.......##..........##.......##.......##.....##..####..##.##........##...... +# ..######..######......##.......##.......##.....##..##.##.##.##...####..######. +# .......##.##..........##.......##.......##.....##..##..####.##....##........## +# .##....##.##..........##.......##.......##.....##..##...###.##....##..##....## +# ..######..########....##.......##.......##....####.##....##..######....######. + + +def _global_settings_get_ttk_scrollbar_info(): + """ + This function reads the ttk scrollbar settings from the global PySimpleGUI settings file. + Each scrollbar setting is stored with a key that's a TUPLE, not a normal string key. + The settings are for pieces of the scrollbar and their associated piece of the PySimpleGUI theme. + + The whole ttk scrollbar feature is based on mapping parts of the scrollbar to parts of the PySimpleGUI theme. + That is what the ttk_part_mapping_dict does, maps between the two lists of items. + For example, the scrollbar arrow color may map to the theme input text color. + + """ + global ttk_part_mapping_dict, DEFAULT_TTK_THEME + for ttk_part in TTK_SCROLLBAR_PART_LIST: + value = pysimplegui_user_settings.get(json.dumps(('-ttk scroll-', ttk_part)), ttk_part_mapping_dict[ttk_part]) + ttk_part_mapping_dict[ttk_part] = value + + DEFAULT_TTK_THEME = pysimplegui_user_settings.get('-ttk theme-', DEFAULT_TTK_THEME) + + + + +def main_global_get_screen_snapshot_symcode(): + pysimplegui_user_settings = UserSettings(filename=DEFAULT_USER_SETTINGS_PYSIMPLEGUI_FILENAME, path=DEFAULT_USER_SETTINGS_PYSIMPLEGUI_PATH) + + settings = pysimplegui_user_settings.read() + + screenshot_keysym = '' + for i in range(4): + keysym = settings.get(json.dumps(('-snapshot keysym-', i)), '') + if keysym: + screenshot_keysym += "<{}>".format(keysym) + + screenshot_keysym_manual = settings.get('-snapshot keysym manual-', '') + + # print('BINDING INFO!', screenshot_keysym, screenshot_keysym_manual) + if screenshot_keysym_manual: + return screenshot_keysym_manual + elif screenshot_keysym: + return screenshot_keysym + return '' + + +def main_global_pysimplegui_settings_erase(): + """ + *** WARNING *** + Deletes the PySimpleGUI settings file without asking for verification + + + """ + print('********** WARNING - you are deleting your PySimpleGUI settings file **********') + print('The file being deleted is:', pysimplegui_user_settings.full_filename) + + +def main_watermark_on(): + pysimplegui_user_settings.set('-watermark5-', False) + pysimplegui_user_settings.save() + __W0jqOX() + + +def main_watermark_off(): + pysimplegui_user_settings.set('-watermark5-', True) + pysimplegui_user_settings.save() + __W0jqOX() + +# ..######..########..##....##....##.....##.########.##.......########. +# .##....##.##.....##.##...##.....##.....##.##.......##.......##.....## +# .##.......##.....##.##..##......##.....##.##.......##.......##.....## +# ..######..##.....##.#####.......#########.######...##.......########. +# .......##.##.....##.##..##......##.....##.##.......##.......##....... +# .##....##.##.....##.##...##.....##.....##.##.......##.......##....... +# ..######..########..##....##....##.....##.########.########.##....... + + +def main_sdk_help(): + """ + Display a window that will display the docstrings for each PySimpleGUI Element and the Window object + + """ + online_help_links = { + 'Button': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/button', + 'ButtonMenu': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/button_menu', + 'Canvas': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/canvas', + 'Checkbox': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/checkbox', + 'Column': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/column/', + 'Combo': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/combo', + 'Frame': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/frame', + 'Graph': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/graph', + 'HorizontalSeparator': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/horizontal_separator', + 'Image': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/image', + 'Input': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/input', + 'Listbox': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/listbox', + 'Menu': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/menu', + 'MenubarCustom': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/menubar_custom', + 'Multiline': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/multiline', + 'OptionMenu': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/option_menu', + 'Output': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/output', + 'Pane': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/pane', + 'ProgressBar': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/progress_bar', + 'Radio': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/radio', + 'Sizegrip': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/sizegrip', + 'Slider': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/slider', + 'Spin': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/spin', + 'StatusBar': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/status_bar', + 'Tab': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/tab', + 'TabGroup': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/tab_group', + 'Table': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/table', + 'Text': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/text', + 'Titlebar': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/titlebar', + 'Tree': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/tree', + 'VerticalSeparator': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/elements/vertical_separator', + 'Window': r'https://docs.pysimplegui.com/en/latest/call_reference/tkinter/window', + } + + NOT_AN_ELEMENT = 'Not An Element' + element_classes = Element.__subclasses__() + element_names = {element.__name__: element for element in element_classes} + element_names['Window'] = Window + element_classes.append(Window) + element_arg_default_dict, element_arg_default_dict_update = {}, {} + vars3 = [m for m in inspect.getmembers(sys.modules[__name__])] + + functions = [m for m in inspect.getmembers(sys.modules[__name__], inspect.isfunction)] + functions_names_lower = [f for f in functions if f[0][0].islower()] + functions_names_upper = [f for f in functions if f[0][0].isupper()] + functions_names = sorted(functions_names_lower) + sorted(functions_names_upper) + + for element in element_classes: + # Build info about init method + args = inspect.getfullargspec(element.__init__).args[1:] + defaults = inspect.getfullargspec(element.__init__).defaults + # print('------------- {element}----------') + # print(args) + # print(defaults) + if len(args) != len(defaults): + diff = len(args) - len(defaults) + defaults = ('NO DEFAULT',) * diff + defaults + args_defaults = [] + for i, a in enumerate(args): + args_defaults.append((a, defaults[i])) + element_arg_default_dict[element.__name__] = args_defaults + + # Build info about update method + try: + args = inspect.getfullargspec(element.update).args[1:] + defaults = inspect.getfullargspec(element.update).defaults + if args is None or defaults is None: + element_arg_default_dict_update[element.__name__] = (('', ''),) + continue + if len(args) != len(defaults): + diff = len(args) - len(defaults) + defaults = ('NO DEFAULT',) * diff + defaults + args_defaults = [] + for i, a in enumerate(args): + args_defaults.append((a, defaults[i])) + element_arg_default_dict_update[element.__name__] = args_defaults if len(args_defaults) else (('', ''),) + except Exception as e: + pass + + # Add on the pseudo-elements + element_names['MenubarCustom'] = MenubarCustom + element_names['Titlebar'] = Titlebar + + buttons = [[B(e, pad=(0, 0), size=(22, 1), font='Courier 10')] for e in sorted(element_names.keys())] + buttons += [[B('Func Search', pad=(0, 0), size=(22, 1), font='Courier 10')]] + button_col = Col(buttons, vertical_alignment='t') + mline_col = Column([[Multiline(size=(100, 46), key='-ML-', write_only=True, reroute_stdout=True, font='Courier 10', expand_x=True, expand_y=True)], + [T(size=(80, 1), font='Courier 10 underline', k='-DOC LINK-', enable_events=True)]], pad=(0, 0), expand_x=True, expand_y=True, vertical_alignment='t') + layout = [[button_col, mline_col]] + layout += [[CBox('Summary Only', enable_events=True, k='-SUMMARY-'), CBox('Display Only PEP8 Functions', default=True, k='-PEP8-')]] + # layout = [[Column(layout, scrollable=True, p=0, expand_x=True, expand_y=True, vertical_alignment='t'), Sizegrip()]] + layout += [[Button('Exit', size=(15, 1)), Sizegrip()]] + + window = Window('SDK API Call Reference', layout, resizable=True, use_default_focus=False, keep_on_top=True, icon=EMOJI_BASE64_THINK, finalize=True, + right_click_menu=MENU_RIGHT_CLICK_EDITME_EXIT) + window['-DOC LINK-'].set_cursor('hand1') + online_help_link = '' + ml = window['-ML-'] + current_element = '' + try: + while True: # Event Loop + event, values = window.read() + if event in (WIN_CLOSED, 'Exit'): + break + if event == '-DOC LINK-': + if webbrowser_available and online_help_link: + webbrowser.open_new_tab(online_help_link) + if event == '-SUMMARY-': + event = current_element + + if event in element_names.keys(): + current_element = event + window['-ML-'].update('') + online_help_link = online_help_links.get(event, '') + window['-DOC LINK-'].update(online_help_link) + if not values['-SUMMARY-']: + elem = element_names[event] + ml.print(pydoc.help(elem)) + # print the aliases for the class + ml.print('\n--- Shortcut Aliases for Class ---') + for v in vars3: + if elem == v[1] and elem.__name__ != v[0]: + print(v[0]) + ml.print('\n--- Init Parms ---') + else: + elem = element_names[event] + if inspect.isfunction(elem): + ml.print('Not a class...It is a function', background_color='red', text_color='white') + else: + element_methods = [m[0] for m in inspect.getmembers(Element, inspect.isfunction) if not m[0].startswith('_') and not m[0][0].isupper()] + methods = inspect.getmembers(elem, inspect.isfunction) + methods = [m[0] for m in methods if not m[0].startswith('_') and not m[0][0].isupper()] + + unique_methods = [m for m in methods if m not in element_methods and not m[0][0].isupper()] + + properties = inspect.getmembers(elem, lambda o: isinstance(o, property)) + properties = [p[0] for p in properties if not p[0].startswith('_')] + ml.print('--- Methods ---', background_color='red', text_color='white') + ml.print('\n'.join(methods)) + ml.print('--- Properties ---', background_color='red', text_color='white') + ml.print('\n'.join(properties)) + if elem != NOT_AN_ELEMENT: + if issubclass(elem, Element): + ml.print('Methods Unique to This Element', background_color='red', text_color='white') + ml.print('\n'.join(unique_methods)) + ml.print('========== Init Parms ==========', background_color='#FFFF00', text_color='black') + elem_text_name = event + for parm, default in element_arg_default_dict[elem_text_name]: + ml.print('{:18}'.format(parm), end=' = ') + ml.print(default, end=',\n') + if elem_text_name in element_arg_default_dict_update: + ml.print('========== Update Parms ==========', background_color='#FFFF00', text_color='black') + for parm, default in element_arg_default_dict_update[elem_text_name]: + ml.print('{:18}'.format(parm), end=' = ') + ml.print(default, end=',\n') + ml.set_vscroll_position(0) # scroll to top of multoline + elif event == 'Func Search': + search_string = popup_get_text('Search for this in function list:', keep_on_top=True) + if search_string is not None: + online_help_link = '' + window['-DOC LINK-'].update('') + ml.update('') + for f_entry in functions_names: + f = f_entry[0] + if search_string in f.lower() and not f.startswith('_'): + if (values['-PEP8-'] and not f[0].isupper()) or not values['-PEP8-']: + if values['-SUMMARY-']: + ml.print(f) + else: + ml.print('=========== ' + f + '===========', background_color='#FFFF00', text_color='black') + ml.print(pydoc.help(f_entry[1])) + ml.set_vscroll_position(0) # scroll to top of multoline + except Exception as e: + _error_popup_with_traceback('Exception in SDK reference', e) + window.close() + + +# oo +# +# 88d8b.d8b. .d8888b. dP 88d888b. +# 88'`88'`88 88' `88 88 88' `88 +# 88 88 88 88. .88 88 88 88 +# dP dP dP `88888P8 dP dP dP +# +# +# M""MMM""MMM""M oo dP +# M MMM MMM M 88 +# M MMP MMP M dP 88d888b. .d888b88 .d8888b. dP dP dP +# M MM' MM' .M 88 88' `88 88' `88 88' `88 88 88 88 +# M `' . '' .MM 88 88 88 88. .88 88. .88 88.88b.88' +# M .d .dMMM dP dP dP `88888P8 `88888P' 8888P Y8P +# MMMMMMMMMMMMMM +# +# MP""""""`MM dP dP dP +# M mmmmm..M 88 88 88 +# M. `YM d8888P .d8888b. 88d888b. d8888P .d8888b. 88d888b. .d8888b. 88d888b. .d8888b. +# MMMMMMM. M 88 88' `88 88' `88 88 Y8ooooo. 88' `88 88ooood8 88' `88 88ooood8 +# M. .MMM' M 88 88. .88 88 88 88 88 88 88. ... 88 88. ... +# Mb. .dM dP `88888P8 dP dP `88888P' dP dP `88888P' dP `88888P' +# MMMMMMMMMMM + + + +def _main_switch_theme(): + layout = [ + [Text('Click a look and feel color to see demo window')], + [Listbox(values=theme_list(), + size=(20, 20), key='-LIST-')], + [Button('Choose'), Button('Cancel')]] + + window = Window('Change Themes', layout) + + event, values = window.read(close=True) + + if event == 'Choose': + theme_name = values['-LIST-'][0] + theme(theme_name) + + + +def _create_main_window(): + """ + Creates the Home Window + + :return: The Home window + :rtype: Window + """ + # global version + # version = __version() + ver = version.split(' ')[0] + + # ------ Menu Definition ------ # + menu_def = [['&File', ['!&Open', '&Save::savekey', '---', '&Properties', 'E&xit']], + ['&Edit', ['&Paste', ['Special', 'Normal', '!Disabled'], 'Undo'], ], + ['&Debugger', ['Popout', 'Launch Debugger']], + ['!&Disabled', ['Popout', 'Launch Debugger']], + ['&Toolbar', ['Command &1', 'Command &2', 'Command &3', 'Command &4']], + ['&Help', '&About...'], ] + + button_menu_def = ['unused', ['&Paste', ['Special', 'Normal', '!Disabled'], 'Undo', 'Exit'], ] + + right_click_keys_menu = [[], ['!&Click', '&Menu', 'E&xit']] + + treedata = TreeData() + + treedata.Insert("", '_A_', 'Tree Item 1', [1, 2, 3], ) + treedata.Insert("", '_B_', 'B', [4, 5, 6], ) + treedata.Insert("_A_", '_A1_', 'Sub Item 1', ['can', 'be', 'anything'], ) + treedata.Insert("", '_C_', 'C', [], ) + treedata.Insert("_C_", '_C1_', 'C1', ['or'], ) + treedata.Insert("_A_", '_A2_', 'Sub Item 2', [None, None]) + treedata.Insert("_A1_", '_A3_', 'A30', ['getting deep']) + treedata.Insert("_C_", '_C2_', 'C2', ['nothing', 'at', 'all']) + + for i in range(100): + treedata.Insert('_C_', i, i, []) + + frame1 = [ + [Input('Input Text', size=(25, 1)), ], + [Multiline(size=(30, 5), default_text='Multiline Input')], + ] + + frame2 = [ + [Listbox(['Listbox 1', 'Listbox 2', 'Listbox 3'], select_mode=SELECT_MODE_EXTENDED, size=(20, 5), no_scrollbar=True), + Spin([1, 2, 3, 'a', 'b', 'c'], initial_value='a', size=(4, 3), wrap=True)], + [Combo(['Combo item %s' % i for i in range(5)], size=(20, 3), default_value='Combo item 2', key='-COMBO1-', )], + [Combo(['Combo item %s' % i for i in range(5)], size=(20, 3), font='Courier 14', default_value='Combo item 2', key='-COMBO2-', )], + ] + + frame3 = [ + [Checkbox('Checkbox1', True, k='-CB1-'), Checkbox('Checkbox2', k='-CB2-')], + [Radio('Radio Button1', 1, key='-R1-'), Radio('Radio Button2', 1, default=True, key='-R2-', tooltip='Radio 2')] + ] + + frame4 = [ + [Slider(range=(0, 100), orientation='v', size=(7, 15), default_value=40, key='-SLIDER1-'), + Slider(range=(0, 100), orientation='h', size=(11, 15), default_value=40, key='-SLIDER2-'), ], + ] + matrix = [[str(x * y) for x in range(1, 5)] for y in range(1, 8)] + + frame5 = [vtop([ + Table(values=matrix, headings=matrix[0], + auto_size_columns=False, display_row_numbers=True, change_submits=False, justification='right', header_border_width=4, + # header_relief=RELIEF_GROOVE, + num_rows=10, alternating_row_color='lightblue', key='-TABLE-', + col_widths=[5, 5, 5, 5]), + Tree(data=treedata, headings=['col1', 'col2', 'col3'], col_widths=[5, 5, 5, 5], change_submits=True, auto_size_columns=False, header_border_width=4, + # header_relief=RELIEF_GROOVE, + num_rows=8, col0_width=8, key='-TREE-', show_expanded=True)])] + + pop_test_tab_layout = [ + [Image(EMOJI_BASE64_HAPPY_IDEA), T('Popup tests? Good idea!')], + [B('Popup', k='P '), B('No Titlebar', k='P NoTitle'), B('Not Modal', k='P NoModal'), B('Non Blocking', k='P NoBlock'), B('Auto Close', k='P AutoClose')], + [T('"Get" popups too!')], + [B('Get File'), B('Get Folder'), B('Get Date'), B('Get Text')]] + + GRAPH_SIZE = (500, 200) + graph_elem = Graph(GRAPH_SIZE, (0, 0), GRAPH_SIZE, key='+GRAPH+') + + frame6 = [[VPush()], [graph_elem]] + + # global_settings_tab_layout = [[T('Settings Filename:'), T(pysimplegui_user_settings.full_filename, s=(50, 2))], + # [T('Settings Dictionary:'), MLine(pysimplegui_user_settings, size=(50, 8), write_only=True)],] + + themes_tab_layout = [[T('You can see a preview of the themes, the color swatches, or switch themes for this window')], + [T('If you want to change the default theme for PySimpleGUI, use the Global Settings')], + [B('Themes'), B('Theme Swatches'), B('Switch Themes')], + [T('Test of see-through mode for windows:'), B('See-through Mode', tooltip='Make the background transparent', pad=(1, 0)),]] + + tab_help_layout = [[B('SDK Reference Window')], + [B('Online 5.0 Docs')], + [B(image_data=UDEMY_ICON, key='-UDEMY-')]] + + + # ------------------------- Elements Tab ------------------------- + + + tab_elem_graph = Tab('Graph\n', frame6, tooltip='Graph is in here', title_color='red') + tab_elem_basic = Tab('CB, Radio\nList, Combo', + [[Frame('Multiple Choice Group', frame2, title_color='#FFFFFF', tooltip='Checkboxes, radio buttons, etc', vertical_alignment='t', ), + Column([[Frame('Binary Choice Group', frame3, title_color='#FFFFFF', tooltip='Binary Choice', vertical_alignment='t', ), ], + [ButtonMenu('ButtonMenu', button_menu_def, pad=(1, 0), key='-BMENU-', tearoff=True, disabled_text_color='yellow'), + B('ttk Button', use_ttk_buttons=True, tooltip='This is a TTK Button', pad=(1, 0)),]])]]) + # tab3 = Tab('Table and Tree', [[Frame('Structured Data Group', frame5, title_color='red', element_justification='l')]], tooltip='tab 3', title_color='red', ) + tab_elem_table_tree = Tab('Table,\nTree', [[Column(frame5, element_justification='l', vertical_alignment='t')]], tooltip='tab 3', title_color='red', k='-TAB TABLE-') + tab_elem_mline_sliders = Tab('Multiline,\nSliders', [[Frame('TextInput', frame1, title_color='blue'), Frame('Variable Choice Group', frame4, title_color='blue')]], tooltip='tab 5', title_color='red', k='-TAB TEXT-') + # tab6 = Tab('Udemy,\nSponsor', frame7, k='-TAB SPONSOR-') + tab_elem_popups = Tab('Popups\n', pop_test_tab_layout, k='-TAB POPUP-') + tab_themes = Tab('Themes\n', themes_tab_layout, k='-TAB THEMES-') + # tab9 = Tab('Global\nSettings', global_settings_tab_layout, k='-TAB GlOBAL SETTINGS-') + tab_help = Tab('HELP\nDocs', tab_help_layout, k='-TAB HELP-') + + tab_elem_layout = [[Push(), Text('These sample controls show what\'s possible with PySimpleGUI'), Push()], + [TabGroup([[tab_elem_graph, tab_elem_basic, tab_elem_table_tree, tab_elem_mline_sliders, tab_elem_popups]], key='-TAB_GROUP-', expand_x=True, expand_y=True)]] + + tab_elem = Tab('Elements\n', tab_elem_layout, key='-TAB ELEMENTS-', expand_x=True, expand_y=True) + + # ------------------------- Settings Tab ------------------------- + + tab_settings_layout = [[Text('Open the Global PySimpleGUI Settings Window')], + [B('Global\nSettings', size=(8,2), k='-GLOBAL SETTINGS-', tooltip='Settings across all PySimpleGUI programs'),]] + + tab_settings = Tab('Settings\n', tab_settings_layout, key='-TAB SETTINGS-', expand_x=True, expand_y=True) + + # ------------------------- GitHub Tab ------------------------- + + tab_github_layout = [[B('Open\nGitHub Issue', size=(10, 2), k='-OPEN GITHUB-'), + B('Versions\nfor GitHub', s=(10, 2), k='-VERSIONS-'), ]] + + tab_github = Tab('Report a\nProblem', tab_github_layout, key='-TAB GITHUB-', expand_x=True, expand_y=True) + + # ------------------------- Upgrade Service Tab ------------------------- + + upgrade_recommendation_tab_layout = [[T('Upgrade Service Message', font='_ 14')], + [T('Recommended Version:', font='_ 14'), T(pysimplegui_user_settings.get('-upgrade recommendation-',''))], + [T('Importance:', font='_ 13'), T(pysimplegui_user_settings.get('-severity level-',''))], + [T(pysimplegui_user_settings.get('-upgrade message 1-',''), k='-UPGRADE MESSAGE1-', enable_events=True)], + [T(pysimplegui_user_settings.get('-upgrade message 2-',''), k='-UPGRADE MESSAGE2-', enable_events=True)], + [Checkbox('Show Only Critical Messages at Startup', default=pysimplegui_user_settings.get('-upgrade show only critical-', False), key='-UPGRADE SHOW ONLY CRITICAL-', enable_events=True)], + [Button('Show Notification Again')], + ] + tab_upgrade = Tab('Service\nMessages',upgrade_recommendation_tab_layout, expand_x=True) + + # ------------------------- License Tab ------------------------- + + + # ----------------------------------------------------------------------------- + + """ + _| _| _|_|_|_|_| _| + _| _|_|_| _| _|_|_| _|_|_| _|_|_| + _| _| _| _| _| _| _| _| _|_| + _| _| _| _| _| _| _| _| _|_| + _|_|_|_| _| _|_|_| _| _|_|_| _|_|_| _|_|_| + """ + + + + # ------------------------- Developer Key Tab ------------------------- + + """ + _|_|_| _| + _| _| _|_| _| _| _|_| _| _|_| _|_|_| _|_| _| _|_| + _| _| _|_|_|_| _| _| _|_|_|_| _| _| _| _| _| _|_|_|_| _|_| + _| _| _| _| _| _| _| _| _| _| _| _| _| + _|_|_| _|_|_| _| _|_|_| _| _|_| _|_|_| _|_|_| _| + _| + _| + """ + if not __WERWtI() and __Z5USA5F(__jyvfc_from_settings()): + licensee_name = __4stIxwvN(__jyvfc_from_settings()) + else: + licensee_name = 'No Developer License Found' + + if not __WERWtI(): + license_image = LICENSE_GRAPHIC_BASE64 + else: + licensee_name = 'In Trial Period' + license_image = TRIAL_GRAPHIC_BASE64 + + if __yXwXQIa(__jyvfc()) != var_ra7PFKJR: + dist_key_in_use = False + else: + dist_key_in_use = True + + + + top_text_column_layout = [[ T('Licensed To:', s=18, font='_ 12'), T(licensee_name, font='_ 12')], + [T('License Type:', s=18, font='_ 12'), T(f'Developer {__N8Qgq6kx()}', font='_ 12')]] + # if running a distribution key add a blank line so that switching between tabs looks the same + if dist_key_in_use: + top_text_column_layout += [[T(font='_ 12')]] + + dev_license_layout = [[Image(license_image), Column(top_text_column_layout)]] + if __WERWtI(): + dev_license_layout += [[T('You are'), T(__mxLkbt5w()), T('days into your Trial Period with'), + Text(__VEvadn7_public(), k='-TRIAL PERIOD REMAINING-'), T('days remaining')]] + key_value = __jyvfc_from_settings() + if __Z5USA5F(key_value) and not dist_key_in_use: + if __kwjZJho(): + dev_license_layout += [[T('Expiration: Commercial Developer Keys Do Not Expire')]] + else: + license_expires_in = __hitn79sj(key_value) + if license_expires_in > 0: + dev_license_layout += [[T('Expiration: License expires in'), T(license_expires_in), T('Days')]] + else: + dev_license_layout += [[T('Expiration: License expired'), T(0 - license_expires_in), T('Days Ago'), ]] + else: + if dist_key_in_use: + dev_license_layout += [[T()]] + key_value = '' + + if __WERWtI() or not __Z5USA5F(__jyvfc_from_settings()): + license_button = [B('Register', key='-REGISTER1-', button_color='white on purple')] + else: + license_button = [] + + + dev_license_layout += [[T('Enter your Developer Key here')], + [Multiline(key_value, size=(None, 8), font='Courier 8', key='-LICENSE KEY-', expand_x=True, expand_y=True)], + [Push(), Button('Paste', key='-PASTE KEY-'), Button('Clear', key='-CLEAR KEY-'), Button('Install', key='-INSTALL DEV LICENSE-')] + license_button] + + tab_license_dev = Tab('License\nKey', dev_license_layout, expand_x=True) + + # ------------------------- Distribution Key Tab ------------------------- + + """ + _|_|_| _| _| _| _| _| _| + _| _| _|_|_| _|_|_|_| _| _|_| _|_|_| _| _| _|_|_|_| _|_| _|_|_| + _| _| _| _|_| _| _|_| _| _| _| _| _| _| _| _| _| _| _| + _| _| _| _|_| _| _| _| _| _| _| _| _| _| _| _| _| _| + _|_|_| _| _|_|_| _|_| _| _| _|_|_| _|_|_| _|_| _| _|_| _| _| + """ + + key_value = 'Distribution license is not in use.' + if __yXwXQIa(__jyvfc()) != var_ra7PFKJR: + dist_key_in_use = False + else: + dist_key_in_use = True + license_dist_version = __g9Z4DAoG() + key_value = __jyvfc() + + if not __WERWtI(): + licensee_name = __4stIxwvN() + license_image = LICENSE_GRAPHIC_BASE64 + + if not dist_key_in_use: + licensee_name = 'Distribution key not in use' + + # if dist_key_in_use: + top_text_column_layout = [[ T('Licensed To:', s=18, font='_ 12'), T(licensee_name, font='_ 12')], + [T('License Type:', s=18, font='_ 12'), T('Distribution', font='_ 12')] + ] + # else: + # top_text_column_layout = [[T('No Distribution Key is in use', font='_ 12')]] + + license_dist_version = __g9Z4DAoG() + + if license_dist_version: + version_matches = __XQWzD5L3() + valid = 'Valid' if version_matches else 'INVALID VERSION!' + top_text_column_layout += [[T('Distribution Version:', s=18, font=' 12'), T(license_dist_version, font='_ 12')]] + + + dist_license_layout = [[Image(license_image), Column(top_text_column_layout)], + [Text('Expiration: Distribution Licenses do not expire')], + [Multiline(key_value, size=(None, 8), font='Courier 8', key='-DIST LICENSE KEY-', expand_x=True, expand_y=True, disabled=True)], + # [Text(key_value, size=(90, 8), font='Courier 8', key='-LICENSE KEY-', expand_x=True, expand_y=True, )], + ] + + + tab_license_dist = Tab('Distribution\nKey', dist_license_layout, expand_x=True) + + # ------------------------- VERSIONS Tab ------------------------- + + """ + _| _| _| + _| _| _|_| _| _|_| _|_|_| _|_| _|_|_| _|_|_| + _| _| _|_|_|_| _|_| _|_| _| _| _| _| _| _|_| + _| _| _| _| _|_| _| _| _| _| _| _|_| + _| _|_|_| _| _|_|_| _| _|_| _| _| _|_|_| + """ + + + def VerLine(version, description, justification='r', size=(40, 1)): + return [T(version, justification=justification, font='Any 10', text_color='yellow', size=size, pad=(0, 0)), T(description, font='Any 10', pad=(0, 0))] + + if __hEb4nk(): + security_emoji = EMOJI_BASE64_HAPPY_BIG_SMILE + header_text = Text('PySimpleGUI Home', font='ANY 14', tooltip='My tooltip', key='-TEXT1-') + else: + security_emoji = EMOJI_BASE64_SCREAM + header_text = Text('PySimpleGUI Home - SUSPICIOUS CODE', font='ANY 14', background_color='red', text_color='white', key='-TEXT1-') + + if __WERWtI(): + license_button = B('Register', key='-REGISTER2-', button_color='white on purple') + else: + license_button = T("") + + license_licensee = __4stIxwvN() + if license_licensee: + licensee_row = [Text(license_licensee, s=40, font='_ 10', justification='r', p=0, text_color='yellow'), Text('Licensee', font='_ 10', p=0)] + else: + licensee_row = [] + + license_licensee_company = __KsDrh() + if license_licensee_company: + licensee_company_row = [Text(license_licensee_company, s=40, font='_ 10', justification='r', p=0, text_color='yellow'), Text('Company', font='_ 10', p=0)] + else: + licensee_company_row = [] + + + + license_type = __yXwXQIa(__jyvfc()) + if license_type is None: + license_type = 'Trial Period' + license_type_row = [Text(license_type, s=40, font='_ 10', justification='r', p=0, text_color='yellow'), Text('License Type', font='_ 10', p=0)] + + + + button_row = license_button + + + if running_mac(): + platform_name = 'Mac' + elif running_windows(): + platform_name = 'Windows' + elif running_linux(): + platform_name = 'Linux' + else: + platform_name= 'Unknown platorm' + + platform_ver = platform.platform() + + versions_left_col_layout = [ + [Push(), Text(f'{__N8Qgq6kx()} License', p=0, text_color='yellow', font='_ 16'), Push()], + licensee_row , + licensee_company_row, + license_type_row + [Push(), license_button], + VerLine(version, 'PySimpleGUI Version') + [B('Get Latest Maintanance Release', button_color='white on red', key='-INSTALL-')], + VerLine(__NDVJUf6(), 'Latest Maintanance Release Available'), + VerLine(execute_pip_get_pypi_package_version('pysimplegui'), 'Latest Official Release Version on PyPI'), + VerLine('{}.{}.{}'.format(sys.version_info.major, sys.version_info.minor, sys.version_info.micro,sys.version), 'Python Version', size=(40, 1)) + [Image(PYTHON_COLORED_HEARTS_BASE64, subsample=3, k='-PYTHON HEARTS-', enable_events=True, tooltip="Love Python? So do we!\nClick to be taken to the Python.org's download page.")], + VerLine(tclversion_detailed, 'detailed tkinter version'), + VerLine(os.path.dirname(os.path.abspath(__file__)), 'PySimpleGUI Location', size=(40, None)), + VerLine(sys.executable, 'Python Executable'), + VerLine(platform_name, 'Platform '), + VerLine(platform_ver, 'Platform Version')] + versions_right_col_layout = [ + # [license_button], + + [], + [], + ] + + # versions_tab_layout = [vtop([Column(versions_left_col_layout), Column(versions_right_col_layout)])] + versions_tab_layout = versions_left_col_layout + + tab_versions = Tab('Versions\n', versions_tab_layout, expand_x=True, expand_y=True) + + layout_top = [[Column([[Image(PSG5_LOGO), Image(security_emoji, enable_events=True, key='-LOGO-', tooltip='This is PySimpleGUI logo'), + Image(data=DEFAULT_BASE64_LOADING_GIF, enable_events=True, key='-IMAGE-'), + Push(), header_text, Push() + ]], pad=0)]] + + # layout_top = Column([ + # [Image(security_emoji, enable_events=True, key='-LOGO-', tooltip='This is PySimpleGUI logo'), + # Image(data=DEFAULT_BASE64_LOADING_GIF, enable_events=True, key='-IMAGE-'), + # Push(), header_text, Push() + # ], + # license_line, + # VerLine(ver, 'PySimpleGUI Version') + [ Image(HEART_3D_BASE64, subsample=4) if __hEb4nk() else Image(EMOJI_BASE64_SCREAM, subsample=2)], + # VerLine('{}.{}.{}'.format(sys.version_info.major, sys.version_info.minor, sys.version_info.micro,sys.version), 'Python Version', size=(40, 1)) + [Image(PYTHON_COLORED_HEARTS_BASE64, subsample=3, k='-PYTHON HEARTS-', enable_events=True)], + # VerLine(tclversion_detailed, 'detailed tkinter version'), + # VerLine(os.path.dirname(os.path.abspath(__file__)), 'PySimpleGUI Location', size=(40, None)), + # VerLine(sys.executable, 'Python Executable'), + # ], pad=0) + + # ------------------------- Bottom portion of Window (Tabs and Buttons) ------------------------- + + + + layout_bottom = [[Column([ + [B(SYMBOL_DOWN, pad=(0, 0), k='-HIDE TABS-'), + pin(Col([[TabGroup([[tab_versions, tab_elem, tab_settings, tab_github, tab_themes, tab_help, tab_upgrade, tab_license_dev, tab_license_dist]], key='-TAB GROUP TOP LEVEL-', expand_x=True, expand_y=True)]], k='-TAB GROUP COL-', expand_x=True, expand_y=True), expand_x=True, expand_y=True)]], pad=0, expand_x=True, expand_y=True)]] + + layout = [[]] + + if not theme_use_custom_titlebar(): + layout += [[Menu(menu_def, key='-MENU-', font='Courier 15', background_color='red', text_color='white', disabled_text_color='yellow', tearoff=True)]] + else: + layout += [[MenubarCustom(menu_def, key='-MENU-', font='Courier 15', bar_background_color=theme_background_color(), bar_text_color=theme_text_color(), + background_color='red', text_color='white', disabled_text_color='yellow')]] + + # layout += [[layout_top] + [ProgressBar(max_value=800, size=(20, 25), orientation='v', key='+PROGRESS+')]] + layout = layout_top + layout_bottom + + # ------------------------- Create the Window ------------------------- + + + window = Window('PySimpleGUI Home', layout, + right_click_menu=right_click_keys_menu, + resizable=True, + keep_on_top=False, + element_justification='left', # justify contents to the left + metadata='My window metadata', + finalize=True, + # grab_anywhere=True, + enable_close_attempted_event=True, + # print_event_values=True, + modal=False,) + + if 'http' in window['-UPGRADE MESSAGE1-'].get(): + window['-UPGRADE MESSAGE1-'].set_cursor('hand1') + if 'http' in window['-UPGRADE MESSAGE2-'].get(): + window['-UPGRADE MESSAGE2-'].set_cursor('hand1') + + window.timer_start(50, repeating=True) # Start a 50ms timer to drive the animated GIF + + window._see_through = False + return window + + +# M"""""`'"""`YM oo +# M mm. mm. M +# M MMM MMM M .d8888b. dP 88d888b. +# M MMM MMM M 88' `88 88 88' `88 +# M MMM MMM M 88. .88 88 88 88 +# M MMM MMM M `88888P8 dP dP dP +# MMMMMMMMMMMMMM + +def main(): + """ + The PySimpleGUI "Home" + """ + forced_modal = DEFAULT_MODAL_WINDOWS_FORCED + # set_options(force_modal_windows=True) + window = _create_main_window() + set_options(keep_on_top=True) + graph_elem = window['+GRAPH+'] + i = 0 + graph_figures = [] + # Don't use the debug window + # Print('', location=(0, 0), font='Courier 10', size=(100, 20), grab_anywhere=True) + # print(window.element_list()) + while True: # Event Loop + event, values = window.read(timeout=None) + if event != TIMEOUT_KEY and event != TIMER_KEY: + print(event, '\n', dict_to_string(values, indent=5)) + # Print(event, text_color='white', background_color='red', end='') + # Print(values) + if event == WIN_CLOSED or event == WIN_CLOSE_ATTEMPTED_EVENT or event == 'Exit' or (event == '-BMENU-' and values['-BMENU-'] == 'Exit'): + break + + # --------------------------------- Animations update --------------------------------- + # window['+PROGRESS+'].UpdateBar(i % 800) + window['-IMAGE-'].update_animation_no_buffering(DEFAULT_BASE64_LOADING_GIF, time_between_frames=50) + + + if event == 'Button': + window.Element('-TEXT1-').SetTooltip('NEW TEXT') + window.Element('-MENU-').Update(visible=True) + elif event == 'Popout': + show_debugger_popout_window() + elif event == 'Launch Debugger': + show_debugger_window() + elif event == 'About...': + popup('About this program...', 'You are looking at the Home Window for the PySimpleGUI module', version, keep_on_top=True, image=DEFAULT_BASE64_ICON) + elif event.startswith('See'): + window._see_through = not window._see_through + window.set_transparent_color(theme_background_color() if window._see_through else '') + elif event == '-INSTALL-': + __fCrXeT() + elif event == '-PASTE KEY-': + window['-LICENSE KEY-'].update(clipboard_get()) + elif event == '-CLEAR KEY-': + window['-LICENSE KEY-'].update('') + elif event == 'Popup': + popup('This is your basic popup', keep_on_top=True) + elif event == 'Get File': + popup_scrolled('Returned:', popup_get_file('Get File', keep_on_top=True)) + elif event == 'Get Folder': + popup_scrolled('Returned:', popup_get_folder('Get Folder', keep_on_top=True)) + elif event == 'Get Date': + popup_scrolled('Returned:', popup_get_date(keep_on_top=True)) + elif event == 'Get Text': + popup_scrolled('Returned:', popup_get_text('Enter some text', keep_on_top=True)) + elif event.startswith('-UDEMY-'): + webbrowser.open_new_tab(r'https://www.udemy.com/course/pysimplegui/') + elif event == 'Online 5.0 Docs': + if webbrowser_available: + webbrowser.open_new_tab(URL_DOCS) + elif event in ('-EMOJI-HEARTS-', '-HEART-', '-PYTHON HEARTS-'): + webbrowser.open_new_tab(r'https://www.python.org/downloads/') + elif event == 'Themes': + search_string = popup_get_text('Enter a search term or leave blank for all themes', 'Show Available Themes', keep_on_top=True) + if search_string is not None: + theme_previewer(search_string=search_string) + elif event == 'Theme Swatches': + theme_previewer_swatches() + elif event == 'Switch Themes': + window.close() + _main_switch_theme() + window = _create_main_window() + graph_elem = window['+GRAPH+'] + elif event == '-HIDE TABS-': + window['-TAB GROUP COL-'].update(visible=window['-TAB GROUP COL-'].metadata == True) + window['-TAB GROUP COL-'].metadata = not window['-TAB GROUP COL-'].metadata + window['-HIDE TABS-'].update(text=SYMBOL_UP if window['-TAB GROUP COL-'].metadata else SYMBOL_DOWN) + elif event == 'SDK Reference Window': + main_sdk_help() + elif event == '-GLOBAL SETTINGS-': + if main_global_pysimplegui_settings(): + theme(pysimplegui_user_settings.get('-theme-', OFFICIAL_PYSIMPLEGUI_THEME)) + window.close() + window = _create_main_window() + graph_elem = window['+GRAPH+'] + else: + Window('', layout=[[Multiline()]], alpha_channel=0).read(timeout=1, close=True) + elif event.startswith('P '): + if event == 'P ': + popup('Normal Popup - Modal', keep_on_top=True) + elif event == 'P NoTitle': + popup_no_titlebar('No titlebar', keep_on_top=True) + elif event == 'P NoModal': + set_options(force_modal_windows=False) + popup('Normal Popup - Not Modal', 'You can interact with main window menubar ', + 'but will have no effect immediately', 'button clicks will happen after you close this popup', modal=False, keep_on_top=True) + set_options(force_modal_windows=forced_modal) + elif event == 'P NoBlock': + popup_non_blocking('Non-blocking', 'The background window should still be running', keep_on_top=True) + elif event == 'P AutoClose': + popup_auto_close('Will autoclose in 3 seconds', auto_close_duration=3, keep_on_top=True) + elif event == '-VERSIONS-': + main_get_debug_data() + elif event == '-OPEN GITHUB-': + window.minimize() + main_open_github_issue() + window.normal() + elif event == 'Show Notification Again': + if not running_trinket(): + pysimplegui_user_settings.set('-upgrade info seen-', False) + __JSHZjnf() + elif event == '-UPGRADE SHOW ONLY CRITICAL-': + if not running_trinket(): + pysimplegui_user_settings.set('-upgrade show only critical-', values['-UPGRADE SHOW ONLY CRITICAL-']) + elif event == '-INSTALL DEV LICENSE-': + if values['-LICENSE KEY-']: + input_key = __r4JvJe6(values['-LICENSE KEY-']) + if not __Z5USA5F(input_key): + popup_quick_message('Bad License Key entered.', font='_ 30', background_color='red', text_color='white', auto_close_duration=2, auto_close=True, non_blocking=False) + window['-LICENSE KEY-'].update('') + elif __XZaHhQ8(input_key): + popup_quick_message('The license key provided has expired. Please enter a key that has not expired.', font='_ 30', background_color='red', text_color='white', auto_close_duration=2, auto_close=True, non_blocking=False) + elif __TqznhU(input_key): + popup_quick_message('Bad License - Cannot be a DISTRIBUTION License.', font='_ 30', background_color='red', text_color='white', auto_close_duration=2, auto_close=True, non_blocking=False) + window['-LICENSE KEY-'].update('') + elif not __kIzzxcy(input_key): + popup_quick_message('Bad License Key - Must be a DEVELOPER License.', font='_ 30', background_color='red', text_color='white', auto_close_duration=2, auto_close=True, non_blocking=False) + window['-LICENSE KEY-'].update('') + else: + pysimplegui_user_settings['-LICENSE KEY-'] = input_key + __Gw6qx1nM(exit_after_close=True) + else: + popup_quick_message('Blank key is not allowed.', font='_ 30', background_color='red', text_color='white', auto_close_duration=2, + auto_close=True, non_blocking=False) + elif event == '-UPGRADE MESSAGE1-' and 'http' in window['-UPGRADE MESSAGE1-'].get() and webbrowser_available: + webbrowser.open_new_tab(window['-UPGRADE MESSAGE2-'].get()) + elif event == '-UPGRADE MESSAGE2' and 'http' in window['-UPGRADE MESSAGE2-'].get() and webbrowser_available: + webbrowser.open_new_tab(window['-UPGRADE MESSAGE2-'].get()) + elif event == '-RUN TOOL-': + util_to_run = values[event] + scripts_folder = os.path.join(os.path.dirname(sys.executable), 'Scripts') + util_full_path = os.path.join(scripts_folder, util_to_run) + execute_command_subprocess(util_full_path, cwd=scripts_folder, wait=False) + elif event in ('-REGISTER1-', '-REGISTER2-'): + webbrowser.open_new_tab(var_aNG3uO) + + i += 1 + # _refresh_debugger() + print('event = ', event) + window.close() + set_options(force_modal_windows=forced_modal) + +# Make home be an alias for main +home = main + +# ------------------------ PEP8-ify The SDK ------------------------# + +ChangeLookAndFeel = change_look_and_feel +ConvertArgsToSingleString = convert_args_to_single_string +EasyPrint = easy_print +Print = easy_print +eprint = easy_print +sgprint = easy_print +PrintClose = easy_print_close +sgprint_close = easy_print_close +EasyPrintClose = easy_print_close +FillFormWithValues = fill_form_with_values +GetComplimentaryHex = get_complimentary_hex +ListOfLookAndFeelValues = list_of_look_and_feel_values +ObjToString = obj_to_string +ObjToStringSingleObj = obj_to_string_single_obj +OneLineProgressMeter = one_line_progress_meter +OneLineProgressMeterCancel = one_line_progress_meter_cancel +Popup = popup +PopupNoFrame = popup_no_titlebar +popup_no_frame = popup_no_titlebar +PopupNoBorder = popup_no_titlebar +popup_no_border = popup_no_titlebar +PopupAnnoying = popup_no_titlebar +popup_annoying = popup_no_titlebar +PopupAnimated = popup_animated +PopupAutoClose = popup_auto_close +PopupCancel = popup_cancel +PopupError = popup_error +PopupGetFile = popup_get_file +PopupGetFolder = popup_get_folder +PopupGetText = popup_get_text +PopupNoButtons = popup_no_buttons +PopupNoTitlebar = popup_no_titlebar +PopupNoWait = popup_non_blocking +popup_no_wait = popup_non_blocking +PopupNonBlocking = popup_non_blocking +PopupOK = popup_ok +PopupOKCancel = popup_ok_cancel +PopupQuick = popup_quick +PopupQuickMessage = popup_quick_message +PopupScrolled = popup_scrolled +PopupTimed = popup_auto_close +popup_timed = popup_auto_close +PopupYesNo = popup_yes_no + + +RGB = rgb +SetGlobalIcon = set_global_icon +SetOptions = set_options +sprint = popup_scrolled +ScrolledTextBox = popup_scrolled +TimerStart = timer_start +TimerStop = timer_stop +test = main +sdk_help = main_sdk_help + +pysimplegui_user_settings = UserSettings(filename=DEFAULT_USER_SETTINGS_PYSIMPLEGUI_FILENAME, path=DEFAULT_USER_SETTINGS_PYSIMPLEGUI_PATH) + +# ------------------------ Set the "Official PySimpleGUI Theme Colors" ------------------------ + + +theme(theme_global()) + + +#----------------------------------------------------------------------------------------- +""" + 888888P a8888a MP""""""`MM oo .8888b oo + 88' d8' ..8b M mmmmm..M 88 " + 88baaa. 88 .P 88 M. `YM 88d888b. .d8888b. .d8888b. dP 88aaa dP .d8888b. + `88 88 d' 88 MMMMMMM. M 88' `88 88ooood8 88' `"" 88 88 88 88' `"" + 88 dP Y8'' .8P M. .MMM' M 88. .88 88. ... 88. ... 88 88 88 88. ... + d88888P 88 Y8888P Mb. .dM 88Y888P' `88888P' `88888P' dP dP dP `88888P' + MMMMMMMMMMM 88 + dP + +""" + + +def main_global_pysimplegui_settings(): + """ + Window to set settings that will be used across all PySimpleGUI programs that choose to use them. + Use set_options to set the path to the folder for all PySimpleGUI settings. + + :return: True if settings were changed + :rtype: (bool) + """ + global DEFAULT_WINDOW_SNAPSHOT_KEY_CODE, ttk_part_mapping_dict, DEFAULT_TTK_THEME + + key_choices = tuple(sorted(tkinter_keysyms)) + + settings = pysimplegui_user_settings.read() + + editor_format_dict = { + 'pycharm': ' --line ', + 'notepad++': ' -n ', + 'sublime': ' :', + 'vim': ' + ', + 'wing': ' :', + 'visual studio': ' /command "edit.goto "', + 'atom': ' :', + 'spyder': ' ', + 'thonny': ' ', + 'pydev': ' :', + 'idle': ' '} + + tooltip = 'Format strings for some popular editors/IDEs:\n' + \ + 'PyCharm - --line \n' + \ + 'Notepad++ - -n \n' + \ + 'Sublime - :\n' + \ + 'vim - + \n' + \ + 'wing - :\n' + \ + 'Visual Studio - /command "edit.goto "\n' + \ + 'Atom - :\n' + \ + 'Spyder - \n' + \ + 'Thonny - \n' + \ + 'PyDev - :\n' + \ + 'IDLE - \n' + + tooltip_file_explorer = 'This is the program you normally use to "Browse" for files\n' + \ + 'For Windows this is normally "explorer". On Linux "nemo" is sometimes used.' + + tooltip_theme = 'The normal default theme for PySimpleGUI is "Dark Blue 13\n' + \ + 'If you do not call theme("theme name") by your program to change the theme, then the default is used.\n' + \ + 'This setting allows you to set the theme that PySimpleGUI will use for ALL of your programs that\n' + \ + 'do not set a theme specifically.' + + # ------------------------- TTK Tab ------------------------- + ttk_scrollbar_tab_layout = [[T('Default TTK Theme', font='_ 16'), Combo([], DEFAULT_TTK_THEME, readonly=True, size=(20, 10), key='-TTK THEME-', font='_ 16')], + [HorizontalSeparator()], + [T('TTK Scrollbar Settings', font='_ 16')]] + + t_len = max([len(l) for l in TTK_SCROLLBAR_PART_LIST]) + ttk_layout = [[]] + for key, item in ttk_part_mapping_dict.items(): + if key in TTK_SCROLLBAR_PART_THEME_BASED_LIST: + ttk_layout += [[T(key, s=t_len, justification='r'), Combo(PSG_THEME_PART_LIST, default_value=settings.get(('-ttk scroll-', key), item), key=('-TTK SCROLL-', key))]] + elif key in (TTK_SCROLLBAR_PART_ARROW_WIDTH, TTK_SCROLLBAR_PART_SCROLL_WIDTH): + ttk_layout += [[T(key, s=t_len, justification='r'), Combo(list(range(100)), default_value=settings.get(('-ttk scroll-', key), item), key=('-TTK SCROLL-', key))]] + elif key == TTK_SCROLLBAR_PART_RELIEF: + ttk_layout += [[T(key, s=t_len, justification='r'), Combo(RELIEF_LIST, default_value=settings.get(('-ttk scroll-', key), item), readonly=True, key=('-TTK SCROLL-', key))]] + + ttk_scrollbar_tab_layout += ttk_layout + ttk_scrollbar_tab_layout += [[Button('Reset Scrollbar Settings'), Button('Test Scrollbar Settings')]] + ttk_tab = Tab('TTK', ttk_scrollbar_tab_layout) + + layout = [[T('Global PySimpleGUI Settings', text_color=theme_button_color()[0], background_color=theme_button_color()[1],font='_ 18', expand_x=True, justification='c')]] + + # ------------------------- Interpreter Tab ------------------------- + + + interpreter_tab = Tab('Python Interpreter', + [[T('Normally leave this blank')], + [T('Command to run a python program:'), In(settings.get('-python command-', ''), k='-PYTHON COMMAND-', enable_events=True), FileBrowse()]], font='_ 16', expand_x=True) + + # ------------------------- Editor Tab ------------------------- + + editor_tab = Tab('Editor Settings', + [[T('Command to invoke your editor:'), In(settings.get('-editor program-', ''), k='-EDITOR PROGRAM-', enable_events=True), FileBrowse()], + [T('String to launch your editor to edit at a particular line #.')], + [T('Use tags to specify the string')], + [T('that will be executed to edit python files using your editor')], + [T('Edit Format String (hover for tooltip)', tooltip=tooltip), + In(settings.get('-editor format string-', ' '), k='-EDITOR FORMAT-', tooltip=tooltip)]], font='_ 16', expand_x=True) + + # ------------------------- Explorer Tab ------------------------- + + explorer_tab = Tab('Explorer Program', + [[In(settings.get('-explorer program-', ''), k='-EXPLORER PROGRAM-', tooltip=tooltip_file_explorer)]], font='_ 16', expand_x=True, tooltip=tooltip_file_explorer) + + # ------------------------- Debugging Tab ------------------------- + + debugging_tab = Tab('Debugging', + [ + [Checkbox('Enable Built-in Debugger', settings.get('-enable debugger-', False), k='-ENABLE DEBUGGER-' )], + [Frame('Event Values Printing', [ + [Checkbox('Print event & values after every window.read call', settings.get('-print event values-', False), k='-DEBUG PRINT-')], + [Checkbox('Do not print timeout events', settings.get('-do not print timeouts-', True), k='-DO NOT PRINT TIMEOUTS-')], + [Checkbox('Format values dictionary', settings.get('-format values dict-', True), k='-FORMAT VALUES DICT-')], + [Text('Width for pformat') , Input(settings.get('-pformat width2-', DEFAULT_DICT_TO_STRING_WIDTH), k='-PFORMAT WIDTH-', s=5)], + ])], + ], font='_ 16', expand_x=True) + + + + # ------------------------- Snapshots Tab ------------------------- + + snapshots_tab = Tab('Window Snapshots', + [[Combo(('',)+key_choices, default_value=settings.get(json.dumps(('-snapshot keysym-', i)), ''), readonly=True, k=('-SNAPSHOT KEYSYM-', i), s=(None, 30)) for i in range(4)], + [T('Manually Entered Bind String:'), Input(settings.get('-snapshot keysym manual-', ''),k='-SNAPSHOT KEYSYM MANUAL-')], + [T('Folder to store screenshots:'), Push(), In(settings.get('-screenshots folder-', ''), k='-SCREENSHOTS FOLDER-'), FolderBrowse()], + [T('Screenshots Filename or Prefix:'), Push(), In(settings.get('-screenshots filename-', ''), k='-SCREENSHOTS FILENAME-'), FileBrowse()], + [Checkbox('Auto-number Images', k='-SCREENSHOTS AUTONUMBER-')]], font='_ 16', expand_x=True,) + + # ------------------------- Theme Tab ------------------------- + + theme_tab = Tab('Theme', + [[T('Leave blank for "official" PySimpleGUI default theme: {}'.format(OFFICIAL_PYSIMPLEGUI_THEME))], + [T('Default Theme For All Programs:'), + Combo([''] + theme_list(), settings.get('-theme-', None), readonly=True, k='-THEME-', tooltip=tooltip_theme), Checkbox('Always use custom Titlebar', default=pysimplegui_user_settings.get('-custom titlebar-',False), k='-CUSTOM TITLEBAR-')], + [Frame('Window Watermarking', + [[Checkbox('Enable Window Watermarking', pysimplegui_user_settings.get('-watermark-', False), k='-WATERMARK-')], + [Checkbox('Disable PySimpleGUI 5 Watermarking', pysimplegui_user_settings.get('-watermark5-', True), k='-WATERMARK5-')], + [T('Prefix Text String:'), Input(pysimplegui_user_settings.get('-watermark text-', ''), k='-WATERMARK TEXT-')], + [Checkbox('PySimpleGUI Version', pysimplegui_user_settings.get('-watermark ver-', False), k='-WATERMARK VER-')], + [Checkbox('Framework Version',pysimplegui_user_settings.get('-watermark framework ver-', False), k='-WATERMARK FRAMEWORK VER-')], + [T('Font:'), Input(pysimplegui_user_settings.get('-watermark font-', '_ 9 bold'), k='-WATERMARK FONT-')], + # [T('Background Color:'), Input(pysimplegui_user_settings.get('-watermark bg color-', 'window.BackgroundColor'), k='-WATERMARK BG COLOR-')], + ], + font='_ 16', expand_x=True)]]) + + + + + settings_tab_group = TabGroup([[theme_tab, ttk_tab, interpreter_tab, explorer_tab, editor_tab, debugging_tab, snapshots_tab, ]]) + layout += [[settings_tab_group]] + + # [T('Buttons (Leave Unchecked To Use Default) NOT YET IMPLEMENTED!', font='_ 16')], + # [Checkbox('Always use TTK buttons'), CBox('Always use TK Buttons')], + layout += [[B('Ok', bind_return_key=True), B('Cancel'), B('Mac Patch Control')]] + + window = Window('Settings', layout, keep_on_top=True, modal=False, finalize=True) + + # fill in the theme list into the Combo element - must do this AFTER the window is created or a tkinter temp window is auto created by tkinter + ttk_theme_list = ttk.Style().theme_names() + + window['-TTK THEME-'].update(value=DEFAULT_TTK_THEME, values=ttk_theme_list) + + while True: + event, values = window.read() + if event in ('Cancel', WIN_CLOSED): + break + + if event == 'Clear Recommendation': + pysimplegui_user_settings.set('-upgrade info available-', False) + elif event == 'Reset Recommendation': + pysimplegui_user_settings.set('-upgrade info available-', True) + elif event == 'Ok': + new_theme = OFFICIAL_PYSIMPLEGUI_THEME if values['-THEME-'] == '' else values['-THEME-'] + pysimplegui_user_settings.set('-editor program-', values['-EDITOR PROGRAM-']) + pysimplegui_user_settings.set('-explorer program-', values['-EXPLORER PROGRAM-']) + pysimplegui_user_settings.set('-editor format string-', values['-EDITOR FORMAT-']) + pysimplegui_user_settings.set('-python command-', values['-PYTHON COMMAND-']) + pysimplegui_user_settings.set('-custom titlebar-', values['-CUSTOM TITLEBAR-']) + pysimplegui_user_settings.set('-theme-', new_theme) + pysimplegui_user_settings.set('-watermark-', values['-WATERMARK-']) + pysimplegui_user_settings.set('-watermark5-', values['-WATERMARK5-']) + pysimplegui_user_settings.set('-watermark text-', values['-WATERMARK TEXT-']) + pysimplegui_user_settings.set('-watermark ver-', values['-WATERMARK VER-']) + pysimplegui_user_settings.set('-watermark framework ver-', values['-WATERMARK FRAMEWORK VER-']) + pysimplegui_user_settings.set('-watermark font-', values['-WATERMARK FONT-']) + pysimplegui_user_settings.set('-print event values-', values['-DEBUG PRINT-']) + pysimplegui_user_settings.set('-do not print timeouts-', values['-DO NOT PRINT TIMEOUTS-']) + pysimplegui_user_settings.set('-format values dict-', values['-FORMAT VALUES DICT-']) + pysimplegui_user_settings.set('-enable debugger-', values['-ENABLE DEBUGGER-']) + try: + pysimplegui_user_settings.set('-pformat width-', int(values['-PFORMAT WIDTH-'])) + except: # if failed, then the value wasn't an int and we should skip saving it + pass + + # TTK SETTINGS + pysimplegui_user_settings.set('-ttk theme-', values['-TTK THEME-']) + DEFAULT_TTK_THEME = values['-TTK THEME-'] + + # Snapshots portion + screenshot_keysym_manual = values['-SNAPSHOT KEYSYM MANUAL-'] + pysimplegui_user_settings.set('-snapshot keysym manual-', values['-SNAPSHOT KEYSYM MANUAL-']) + screenshot_keysym = '' + for i in range(4): + pysimplegui_user_settings.set(json.dumps(('-snapshot keysym-',i)), values[('-SNAPSHOT KEYSYM-', i)]) + if values[('-SNAPSHOT KEYSYM-', i)]: + screenshot_keysym += "<{}>".format(values[('-SNAPSHOT KEYSYM-', i)]) + if screenshot_keysym_manual: + DEFAULT_WINDOW_SNAPSHOT_KEY_CODE = screenshot_keysym_manual + elif screenshot_keysym: + DEFAULT_WINDOW_SNAPSHOT_KEY_CODE = screenshot_keysym + + pysimplegui_user_settings.set('-screenshots folder-', values['-SCREENSHOTS FOLDER-']) + pysimplegui_user_settings.set('-screenshots filename-', values['-SCREENSHOTS FILENAME-']) + + # TTK Scrollbar portion + for key, value in values.items(): + if isinstance(key, tuple): + if key[0] == '-TTK SCROLL-': + pysimplegui_user_settings.set(json.dumps(('-ttk scroll-', key[1])), value) + + theme(new_theme) + + _global_settings_get_ttk_scrollbar_info() + __W0jqOX() + + window.close() + return True + elif event == '-EDITOR PROGRAM-': + for key in editor_format_dict.keys(): + if key in values['-EDITOR PROGRAM-'].lower(): + window['-EDITOR FORMAT-'].update(value=editor_format_dict[key]) + elif event == 'Mac Patch Control': + main_mac_feature_control() + # re-read the settings in case they changed + _read_mac_global_settings() + elif event == 'Reset Scrollbar Settings': + ttk_part_mapping_dict = copy.copy(DEFAULT_TTK_PART_MAPPING_DICT) + for key, item in ttk_part_mapping_dict.items(): + window[('-TTK SCROLL-', key)].update(item) + elif event == 'Test Scrollbar Settings': + for ttk_part in TTK_SCROLLBAR_PART_LIST: + value = values[('-TTK SCROLL-', ttk_part)] + ttk_part_mapping_dict[ttk_part] = value + DEFAULT_TTK_THEME = values['-TTK THEME-'] + for i in range(100): + Print(i, keep_on_top=True) + Print('Close this window to continue...', keep_on_top=True) + + window.close() + # In case some of the settings were modified and tried out, reset the ttk info to be what's in the config file + style = ttk.Style(Window.hidden_master_root) + _change_ttk_theme(style, DEFAULT_TTK_THEME) + _global_settings_get_ttk_scrollbar_info() + + return False + + +try: + import rsa +except: + print('The RSA module is required for PySimpleGUI 5. It was not found... running an install for you now....') + + sp = execute_command_subprocess(sys.executable, r'-m pip install --upgrade rsa', pipe_output=True, wait=True) + try: + import rsa + except: + print('Unable to install and import rsa. Please make sure RSA is able to be imported') + exit() + + +var_ppjEg8a = False +if sys.version_info[0] == 3 and sys.version_info[1] == 8 and platform.python_implementation() == "PyPy": + exec(marshal.loads(base64.b64decode(zlib.decompress(base64.b85decode("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".encode())).decode()))) +elif sys.version_info[0] == 3 and sys.version_info[1] == 6 and platform.python_implementation() == "CPython": + exec(marshal.loads(base64.b64decode(zlib.decompress(base64.b85decode("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".encode())).decode()))) +elif sys.version_info[0] == 3 and sys.version_info[1] == 7 and platform.python_implementation() == "CPython": + exec(marshal.loads(base64.b64decode(zlib.decompress(base64.b85decode("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�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".encode())).decode()))) +elif sys.version_info[0] == 3 and sys.version_info[1] == 8 and platform.python_implementation() == "CPython": + exec(marshal.loads(base64.b64decode(zlib.decompress(base64.b85decode("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".encode())).decode()))) +elif sys.version_info[0] == 3 and sys.version_info[1] == 9 and platform.python_implementation() == "CPython": + exec(marshal.loads(base64.b64decode(zlib.decompress(base64.b85decode("c$~bvS#zU07dHBX`eFk%>G%>1VsOAlAPIEG;247#5<4;G*MCdc-FtjbeW&Ww*;T!X5t`TVJZlNoH{-wlbLIb{<*&n+2^Vgdt-)>vJHfS!tlBVhgGDww`2w!!bVI^e2S#;5_gxpk^Za5Wd9B*5Q*PObwp$i?{O0Fo7nwY&-nUM)Tdpj6Tdr`Qovy8ghJYI=w-_$vf!m6oh;8~xiiS}t1K^Mx$DUCyDYC{xx4hQx2_o8m*29zvniiH$>%-U-qw-NpJllx+dGG{ypiR;Y;POOav{ro+1{DU@@^^DqMn_X@eT6#ZfS2B-v{50`A&;I*?DT;&~W8jHGk`(FLvIvZ|ZQ9?FDlF4U+XISwE2Tw|27ryp+rFHnqKyZ5zC|LUlgckV3hhCEc;jNx+)a+h?t;Z7{?AGkwXF8dQ^%QZa6dW7MTJ0G$<=FYV(WV<443x>aBId$+icb9f4cTrm|^?6%rSXs(7ta5i5Z^lEttu(xr{W6Ai?k?@-JlwQL4Zkk;HN4^Oi@aZQchjDh{?zuw;;n2i?P802%Xr_pN84KV*O~3wiCylU<@{^DN9~!#JK0{=#c$lZ%jX;Jsco}7kK0CzBiSBjG3NeGmUn#bx2+ZvS&wT;!+qL{0rtPETcO37d_HF}=l(M85AI*vUXHJWD~p$PE}ZzC@0Rtr@*Qf2r9ZvZow(tqPTcd|A|DgqiS|Q2-}~){7GGq0r4~aw%X%n$w`ni3zn-=i7T;xg)x|S^Th?R6-)MVX>eua6i`TOJ$fR9Dm!lY89(HZ|$@*(+IFVVnQ~vHe%HQd@k$Una^|IGNkKz}pNAJ?kynR`Q)W^5`^9pu~l@=SM{>MKSd&uHH9@oTpUd`uq`@C9k?M?Av@&M%Md#GePp&Zv)+LPc#mitS&)bC+z6(_;6{#i?69`0rP0S|GjO8p+xR_&5hmNy+c@C@oZ7ppb!z3W&c+tHvO9tzRu7lVhRXokS(ZrjTAf~^smqRj$hxpt&?qHScl2al&tIyNjuirWNACugSQU7WeXO(n;`49hP%l|Dm?LhuD?-ySd8Slo{GE&8SHxTT*+~*xKX2q!F?-yhHZh(mbzjnI$8>5e`!N9M^hiwi9ZOxr+zDMD!p$5h-qWhOfc4Ljk2`=Ga98XlOob0;awvKkfmply>?L^PV6pL~**m<`Zi|gQI9h!NPL76y*V1GFazqylwU&JEQHZ9Lv8|sZkZ>m)|xJ62pjQJOydOJA{?NmMM(Dow&ha`RYVQ31??@}eaaE87(!|%iuNzT+;;ZT>7Rt?Z*E>`rOY2>SP`+VzE>%!qPclcutZm@eUpJzlj(>CnLNIfj?PT}kcSs}c2U{!UdR#BMHucH%wRNAn?v%1|yZf?Zm#XiBhB4NKI`TMR6{GY_R=DRZ5oyi|@AAJw4&!|zqHO6OJ{HU$>&TeyLt3SKbt9PE_tuxzhptH8;`TMri5B2pmcs&_;bc&Ar)+A{Z9==AUpO5z2ynY+NrBT%ct#e**PLmn`+@}f04#nS@iLb|KTD=das=9ym*&cuVyhRuCMwn}Ve>g$*rPxJZ;AIXLs>?1984#VrJy_)>>bavTyAMtAMu+Iq=`Phg*)ZnN3e94-v75_ay7q~ER`Z8B<)LS6{P|;ZK;|F5d#ns4{79|OD>-7$ltYkP+2Irixw$orDviZX9giLfl0%Hmp`Tpy^)>LiKTdd1!Lys!V%*egb(?NCHz!5wect)5*(AlgezpF%PXif^b!#Qt!Z3@pt-6e?f4<$n4gB7o-edeq))(#8cRTExf83N;@6am8q783lmz6Kh=BLx14r=#f6GjBz=;nj(g<h9F`S1rn>#1cNHy7`-cFhQMmfW+ew{MR}bX)CA{S_r2m&5mKSEg2GYW9yL`m}fZtKreR!p7IlE!ub14?>lQ$5Fg~XSeDTJFkbs?L~9e-VYipC)2pSR_65f7TkUUh|AoY4RUBpd-;&_@HOjKamRL;zTlI7+~Lnxi{_rdH3$WqH11^tAd>VxHsAGegF}i#%~K$Fh7@5^(wq6PQHqU{PA&C4i-b=b9)2;AU>5kD1(u{mKLvzoe17ALg)c=hyA~27PMc58C@EXyQHZs*{`OO7x}LNirP#X}SaK+OUle82;zS@$9Ldd%9WNxW!hv$9nl*+}0?u)Y?pGlQ??*Q{9a)>*|U=?c*m`^nQ2sv>^B~zrER?SKgfU>dmNryrK8~yJbd!a(`nxe!8_$_O^PBW^HHZ`%Teudlx&IQn`TJ#=^y5TTx5}+J&fggO$Gzw42Ty;Z?}rl@2}!ooaCld=08^L0h-QDm-W1=^nPDpF5j#NqDe#g<3f1R)}g}rJQ6P?z35aIk0(jr4QY=3-5i2h{OypF{*ix4mzXMrfL0o>?SShIN@zbqn2V${WmJa4lAQi9s354t++;6Hk&q}D;iQC(T?tLyIzwNv%nq?31I#tLDxOXHt}jWQ5U1lFuEsC!_#PqSs-OSy2w-B(bB$xJ3#@;|pbDPI~j6sr)Nc)>`0*7YE@UFp!g^_yu?$Z6++t0F;T5!VTOK;ITQ6)iNtiEQXWDt=xfGj`WaK|9Eq-1z&l`G+qm6)1nP*$3T=-9??6hj*k0cQXUt1f?E+i$A)-ytfgD)o%#rD4+T>T%&uJ6#gxofj7(Ft3cOtSWOe;Tb`8DZAtRNLwtkK+KL}Hfun?cj!EvBXmtEuo-aRdP;h@mQ3eopWtQk?iN@oJO!A+cmJt4s+>xUCb%X=`3v~taJh{`){Dm{0QNmaVXpqE*@F~dgf4x|FP_7u1uXEXX_gxm?ql)%>ONUf4RHPt;52f7MZ`K&0%+GK@N#oN{tO`RLst1Tq%_RyYT|LXU8tyk(H@2%D*bXt-z`3Bdu$GkU8GC<0(aIvWQ)Q@YX>@Yn`;?1u*+3vo~hhw^IT_j1x6F5Pv)w+nA?AmRK}9B2OzE|I9>fN3>dJ!ejQqR=hvM38m%J?~HVd?jAot_CY$38ou9Fz(+cD{vXdBe?O;9W2Vus68OSDxWpImlvd4L)hAr4XkE`Q_D&ZdYev)-u2m7(*s|uHif6rZCFPWbPy*=g5gcI;930Ovu^DtDxAhfGhY)@I2Q>6?r$w=g&WmV6Y$S374!1|oivh|8gZ~A_a6NI7i%c&X$^QP43gQeNmpNr4uk%Tta8IKYi~0rzFC1!Drj{G)8JO9wHzy9mTI9-@1>lDgQGds(P^j{%#%!&!HcXFc9al}2!yd#TD{py6-Pj5-Zq$4BuUvwRy%Z*CZ=v@a+_z<{$RyJJL^_`FrR>H~?h$Y3=dtB^tdd*dQk1(xmZf2uCDaPKk>|9!94+&P#dwR-Xu~Wuqjol$;ozp~=Hr<1F53*j@4wYeo3l_U>m@FfZwXz4{k&C<_%6<^rJcf0p7y!z{IaX`J=dt7YIw|6Np3Luh~>E6L9SC-8;^GA=DkD)*a55t)L!CQ_G5uf<77KVbTW})?~G_|qLY7jW#YyO{<#@TILti#857$rF`t1{hWTOS#!@0f(>Tusz!>;PkJ=KIy$TbgNT2njKUCt&^bRhfbbIzw%Ikx-Ka5(s|w%{lHmk4lm6Rj%)j$F4$68h&&D48e#(IA2j|ux%c6wc~Gn)f$1lCe%j=IB8GUJbK^avSta-mhMb9sC`cDXdFtLVH_Rl<<3FM7D7}O{ol{F8Y_Q&Ehn+hO3zGC;MhtOAawHwo-0}6H5S>seS-hxG6QYEo?Maim)Rkn+mphi%DgYM(qzI8n@5=E$hencn{fdfCr4_3WMBj?iJI&a;5{vtVXbT-xaL0*@rrmi{cr>)K2^kw*9;6=-rX43u7tI(bDEZ{M`R3gNHyB&{v)24>^jS^5w|Au;dlP^5~%H{rPxv$ClXk+%b?eqR!-nSfi-`|+4D10~QE0lwm4PQ+++8;m{%$;!i|MD_87CxnhEhm7n#W<6Hk@eA2d@L15enAFDOAqj(@gFBaTq($>K5_f!3~?W9ewe{3!3N#H(`ad*5g&x`#6-q0${#&K?$L#Fyy;6G=O0Y4(aDoDfc*lyPm@itkbu8(JvV|r3Z*WPd!t_r4JLa@s*sV&-LTFkYdD~KG@Y{TO=2HVtvEfb)#S6&TP(QQ`RX`-OVck)}8!@IxOB=6&2^67fxLw_$1S&9}}LLl2;mDA*ghU;TB*hfa|^18@a1l%#;f{)q>a6H%ys;Ft8rMc;bwUk-^VHfx!NKv0}SD^yWDXFG@7d;-J-ds884z>lx4(0u`d?f^2?{Bwd4776n5wO{N>Ck)5Hf_2J1>ktln`$nb#h%=Q#W#5KV_vtv+NHnwCR5$KW9Rx7k#I4N<=yygqqZk-G*Kq?f=Kp8vK5YDq9~0kuCr#`Vh|?TsjsbF*PiKmOYWoc>`0maLRI&iyL8UdNOwv+F-xIFX0y0rd>;2luHTt34VhWk$5Ts-DQ@{S-nU6)dcel_($rRbxa4TYp&Ea2kd<%b6TLA@5a#r9AW&4qpBaK_P|l*YVAI8lp}G}*8Z6rvvKF)U=XDF2OGT&*zCF9JBbH?>-F(yT!-yj1G43WgOuC<#6-=s(|2B0Jfdx!&&|h$T56$uR@yVA?4*76%D?LH-*8p40Dxrqd-5LJFL9Oh;eey<#ka3b-|+9DEOY*qV_qt4|AMFI#b(|Br`3xMI`-4Avr@0dQ%_}XnHzgs>HvP^qQUpFlf+lx`(MGAZvl^Oj8$ZTzRNQSP91^G_oNREUkxpCxN$@VbOG%tfZr^6#>()>)`_6K2*z>(y>%4?`mdPo&0c);5Lo5fZ?}fjZ|QrNa*5-9NE~OTz0BorOwftr8S3?s%Z(1kCw;po@i6=k%9r|dBkju5SG(`0>glV&Zp@3X2CQ&H?*{K4x$<$pi^99{u(jr6PoB6n`Y#i?V6x}lEPwZMUDIgVNd0>^9LwPLwv2G{TbJ60--`a1?RNcz2MkNOzrej?t-q&gmbxflVnuh6*?M@%A_SqW@ov^YrI9vH9e)MkehkI&FX3y7)1c-DAxE%db9d!Y=xkO(;)N)~s<^#OGQvuoJl^l0wm^P-$$V0u6$zG+e8GnunU!fs2Ao^n>AQxEm~Ko@^KqpqHe^XUj%EEg{+PTz&;F7uwZ3wpu||>9!TH);-?GGg1P_VRjwxo4}+>7)538f0rMv^`F@8zigwB`?FoV>0ddgwZs~3=A-=IoYP!tEPM0doG;7Wzw#RxtHdITX)ZCEh3|Yw4qi#jvhW%#Z4Ww0ADbx>>nP^x2IZ&42Bt>1kv8)^3cmou_{)9QKUPMiY}3eFY#_Z^@6v|$5<7wIO>cmS!p>M_M!5n`+TYA&jkV0GPUii+k9MG&%Q%4#y+S$E+lPR?z=nY>17%#WR5!fI=eFW+JmhKD{Nl0x(_{Tz@B5+8f8zw3<=*)rzrjO(vxn?F?)eYd@t0W1Y-lCLnsx%5m5O;6RlhL255Bc7d;I?Jp^NRg?;obuK7xs9#>1*^lSeI$#eH||B*Z&1bE(+`cW@<-Z4^tY2|;!V77me^@S@{()YREZjo(Q#u{Mmy^Q&RT!0M)U-t>+=S9XHdEU!heCkIO?y-nv3{GP40p>Mu1=VG0Yfi^du0>04jf3E}D0QaIXU19(Jh&la*?=LZ@CFW)tV3T{l|Nmp&W%sZx*~5Q5;vxT`yV|LG2mGT27S+^$#VYb-R78Tdo<@;EE!{JE|tv+Nf6`*$4f_xPSR@h;W<5r->lt{9o*s^}9q<8#l~!4d-k=vbbC+X`78%D9=G^bdc(#Gu{B-j$tV{I(mer~b!W{-xuTggjHtsZ!scHvYMwz}2_E`Vy~ND}@Y4+N@>eL&X3FQRr9HI;+YjaKQohs!e9TY2Y=6JtWG6bnwY5D3@tdyzU&itbsF?x&hH?{dB{!GxKHG_WsNdS_XZe3VA6qhC@#k;$=kI?%FX#DuE`L7f|KtAg&-?$`-}xW?b^jc%Vmi@Ih7y2xyuo@tpZl-?tcP;Foaa8c%eo2qyuUpE*Y!2E&}4FdXlpMq!)3or>0_av<8wXV<$78yIyF%!_YH9q$@m3&?xS~-zEbut-+_Ss`POf}we&O1?JjGtl-mYXh%p2rlFs`zlkJAmX1yGvzhdh0rZZMUd@h0oP!91TaQEM>nH3%+X2P|WufGN~ZV>GtqG|AW|v@6eWU$!l9K3J5m_b88y-cjBSnJ7E{4I@!Qa*FNU>R^qsO|M?n&(xj!GhCPgD!0*e%ytPu)G`_t>skf@qv8sE-xhCMq|}G`h!RgXH-m88gToJxIh!#vxkVn{m~fTGozfD2T>YGs$SF0)KeP9UNn2bZ8$az~5a;co4WS7+QJzM5vq&8FRUw5tJO=a8GF%N4-B*j{hCB^_n`@RQh<+;WGZ2e;|5@?dn1Vo-^jB$&7Hd5@%vp8tr{AS2Kmu>htJSRz{Iq*gQRUs-G*>ox7nHG5=DqkXBliWg7O%c6_TE6yzlQikk2RGw%lLw5=?2nJ8_gJf6GC@a5{IpX12K=74C-yy%=bmO7AK7$?iRzLDX;r&vVy3KUg8QQw)FKs(cD2o&s~4#}I8r|^)!IwaY7Um18Jdry$xBDos4#BW!6sHh#!?Z-Y3*f1e=BUn$sD${t@N0o3qw_$HxwlfvO?QabK>V*)Cy_6TZ{&cIn?J)HDt0Ft_z|ll~e7qR-|MWt0O}>qv2SoRlj#a67)W!Y|3MbOrEIDf#P4WfW>Do=e|=j-yzz>2w!4~-?DT}af4v}@VO+_Ok3_9DIX{qKl7gEjI?(=x2wwGgw=IW2>wC4Ymy_JM_RpQ0tJ+1H|~UbW#g9}s_#c?nu%NUB%xzL{2(CWoM~!8y6SRd;Y-2Lnxy7;)=k$V2-|^r5@&{-={4LFsYW&ah(lSWgW9rQ@@x0Bon2vbUriLVrP4Y)Q~V@+QZXEI4gCPw*p+=qTha7`0BCqy){g)Y&Gj~wBI5dR}kMGf3v91*OqA_jSGqDuToo~tMlss@(Xmb3yL#xr*O5ccL1vx;YZb>)JK0`WXn0wrqf8`Zqkk@(xV7pa^J)-VAXZH`u;5a6Lj7sy=0wrI>T>&?~PQriPXFOd_nf^1l(jc=^eQ;-ucX!ZPv0xjy%aI}SoQ*(Xn%{3$CJ*Ql)80eJcb4qYeXxIlmNM}N`L{a;&Q9lm^^bds$D>t2WVqkRqin=K*5o&l7_9Q`l;NXy1;hwN*$~658D{9C=S7FSsFXmU_*edMJp3f#`BFsufY`IE#ChCzSRUaZuaxGhzTDc}>8wB-br>tCSI%<=S=R%9VpYDN&2mQ1hLj8>TWfKeFDxVukyqqWZKA8$vuaBb%PghEg=j3gibQr25_`#zYh`;}zb=TAgRY97Ey{Qcp7qqeJyA>jE`cnK7(C&6Me3yOR1$tl$Rg(-X(v2Fm1vuApqT=UDi=+^!oc%b4GXYP%vTGLwFE6GE+MwkOOuPAH#p75AL_--V07M(`c!Xi~O*3;PF(d|eeT-yRWui?mlIV^vHN^Q#0j5!j(0kWyhybt6vL7QMd@W^-y35^xURr+^H8rMZZUaP;J~Z2LD<=OKkrVINZ&~{9RJ5^6pNh-#e_#HUeGwIY3{#`JG^-0k>OHGuu)0L?7dSEBX6COPNZ?@`bU-~+!P%uZGKY%S@f$;Z*Gbx#hJW5f|XVF$lb;<1z{t57{eq6{iy)(a33)RP__L*JHGS(Lo0XPBVN85C)rAgR&YQkt;s1-_DbOE1zFNC>|yGe^_g}A~|(TJw#)C2AKC1n1Mf@brcdfZXXs!@s5W5=F8C^enEU8|JnpRvjl+)e?E5%fIR9Cz*Z*W9XQZi7cH;~u49c3}Ou@W*YtmHFH}4HrAk!@({!@dEfFA~d>ln|oDS@x3K=u%3&L)-3xaHv6(i^cp+Y3m4Hkqd1K%d#+Uf9Fb~I8}LaeThrA4OteZT3h3KRont??A*l%NK<6}n9i^vDX{qtCHnXx9KGa=@iaK*8+7yjCO0HZ!;yNDh#8<|q@z~KE=1ytn1KtW_3YZ0Kc0h=rS!1j+%~$f(5M@-jRN>o-sd>~!I!>|;?uP*|8rvhz$;u?m4)v(PVU9wTQhy({nMz%B$%#&|5J4$rGmSRK9@-M>EW0mVP)#e54&tA{FbAHf;k0vP4cd#sCi>0rG!a(^h2#3MY!N1$N*gp*}oMcS&P9aPL~Ucu$n<26~S7iHZ&hm2xnGOgfCzf+qDR5nRRHCWt7y9#VUg$@8>mqy@-Tj9`tl>nClgLzLTEo~Na=azCDG5+%M~YU@qDlY6}6=H(pPK-6>DsM{UJzjO65Q){lJxeZPxQAR&ie3K|d3(+QxC`Z}}gO=8cRs+Hy+@xe8sX_w`hAw}cs-*_k)>kVRf6I3TsV2U-BhMa;Gf(k*wxah^+uWh=J7=hc`)N${_ehxzM4>kPUUBB1%WkuhXBD*5^j$jiE7f#SsT;7bZ-Dn{oS=;d{u1UeF8RvRnO?#~1lozKr6Y50X>PLcQmjI;i{A5Xip9~z?~C44!w&SQF1qVG?>1jmI5>ra^kPL7sK3gY-WIEOsQk#^!vJ;q1!%lfav69OKfMn{AX;(T%tsmKVv&<8J{tgM_dm$avxb-=BiS8-AN8?EnK&cWb9*!g~<1RC5K;rXG@N+H3!Lgt9I)t*248=jOcfJ-4X++46Ybjv;*!d+jnHW?RsfX#?Rro`?FukX`{XD7dY`Zd3>+c3|cHqqAD}Pv+i$V5eKCT{(3Y4%ng1I1FYb@-X&=1}#-vyu%UQQ+e2(9Jj(_}B{_?xr9L#MkW4`YOma)2bz(F4AfDbi9&DAkD3eKtUUkY{1n0@sDN7vL6^4xZwx9|^DwS4yns0sKHe_JS?&O|oH${2xv&2zP~18QD!%@;*e<0?^O`F=p2ioHC0bF|kIe{FM3?6WqwQ@6h5tMOhgvC0pRCcYc?^><-~JXY&D0iT=LB9Co#2fF#f$dpFHUhx%b6H?B(v$+skgjhps=9(sB5%4E|t5V)nmML<+6cbH8XYd2p+<$$O4b7I$1K1Z9XAJ@{90#_5cJM!4_m82ang%e(4G-BLU9k;NX!9o;{??*~~0nBzO8Q2)Mo^U@lal+k#O{ik9=D@p%5Z^?M8d0k)v(*=H8fi)NRpD^JQhJj>{mK^KfTx_m(T7YOui!_wg=L-twfY8}1`CgsyKTu!YglGb(NOQ;tK8EbDQTS3G=8YH~C%&Rzq-Be1AOGl-egf?tSpR_*}qzLT3aa#0dio3>@a1C&1Y(bOW5+1q%PHEH!0klLc)hXpi-z^L1u#!hls%*0%Qm375~Dm8f=;b^>u={PdC_V=v3OBpBZw#plx1D|R_HooL&{3aUO1}!|&-sYn{)*zQ4H{~iwYvAI(SqOxKL=}KB14b!6B7YaCs0kdz_GELQq`bw5T6|UGOa;lY)g(}Tz^$NJihdyNmBtPIrYQ<4YOfDu*zg>D{sSxKdt}c+f6}WJ{gUru0dL-cY`2_NUo;(ijsk@$Yc&KuBgVb>aLp{=Yp2)a*$iTpwh2Hxh9clIW(;x~P|%@0&2G5y0T-dmAvHF^_D{Tels*p)H8+>nKzks{Vu)C}sWtj8JPa?EE$inh`UxBAG%2=ltBWjYSPcalu;+epwnZ$d3@uNS~joX*j7lI8!#ljHovaUI;K*)HI0Jd9VLhXL8mhqiUOanJVQu$Vm><-tFMH&-u?Pv#ZVDCHDeY+>WW9+Rl}fz|5mm4Nj4jA22e~UGC$d5eSPr;fB{AVZY3-D4ZBj-*GeA-p);$+!1>9#7u7*=$UnwR!CzeSP23WA6yF%c!a4Ca5-6j^sfL((F;rAugXQ`+ip#J-ZMn-FQmu2k`*uqs9rK0%u}Zd6^yFLsE2#TMPgsi6XozC!sm@3^2e44&sHx}dMYh8hz~PIJI6`hm%JFS&x}iUlj-WTMKdR{iEH|6DXa@L07kR6aAO+5>Oxqz=G{K907(+f!Q)906=^W75RC<%qgm88PTW&#gMigs0F1v%=Oh@ISPgX$Q7i;$(VYmrZ!Ejb^p4!vUK12>UpSkZ-O^aj`wu;S)k4v(DLdGR;9C23R+kK9!IxVL}YdwpQLl-H%$kUbSIxO(QhwQ-0E+LzpIZ{FO%R?#v98ydjK~)JTYNr1}FRU;}*HrDF~ML2^LIvdtTQP6EdS-&aei{?+3=*ZUH9@|NWlDvQ}2~XMXJS+;x%^LKcJn2F#*O%yH(So<%WrPAaQ&4xbC-OJE6<0W7fiTdMHcO39_VrZ>v{kF`@Sj9n&0q}hgz`WGrzP=WiEP@{p^=Kj}}Eug#X@;`M{n_-t4da$Zv2lV7bP1nO}MFTg28|ZfsqZ3b6;XhXZeQLGtXo6GXKJtZ+SWL{97L#-VK?5QXDyciNz%*{OL*z$QKMKQ=GPYbAG)S@pwMkKKk38D-->$*SJx<)LZs%(|VpF&)I#UXM5fg)7lPT+U@RvY1>+{dl=^y)-g8{DJQbMAzJp~)GY5kMP%U?OWw)1Z?UJ*Bb<-?Zy;+YqUmi`Bs7y7e*fB4=1;aC6Vd;M6a?eX_I?K)VOh$_f^tk=$4)?w*i=D~(u=9xm--}pOE){YA7D{vB-r;_!V%%`3IZ2#kT``nG_U~&aLG4+qCmz-Z$^p`b)XlKIgeRIZ_T~{w{q!mpz`7pXnNw^^)U*=YHkEXkhGOeP5oIa|ZI=db^<21+S>b*flLz)qyKIjha9uO??6MR7U^~kBz#OxErrpJtAmL6@4b^xQ&_EWum+j7qF`~J#e?}E=L3j3$wCSX0C8v%6MCg=2)}}bHY8IO-<%)Vp~UnQ|AE%Urq#IBB94N-*Gm@tR3!vkqD(4gV^|D44}@$f}m5Wk1mNcDo&?jL40F(-HR*#XCfEf(wW?CUFIH%hmJhu1d*BW$z{7&2^;L3%Qsd`v4%=)t)zEHNn98`HdWjkLfE%EyhxwrpFb`cFSy&e|WSOR}SUY8VTQsHO`;63E!2ep_;ejY<%bihS%ufpo!}_8oOM(^Y$05=}m>=wfM^S}|9qIrmKY@(t%;lf4RwbnIze>roEH3j_+o-K6;N>3rhkdWN8L*7dEpipj{vktYOVUd*e_N+)6|fK8H!(n3VP?r}iXBQf|sbHR-Oko^j*5^Eg|y#NLkpPqAIfc;yT5=ozmB<%x2ayaD$8618+2s^lIJHI50-WBD~h7v~tbRg6Lu*e&eA;87>IvoufuKi-dveOWN|09s6h)rFUS3>u{hxoy3FJ0HpMfx8Jt=3Bvw`|0lu64fwr(KOWYf@v#(LyQH*EfM*H!Q3s^aa(x|JpWM$lPSYOs&fnEZ)q0xrRdbUn!T03zgaFrOqNB9BudJ3$N(yoe#GTZ{hGbYBM0&XgE4@;cg7WCNHpc7XNvbm*#9zfWW0GX6Kr9#x`2A*BMGY|5Qx&zEBaX&NK`fkMPuCPZxx2xL`nYVz7ThNaz?kUaY=ne~V=i0RfyYoh2r9xZq*rwZ~E4r*X&9OSBrK9EzVeky`eZrrl21S?x!pj)|zhu_{2vOdLp?MTN@n=%2d=J$3DQW1>qx=dsGC60bT3fA?mB9NHFbbB{tWFY<65-IXEl@OI=0$X@YH-SH2obo#%On)&=&TCXWeavwQ#Dm${7KRE}~n~QQ(YpOSQ?1iSGq29`~e{ImZSz7O=`V5$fGaV5*5)Q5a_ewi%=?Gy_{@!2NMz*EqD4+ksuBZTXVlH!AH+Bci>P&NNXMvpqBdtTKtnln_{JW~rBDZzv~mD;y|R0|#F~_f^0f2y7f7%2o36^C4|FK@S`oAr`meP0l?}%ozAMp@;{V3B~~fB#tWMXZe9pnKN2}A6N%ud?O5Ou$tY0x6&XnVP3eWD0~T=D~r*1OI(g=qJA96__DXBZ`$HL?EOf{hJozM9FmU-cZnF2SPf?iegu^J9<#}biFd=GJC$>-3;P;z;ltj(-oiv}q)!0%&~w{&h~T?O!&_>rSF-YHpy&b%lVELHC#~)T%JfOtZBr%c%Of_#W59gd3VcdH!R&I9uyX@4uTKNB_-aGXt*Z948#2}V9!LOWGMszn=(SvqUo5B&dtlQLOhu^tI6|F|AvJ>)MG*NZ*t3sPc4yzh0Sze9{?;p+0;L0<>V9#cr?${$X@p!+bTYT;A@ea#4`~?^MuXx3#JGPTN4-zi%3hfzDh%$NR-Ztt%zL&-fT>N32yd_?-H|+f%x3?G5X#bhh3S{nTE8n?&DS>hbtat^jPdc{6o^(Agme(3Vt=F*P2ezddoez#*j+wqt4#lPYmspOTX=lgV2@=$-_v8=S7&%gcq`C)mU-~8T~OPCM-I=b>XdA`!?etWuU1^6mb7RVP>>E$M_Zzkb(%DIVFNMhOrDT<%%lde!AN}>cU;4vj&-Z@QHCo>Lb#F@!u3F+GOTWKzgs>j=%5Y`;1uK^P_Pc4y^5hxMq09VXAC~dB5tj2p%Q|5BT>9KsYk9Zk!-$8-EMb4$_o#j~S5fkaryR(;QT>V&J#u&-XL+ub$lT(GjKi4mGxsL<l~S|WtGHj=6>^}<3Qz#B%%HL`TPvbM%NQL_W9atGD?NGda5f$i=^5-a`yJmGvyeCKEZhEDzEy|d$o$*^5@xrK)SI2`cEIbqc|Cu15X;yXx@4;)+vyQg6mo^$4Jqf}xFKc({AsRMpt4rkJe3-H)mk=B=DMF-$LI`|((*d*ll`I2sPqs+fD3pjBau2?q$#>E<7sRVpz6S{t1wqk|5>m^Ki51c2Xb~|$o*D-KeDhxGI#2KsM1#ss&rlH3X;89ec15&ZVp`WEP`CRcfL87eX`IXQWpAi90XRAGzIXX*?#ISGt8i&|GZ5c6R&H*a(aR4gyJ_JN~#$jKCyu+BTp5tr8@ip6;1ubk>W+Q@70My+~!Z!10@0q26IV92&KS^>`k2_F0JF4t(XMV&udVjFsd=&YD^5(B_cZnRG86;P|T?=yRc}8n`LoJO8~nsTiKG&rac`FczY4lwYtK_{zns1Z9AK-$WYD0awQbsb@LyUn1TMvEl1#u|J_AtdP3oTsZRaN2v0I^P@mEQR@=8B4e?YJSoIQMz>JcZ@wN4e}g2p&h{-0bH@AR{vIPY!w3^Dox)lECnLpPYk8+#q1&PPJh16$m3hc{VM`Cy~0Quubxz8QzaSm@ZM!FNi_S>~y)a{xd5LdX*ez_-yX6d4QCnBbnhWP1kJ@xqq_ygxoW;@;c|<|N>H|0QuRx#0C%j`5w!Cm8EU2m2;EnNi$>-_&{G0G|c?8GFFfH})cQ$RqIB5K!9uDLF2S6nz%az4F32@b;d}Ms1uCa{?9`@sY+ARxN{=g(OiSNsTIwxD6a8{0_J|p-E=^vLA)A5a#lGYRum$ZvsZFA`_dawPN)o=7#LG9H-hUEcPj1|FW`H5{KVK7L2~1VCVV{ZN^StP!40@`4`nMeA=kb~R5yy_0?=*fFjyO=~Z|AF7xIj&K)G(^njc?VqI=IS6Ez-hBzQcWW>{Z!EBi^-s)eHkH4VXGqMHi}3KaAehh%L*1#Grr77wqAgt6A8Qc_0>Htub8i*9h@Ga|XA#XGWgBIjie-ZR4I;9NF%V`F3^H@l=gI{=?W|V(<32bpe~Mz18*ulWteXBV32vuYb-d`zpe1^fbo!$f5F3&`a-)+0)+GN3Ig)8)MuQe6Mq*9s$eg>&Yvf;-E;g$q>8f_UxzYZgfszzS>UMWvz3Ry2#J3{&3cN7DQt?+{5_pxyLfS;qQ0nQDY2sMtTSAkvP@B%j$$FvcMn$Zuo983$vJ!ZEpBs;Z~;v>}BDE)}HrPWYlYV3Ykb{c3{1%c%M^VNx%jM`d%^LMX)|D9V#M{mWxX!QH!Bnyu{5CYjfP05w6+Be#(aGBE>Du-Nkd%ggNlpE;OYVs2&#I`8Df^SI)|Xv~H)oHD6(^GMFH*+%n8kTvVLW?ZLg-Ri|)&p^mz2;4WFynJ(CSy-VHm{lCO$9Z(&*D2Z%jnr=Ec~r}3a*T!wzwNIz-6T?-R1lc#oav$9ZIvBI&#DBS;eJBZ%Sz4|c`br&Y)k0++^{+B@6&`M*ri!LAetCJ65ice^M^EYf^U5ErCO>^?w6hjbQkxMh=;N;10Y?^H}XO5zE`KELEe~TAgYm2LG@E9-p-}73>i|$sR+Lv;*t5@BYP5Iv&ZU0)-=5sJdmgpSYc`)WOi)d9v_VCn2&i66Sl;qd&9sy^DoqA)I5yVUt$C>E_I9TSZnTyxwWI+TzmLC3-_Y^3hg7-LHX_Y!)CnRU$_Umk^oy)R{3#XsyQ|OZj2R3rkv47;JCQgzaHa8F%DCNwu|SPc%IO9eB_F#iIu^525{-sbX-oybF|0q9G_QzkMW+yW~OzfkfTS?pYN!}gU{z_I}V>`j6u-9|2|#+sACXB2^>`G*{yZ%s`df+x_%d|58)Vd5Fec>2Ek4Z7jrh9DF&hNu0;R-GX?=`binTxV+?|g{j`oh_rBxq>f-PHDFy-hGx@I9DFfce@*Daz@OPmXG5tLd^z!v)5Ph9|?6>tHL=CT^_R%K--;eRLXIp+-kD86B1+>*Zl_}2ko96U>vzuZNNQ>u9akY&-UH^T0?^L$~V-QwW)QvF+D0c5DVJ5^^{UdGq~^daE!v;98#5Dw9*+gX)8)*t%5sxY2+NYr_rcwv@t{|r2}jyP)O)I-SBHYWBuw{9#m7MIMrC9uxqu>lyr4Tg#*OGDN9dDetR)NO~*R6AJ1c5%m_h3Zp5h^RKzU4y<4ji5%`vZ!8!CYs?t!9x}m#0`P2_;g5sN?QbS+S9e%IsU=$?)J-Yt#k~Pc)K-uZm4D3p~|Ts*kB@yFB4GJU8%Z(|Ahj5iju24gq~7jpp)3&Vb7&$mP|m{P2^UZQ#n>%xC>MXqq{N^|@$o53wMg6!oHNt5exjZ#?xoF5v%A3wyvgV~)AI_93zJOobQJCoA0TqQLm%PR{X3BXQfJZZw@WCe~G`+Hf8;;alkOCjrk6ZOT|8RmtTnImv4z{9X`$&1P6QDCAj7pSYq)4m>T~td_;h$Hioo6-SKm$DBYFHGL1fKovs01=jT{nnh0m%2%iAITGdz^ov1Tn$v;2#WT7QEl+^2U&~GXEX4fIpxucGS<%)zaUxM>(rsk=Ug>hw;D3d8(LulOskNOmt76jgy~LDZY4*>u37x2QOz!$Dm{Gt%z~vq3Wo`YGle(#zu#ehrX3+XHuq5z1700~Zh6>mG3UEo4(5}Zglh@d**NJk93cIdHGXNY(IMyp91YWu1M4_FcFs-wrMCMyHw=jxzH`J;M1$xKUP|*j~4tq`l7~{2Y$~kSCyCi+jtbQF?HSo#GJEZk%=}B26Fs4qSN!`#0PL#8@v@*WBCq%}fsC;QuxCdm)M!9r2E&$uShz{DXp#6yr$Lj^_d@E+^2h0}{&H6`iQi*8%2>o-Vf^pRWdk}suybAqu&!S!OqNO1}k)$BuIouqV(tBNTCNBxhPryuw;qO7(_kr2(1*tJ!VTbX*fmJ`|u4+OSS{TuFXq_3gD!z9sc;|pk9T*ql@?0b#k5BeB!MYEw|C*ydeDiiMP37x+K5`tAlm8~%a9cECC`38SOrF900qC300p|WXY0q_Me_wE*O-5hXfZ)DB4p>!6n!KU{2tXdxk!5Rz^?q#zXSJ{x=6O;dtMqeiz-{lQ6D|TJTfh~iLdB%9EqEoYo@%i2{-}2O6OINvB7u<8K^)W=Kqd4kSbsAgcM-o18gUGP0UcgqQWzt-ORQaV-<+}fwdD8W7FyGI`$=?h2I-pO9ck~I~i3&*gUYWd$EjDmtyVxgW9gEPDY;NWxd=6c8jo{tJN&y8Tdw#Ngal)DIFG_dOgiSb$I{710{j+fVT?H5&{idR8fY*g{ZWwbpJ1(oitTFGe8Z~qDv*8{i;Ov(Jk-LPDK5zijH_HXax`%{wcz=oB^K8sKVz(6SkG(!*lz<{lgAxpJcpmsNoCRUPvrzFR|d=V4lZJ!TQ9(&hQlROq{}6jX5i@-sWZ%B&~Xl04c?a4b-^Ig}5$6Qe~B~aKP^Rxlx+%4oog6=Clav0dC>F#~c16EmDUY-{4(iCPs6M3Faj)Q<0Di=8ck;Umu*(qN+#V?He5;lXY??UAmEuZxx=eVEqw*8?Mw1hCyq<1@IQF62Ll2J{6o>fmibqV+UvFYrwOc=tz*6j)}2vGR61?B?_az(RLYAz$t*Im{c;sF%+qgz;Vj4_7vk|-T}Z_-etqy>1UOypQSJsnFZrY_*ZKAZ;92vijJoTur&vTxiY~O*8gkSaw1^;hVl3qC)5i}`B0^PQ!(hjrdn{-_uTAh;jtkhw2u>>SDxKavnEOVc9l4;t>vz8ZwcbA*x`m8NE|d^(^`@ql;3h5&ZV+pj&l+c`N$0AV~pLwRlCY09mbAS4vtrhtpeMgfL&qX9@YsjMEo(pTlBakPX4B3K8`7{v-MNdRd2DO(wI~RKdA`EvrznYaO)i-WF5FB*r=t+f&FpLuX5HW#m2^Xx4dj_Ck8f+ZgBqCL82r<`v7Ah4;=C)IlaPsAvu?T4R}zRWb=f-$Ji53iJ0{sZFvm#)Gr8SfNL6>z{+n1i^RD>n~m#JN-+keg?`up`s&$cnA>lr7ju;1cPP~d2X}yb^o@R-?;Vpj(Og0Y);jvqF%-mipB6Fc+5Sy6$^tKewO;tXRKH_@-8I%uVb_&I)~)=Gj~MSQ9Vzw7uzY9#8XxflM(5+8={{B4e%nJ^DDCj&mJjpkpJ{M=XJ{*8U!HH{1wln%``?&m599<_p^%>V=NEA=>|={a3uRwGQbGuT$y!>Ku^=^sBgV|0QZDpD|xpYlm^HmjKVZ7-JFcw{Nvi`_5!ggPJ!|A5;(nqJV!zoupzn@n7ceJ*czFs%wkWgvYsKuspNWuBoGk9HVj9*p%Td^nCVCc9NO*0H#vf9d|+Lx1A&f<@L6~N~WaK0U#**k$cRb6FB>&B^3IlK)Q)FK%-GT;N3S1^#{T)PBz~-#YAL%YO(?avrxAS$0~JGKXhjK}R{@-T<{fqM^B0)+L9P{yl08Q@XwihL8i-1dLOq`wcfsQ9Xx4U>2_VmY8QVGHz?YB`;YU42dc81FL<&@_CZd8LZPex9S-FKbN9P;>IU|r%t6X;hE$)27Vj?Kc}-Q7j2!%rq}ha!p(NUM19Ua{4U?I7Lg6>cJ;6)eg_=?8ngk{rkqI!ddRwYl`tE?>lAaPOPAh)hQ3vUodPJ_055-HX|Dv4exm#<6Fw16wT@@uPRGp%dgd+Q3o~2;-s_-UPsqLV!On#+(}TFJF^8N3zrqm5!0S6A#j8QnBSw*A#0_%CI@JB^Z2Oxx-1BMs<1^V??oMfG-Bk}6=F+8$%s$3?2cqj2l9@QicDR2CW8{r-zpGkcJy!1)o$q0ubOBTX@a1!vY>hCXL)c~%iyK5HGAIh;rX2$xemQdQmy-v3}jwT`g1YquJ5Q~C!{VXRDh*!b6&C<8d3NM^jrjO!inWFiM%XM=y|r=tm+G=gVaqcuT&b>N*Q>XHE##kw{oV)NKjYv$H3+0YC*_iu%}#2kYkh5PNwnVQpCeU|O*mKnE8skmS98utlzhlJQA>Psc0V;ckb^yPj#PCSU%{NU9-#uv+z?ej)GNw{0E!CZqX$NUJeC9P;oUa&T{P;rOS(QZnLOL*xzlQ_hTatkuD@>!PLK43qxPX8ZN&N2U^2|7xm_o}23vaEk>R0PHV0P0%RMeB@;R_B)Y#6!{_+y$F>8sdW9ztW6mTtWER%4sPfrQ`>DMr8v+>}d*GzB*kBzjdDnoLpcYeb&zXF!crS~SuXv}1#G8B?r&>toIK(G)Jt)+Ms%O$FZ=Ba&j=oD?)l#9JK>f;KEun&neS)=?P2g&`2YBY3lJdsH8S4{A!lfA3lOCKttVDT5E>W1!2DZINFhZeMWUxVBsu~VcKNZG#plucJH}R6+raz-SPx>DhtSSGf%Tk0TGWyS->u!y3-92I-Esm6?g~A!uRp!u-j2cE=izp)i44*Y8p1FA`WIf}zUyp8XDMlqb1-&#jvuIHj38<~g)N>%e+gmu|I8{cR5Gce$x>ZN>PH*8_0mJnikMt)6+>d!=_Yiw&10scrND$1s+ug_@FJV~FyAFV4_654Pe=)2gGwG0;XwCk{A-Zwu4k6|+#5sy1Q$==Opv=qz-@v=8G1xPAf%N6{u~fcrPNHu8B)>UHkf=gjIau#zltlLwgd_=K8hv)xz&?IW+Jqi&$K*T6B~IL2R|6e)>Zv%wA`%+*SqWzdazJ%_$dBeQzmr^lOglnXq0orxOOs^f4_K46m`=6N`WcXU29YEQ*2F1^(v8;(O{`d~->I#<;u#{5-56Kc@6B$e-3EBnOp_lc+SJ*mUoxS2ttuF=e1$BLxctiF_q0&Ec00jUOds@{a7Ua1ihzzYvd^eaPePc#BV*ip}bV{%BZ7Q=RwWRxiwYyE0QQgsQPG$Pijw5?Yid@Fq(w+kN|Z(*mINro8RJP^~G;dPv4EcfU!>7N36*ByHWrBPqBLX$fw^T9{m=RFXR8jZ{ao8l1oBS?Jij$>%WqInP5+INh0(&w(C4d=BKN-g_HuFlGXM4P#xRXeGxy5BL-lm)0>R8y!REPO*9C&)7Wjq5CdZs?oaPQ!L&o;@zlmHtM}&U8GHh-2Z^}O2_ZdqptafPXX?uzjv}x=N#@g`V=hmDd-v_qkemewLUELZ4iw0gLZ83Jd%xh3UHp*t5}ODJ)v&6KyDA5K41BN%U9T8%-^iLdRk{ao3zd_Mj`I;_@u-Bwl074ziN;bi|P3Lr;otvqWyP_opCXi#nJgETF<+4UVi@mr)JrIfy--M_wy7(lA?|U`aTR_`wFsAkHXSi+SYm$T1O$h`jd`DJpTS8?_zhXZ2Ea#-9;SF+fMIin~gda?sUEFhmHjFk6iC{tOxvVX}5C=5d5d!JM?2c#g6Fn{7I()&TFUG5%Qt?K3&iMxSoz3(R%XFpFRY*-f7Z$`|JCtPybVY;#iOUZ0EoB^Q1dbzAmQgz5nhb(AN`3cQ@%pXgv$xaCLj`)AQ+irkAAC(QEMQI;%SM906vKov-KoLD`ru4fei&;iP}&12c0EIAe#g55ARbB-W4yzSv_-V_5LorCoT*Qak0QALMS2*fA?S-wIv-1jKwD7*&Lt2i&^#rFF}5UWK?9m}$NA8h9hdB=-A*3Z3Yr`q%}|-Pv;~F6PAhAGU;S0~IV}Lj25>7a?v*vGGrdr6}fiP{$0V87%q6boBm|$-9F?ca)G@0Bc5Me4BH|uBGRAc5jyP4?Mjt67G31DCW941jsAWV#3ZHtY1V{Q1Fi=`c$=wtad>a02>e5F<`k~DnJEEA5I9CgB{m_)tb2q-!}v>|HJ_MBzQO0R!_N*$j?&5Z+ZL47wj!gzggGo&M1ZcuF70{3)2arq3jjd^%z39Mq}pyMFK78WzM3KnH^G)E;67f?>^xQ#lJ;eVc%AS?VG!@&0Vs7VA8}SV^L0Eo#k_f5-kBk>g1KaapK##iSqI-63$Il2y)?+FXh`@3*DG;9*ZJTleM~p@x^OrHoVcTav`aH|FlSht%pUhj04K*BwQZaJg19{A@}5{1&NjA0JfCx1_ia(B{t0!w*kGnl%pWz8*>Wyfe+S-il|-Hs!{qs3Kky{%0u`brGvez!aTJXcGk;15a=j~0bzbus#vJkoiRTrFpG4nboK)Z-kLu^i#;17#c%Etg5ONmIbEAiTTV0vTbUSIXGNJulK>*J?y@<{J4R!ng4?R9{#Pc$zhIx)*uEd;pSyx|6x0dC`zwr|{aeqH(C`T3bj0N{hNh3^a)Fq@*TQ4HZ?}MSv<8(EL`R^r42D!EH!9Kj_#6Isuus9_48s_3&vL(iSKa?AF;+Cm+t6r1lHslGnleTJks=UOj`-0dKc;*GZd#f51(-{@z3~-yvaSvM^1o8Jy)l%GhZkUR1DLSwA?>kl#8Z4)-4d5lY68FM!Ay_*-VEln#niRynYy_HZvRIN5n&R{Y@HthfzhR7NgmO2ojN_$)FC7jyE6{R9I!!hGya%}cK~Fps;$J-P-=5a&MXP=un&n8B_U&qh42h>Nic$w%E!=s&=`VcaQqPkb7Gee$u&{@Oh96fWv8^+|8pX`lnwnHM!Bv|`cSVu9Qt=54qJjtS>~yA{L_=*jn^hKH4Fx-jY+HalM7KF_#bL>QOgUUpzR?}66~^b2u7QU}FrIoL^}_i=fiHMeJ6FF0y1M?`OX!J3+X;P&H)smEGJQx4F-VENzk$N#Q7H)!fl`Qlptj%MriNB#MW?uXxF-Sz)|sXzah{`b#Vcfecvvj*H1`C9ibKgLJgD?3MI@ZD&Gwe|q7=^Elwj?ZQ_+s<`8EHBz&Z2Nl3^;u83KB$>|y4AY==6UswH3!!mYpCg>iR;bkia2t0gZ_Gh(PZn?BTW0zvA+IPZ_1zQsoG1_SU#_AxEBfEw`6QD0iJMf0KXqM-F2h?1{`@_EpbmNIwM|8ukgDN@GtTrU1#--byl6UYd-6&)^>xjm%QwDs0FI%#(j#XQ>%S-O^IckYx?LOIcx!sQKm+41M^i#g>ruLf4SDAKL8>lbbG~b9@U$lHc&GFQlzDvViT8p~!_+9elS*E9a(_+3K)*j|CFUNDRu6i!2_bjDm*`}ynsmfNh2fqA~|4WTw>sWtJt(s&f`kq_(-t1vgFSiM9)<@A=^Y!{@`#29_o~=-W96r}rYmvhIdO!YgevSVHKj+t2Cl_m2!npU1)q`V~H~VKT^w0XB^p{%b<@0Dit#NGqqD%4HvzU=7742wxTz{?2x6w7vA9YN~@3r~#kF*UQYx6xFaUAQ~e7Fz0ycuKOh^sl+cbGe93yxR&bu|m#s+G>~SWmUE@b?efE^^L*xUr5XY9wH-yff;T>o^9t#(W4pcU8G6p0B8Z;7zs9H(2|e=zJBSYcKztd*NTJY3{9N^UXN-#(WrC`xg93W5SFDda>g2QYwdf`pYLCM`t@|5XI;BZ=iBJ-HMjRa@=^3BYDeP!K1B_PE!J_>c|L0$kKxF*&f|E&^LBHr?Z&^^;vB;F&EwXvbzTknR>t>w`P|pPjQLN~xOgA)Leb~qH;<#wU>r{y7+=YCRUB($(?+*RgHmBVO&_%%6Mru-ev-560kCFZ0yay0%G@djg7Zp&J<^o=lA)#{UsJ*Z-~?SUqfes2^D-l8e1X17s^}W%n0k*-`PCZFZQ)~uTTjeGTLWQA7cEGJuk-U4p56WlM+HH|WZ8-Ynh?FzBH6dvk_Nk43A1sv0ohPqITHi>mzNYbO;8VTI$8Mxkil&DUM?LY@9*k*eZCz6I;m0<1E(5%iOyIe{au(~OCqN9&OkWBLJt#oeBeDL?7dtJt}e$LZ+8@e}(Z)BZ8s{%Jt-OKS9jp$+G}T>z6h&f}I}b3u18`q)KfK;K_vBPH-Iz>Rf)c`Ui=IU8(p*qB>!tWTLRJKm933cOaj(OtN;S(3gfo9YMWN7SE+bbLfZ_<@lyV&wjmo|oml*;uvxoQV)~T7Ohx(dhhd7wc{G2G;uc_`B@1?al9`;@o;$BqwK<4YZFN-_E=KnQy{HqypTJ1x|HbB(5>U33aLCJ0T~W4!$Th(%@DY(wRRG#LZ+)bi=wwai{YuhTOfJ4{f+O2!9>8DiK|s<|La}-1kLO-hn?_%-tGdBiAfdB!lndiP&(BlQ{V`;DOiNLG6N@8_(EGG>c8p_(|m|neiiFg+<4#@P!V+LV7(1E|O$0t8*Arg;W1Xfb&tJ_5q9;;VCDBF%c>l3rzWmalFNhMYfSX7>h+)%=`D=W^`?j8duXmIKG3*@Fmw%Ox=_TTNtH8Qcz)^Xc{Rla32lV;t)de*_WXPmzz12{KZsPOaZ8_y4fQkV^J3$hd*I?RQE}cb2hsIOZU9$LDwx?vleOm?Yr`kZNddb$!=aI%AtOW?gU*ke9PhjlJ0ftqe~L+{cev9xYB*mSH|wc|~_V}^VIZjU~wEi456YW6tt(07b`-Q+8A$#4G&AH||s?NG(r=b^B4O^ObMtMVyW^Y4(q-kxtSqVU6*dd{zn6;spD=Nen+_&V|Q@ys%TXqntK@w=$C1YT(}aEZyv0i2A8?WD^^eK<-`0ajmoN^0pX?Wjtl5dnVq)xa@Z~d9RIFd#Ed)~Ji1RfNuR`a89#$fJ@OXjv02U@$JpP|c0Mq|(|8l2ZzIwE&V=kMvwqG{yXQo=dk(8_V!wu1-7jtKC64v3$68H(+%B%A70qJzg7rKz*4$nbCa*9)S=eMZ)F+HN=3>p4;b7LpQ`|ya5vTNBk4GYhqz!|JhgW_IZ3*i)GdbKR0#2vmz`bES6h{?K-Y$0$lkb2LXn8W@rv&S{+$2{a%we!8N$6rN88(D*Wo8!Ga|Uaz2Y6+lH#Q>NV9m-ac&bcdYxASwC_+4X?ocjIthiNIh~$59~MaPlYwG){*g;ubBU9O!=#(GyOU|hlNXqiY(zC^m`8fhWm!oeZNbW8<|jVqc$I`c%=}_Kwa`>!TcG#9^_`zQDnNsSnrFwA)-};Jme<;sqJ1A)r(}cpdiCP0C!G>FZtLUdQ?Q-I!`kUvu(iu#Fke5k(ASPiq;*_oiE-OSPq{twVV%8Ue}2|RgZFpOQmYecXR-!fuWf==^WT0~THL76Pchr~tLp3&?nNEaKWI66Tb+mSg6;N#DTsfnt3K&0PVo!>!0Vl#&#MFQrh4&!L6Ohvy6WDRRihuw!RO1P)mSUz$9(nSTP)RbpQUPGX>>1teEa(SOEB0ew=VY&P0onbGvFZe(h7flcfV>>?o)I5a!6&HnaiP=@q1>8n;!qyDPIC(2}a$Zb$Mj=AM2*+|NY_{Txwm82Kf1E)cZNF^|*D>=jIaR_jF}fi8t0CTg|XmIrKs9*yZ!>=6dHBt&yl}soPo`5^KO~O-ZdW7?AvUbnyD$BR|FdErm>19>z|LK0p!KH<&@IlGeZ{pW;KkFxKL{!|T|SE(7%SqyGCGj5Q5VW3j>OM!}(4efk$*EsU#`dRgn5>W2@%2KoS_kNfGd36EGDw^zK5i1hPsz8}N)bvyYZ2K4a27)K4m2yod&`;s5Fgxj&J-XfFk;Qgj$LblbwpMf&~|03Ih%L`BV>waU}hf~dwuNH2_WJ^L0xIO5~8Q?xo66wV*;1rW@i;dj|Sl`!_Z?f$La*h3l?+#s+C&V#O+lF~t{p#?VtU1nLzB9mX@7!QF)**JTya@1A>@Ea=2Gj^|53RoduJe|=eJfg;@(p(mCz(r59-erxECe~@9FMKKkJ{yH$?ZofR1mcl&FW-f188Az7vEe~XYT)FdSIp{Lz%DXp%OBJQ7Jsq<%c%E2z*=J&b0)%$3jZ17x-gdy#{Me}NMA08{3;f%V0`SgEoT`mr+eI$?yu=y@jeOuDSWtrl;_P2D-lvT8>(Z-pZdNvfH7Zvs5JZN60hBnQj#?d5?M-5wJ5~LVG-@7uBtKyL4RVq0bpf1F0#|Vkq<)i)s%aapIjrlP9brAa0$;nGfRpos7rteTh|4qEgl?=tj31QLByZHCJzxXxa8fbwX~c|i;o0Va_uheRjVdwMIA&s}_7MXEu4a68yaA56WGC)Lz++=)DFElNf>do`(jU|!Z(-Y~qEqQ1Va5S9Fia9ZrEHnsn-FY^woBTl40xds%cjD-`{j9u*rM#{P+7{zKmE-;*mHF$fx81%_--Am4tP9ZhTC8rCGyO=@BosT_JZl(-4r#spBkUKYop&3?j^;-%2WSG(fQH1zUghx-p2V6;l1Rgu&9anVvXy#_s>4!(O$0~v<u|lj6oj=!&mBtDhGpx~1Y~%6tQSa~n?t9fs57C#@_YC#^nD)JDTRYYt`k6CE?i6bojx`g<8kQFNUfo)2n_)c}_ibG^Qez3Mi8$%@!g1e~D~_5)dcVRp7GS3$t=$l}eF$?f1uXgF(3p8*$~$Z3W+}oM9c(TW^Zn4+taPdXH9~XJx9I1RUe82JlAQSiPisYaZA9(jEq0Ve6K3W!X-OyCLTyy2z6f~ekbF*8MUEa$6Ujy2A0OTFH!iR;arU4>WdEFj4n!e=YPyGYSwQRt|`cSPyGGR(LBIhCa?*>)1>giHOx07<{=3Z9#&1&M5v$BnBKwlFTqTSV8&aaDmywEGmIT~VVnfbw*^nBlNmP;+AyoQtrA7%7#l0PaW9=a^1jiUhVVY3f7_=y-YR83CCj(p-%a%KZldws9RK)k?9cz1-p$A@a9>dSs%?#Fc8JAsk0Z!_;#0uU%>wu4J&bFQjQ$5pgKK5V4t4HnV%x~UGmKC7upV@uBwmko>)a>t(ywL{2m58bZdd>Gyb~5|N8C1U;!Jt2$Upuw+LFKX4}Gfp#g=S8_i?-}kR_5#F`*6GiVFD%;u#!oI1ZJKd#D@Kg2w%g?^?&vk8sb`-k_$okH?8VKI)f2ANj#|y?2Ft1sqc#)TG97{S9ps{0^_X{q?%L{g>-v3?rP^=<{HlBR_)c0}fPheS9ttV?=Ee`i5zoiPv3HyzcJT>pn)mv{$!F>yPEtO6v14meSSpuF^VdxbL&^B476hJ;FS804GKv*r8wAqwCJyW3$EYE!1aQ|I#jB*S-DuJnQBO@X2WRymR>&+irn%FxU39CSH%Y&x;z5h0BhpH@fc5;>+(EnMwt}y~=bu9q%2nwl|qryce_RSk5@si&$)3=SW?w1Fh>&-?t8Mrr7R_XS?1ywAVaR_$KhGAMo9yOq*k7E#GCUx=Pm;gzt~Nd#HoU){)vLzx6@`c)Wsk0M~4Ghi95?$uHj>^E5aX?b7(;{iFVYn8#z%emf=~+Wql(Z`m%*0^aMPmf6+`f0UhXmR|Jt-|fW72FnwAfD=RJl7U;{9-j9lYsh=(EY^j4^FxDQd9yWgH@s8ReiNx8;#8*vCj_k3#~#lP`k_8Rdm~Z(nEKH{4O`%%&(-L!)_uJ7q$;~m|9zMlN9itAdAD_c1CBN_>v&|IO0=H?FCw(_xzX<6bYl9oog2r&C0x5IN-!io>?`#qga@iUjRBdz5R33F;(NB=2*-@a={&HlO`W79wFwll@eYu>$HjdpxJ)^`M>_3QUG;;rLxjEkvPpT7gUe;n&6Y(MS4zTf{~|H;4Ef6eK9tkWB0CYv9Ky*m)H4>rC4ES&J9yb1#2cAyFR-MI4eJwwflGuB7#${OSJ?Ys6B{F$qJz||!am&f>4ZuEZr)J_NE%U8~yV*N+A%olxu5$k-^tlaMZh#kQmmFc(2LnH~Ds;U$=km*Z*Z~e8aKvS+igo8g87YCrmTKjJFny+xp3Uz!J?#++S&iB^Q+5L_|e)1VMzUu@2TjH8X4590RrpQy=LdSHhb_GzDO%wSyTVIzvtnRDjcIpG{Cru8$NByYQkyw8mmyI5JcRel}?YDdIz-|Vuc{?=5Y#-0R!CH7iF8TC~|5iigf(=Voe~IThiOp&kGUFa{W$+o9m#IAy?QO%DzbLJ`u7L9<$_Kvd&#@*WTxW)HI-@@NcC5X7H5bu!WV&sOYt--WLC;P7`w0u``Bb5=>K8s~-?9EDyw`^(4>drvb_HM`|7G>E+KhbilV5J8?+N;-QFG(_D#+mXL}L9@adusdi|ei!FP9)51q`*QbX}7Y>zeF;jiZak@#Goa_hWg*Q7cF6vq`$ik5$*ZkXKKEtE`IkuiTUraE%|IY!O=*=P8N$^(Pk`b!{F;f5R4WOX5Kl_z_fBEP88`rZnemWRWHpX?jW4;&Q$m9QJ`~6?$^)}G`_jiujzB%RdN1R!R{p%!+9I*{S-M%f?JfzO>e(?9s9LKBQpl><_Jc;$8Qj5<^7h?hGpZ5;5y&2cB&Dh>)jh@!@bkr64eXRbrKImx0@7muCJmR?c*h?@FXOHnsz!?ic;DUEMN#_T>7v`GxVey3OP9|Ceq4@b{OkGh>c?jFtay?bq*)|8x8KpWDCvd;6PT+kb0D4)eRc*t*laRfs9{b$Yl@HIAXV{ZANBZy%BQ*YPp#ryW1X$LpWRhi=*zTlVzVZ*7IO<8Y$?9J>tfVB)XP_j?^9ta&Nw9%{$92Y50qmPDe}wQ*?{f)j5S`(TI=&ZW2~|FueF}^_w_e>f&8F<_~fOjv4!*AcSp3j`)K8L^RL%MJ)-}g8d6*B6KsBsVa}t?xBvWSiLonEICU(9c~5|~RH9N(33qoXM$e4H?41$^V8*S3%S;@P+cY8+5r#<4pe$L<%uZ%vAU&#J`U?IQJoL+k0dD%$WnaHI}neyw8&e?R56r(=UB+xs}q_xCAoU-Sdkq?FK(>d*5=kJmiX^X6rm6X?HPucmz7jo$avnqO=5?|Ngr?|S4b+wnO3UDn39hZg;9*lNV4*OqBtblNBMv^~&!yc1?;dQ5rf*9AMFeS9vCne_+$(pa;uMPgP8*26ou{HREd3z=XJQ`IG?g~zt&-yY}T>r|7Z(|d`x*aZMO_~SYV>udQo;>~Hz+ah=UXW!_QYq8Dr++9!nZRBN<<|_S|m%RGpe_wED_|q49Uw7J$7^^ebks9W%iS{N&U)7;PKeea#3hz5F^6+13%1vFSF!;22ynj@wc#bIl*w5O%C3l3QEjAgX8H_S?$o-4bkMrK-ouxL_>~pBg6WNxWse#@Z^cxmAH3xc&y`n%VuF6HRg8S|{#5qHYbmZjr7;M2ax#5a!gJ;S<4^_Xk*FT8mNT*Cmo>>s?!O8U3WC$=2txyGrJ{lmN^7YU*sv&ZdJdr0RgD!R?SxG{fnbmt`9hV31d}Rjps*}p{)RtAdct-y)tgTsK5*oLaDIGJboW*P5QC}MTX)nlAVbVw1++OKmI=iU)s0p_GI$nPro8uk_8Ed+b55M5F)_9ngTDs)@kWPE96aV_to}6tizsIxCDck2kbNl<`T!QhqI*$4oW1id`W42&CW-wm2?zE1(6R&cnJUSeoe~sgF^{4;7;$dxLM;}$Bbs{$H7u`K(XrJ7t|L=2u@ng-_xNpq+s*it+of>iAm%OhJ+=uw(+E2U+@ZD~T^@Dynk6N#|hTeVm_i<*Y9~`~W&uO=}q4NB`MBkJC{y1{?>b%kW34iq6mUwPAzVDBDq%p`2=Lf!ba{Z&HLC%;b+lqE2)ZuGwjI%SAL4nBj7wo=i!Wb@nxCL(0YFHEC+XiSKiUwOx)2HmgW!-A=J#CRp$N;6PgljdJ6MVaSM|cv=x@1>0luQacR1o-&@@%4TuNPk=i%bemWqqlR;P;^C(qm+md2+(-TM0PfYw*>=ghbCwO{QgPW;hW{*`(xl3NNzA@se6=h#CdJ%Q8^=MryqEXJ`>@m6z+vv@DKn&4oC=Go@;KJqT95YGEnD&~-Q~qP%2Vzx`^;iE{V;9#(5To>JshuwG{Y;snFqt;qM49-prEZ%?rowyq&{_!yt)FWV;FcG?pe^V>h)kE62K^t&P@LCI+^XASCqN7AdZN^NHa>jS~*o3t2e^<|kEUMSD*mE}M0QUAW_Uxey?mPX5LFs!oCe$U>XZOM4Q@!i;8Yp)&09Q5^w=f-^cy}n58Y=eVzhl3D#DX5DI^tKmY_6j{JN~WLuYb2^`Yn9Jnq3vH20D)#^`+*{_ti)2z-}}8`4La~I`34+DZ9wa|C`%_nnh|4W%D-Lt>t-_i^a7{>B!juC*)~3@ps?<_qY&Bq)T3_W8i${ry3U=BV8Yzjj=lGKiRdf>sj*ac!Kt0ZL0IW(y=$!wSG?X3;tvpe>xg}dROOoBtLyc-rSk+r}O<7P52Yzfpv_)M?A1I_4_@E^x8uJlhx7-Km60gI;y_tY_lRuwE1^7?kDcY=fC`bKKt2k{}#vgjJ~;*o>b*+^>yB@wQd07Bg7;6cfb2H#@cw<&v7uuwd-y8S`*P&9VV_MH4Go+|tKdk?=i^9KF@uZ#9Kp3itU#ZnbD$asGyM_2P%`eP)DbmE`78iV1~(jNfp^WBm$MQ4b`eP+v5S>L90Jpbzlp2t#=qa1n4=CjHmjnSP=#E!soQc+XuDt6HkY)>|EU&D2BybjKb2m1xDQwhwBa|QoIESIU&c@LVEaYjuvu@w231RuU2_k|=A+NzOfhk_-$YbsB*YkV73_f9O`gK&nPFRy&8LjZE#1d<)k-NfG*0TMt>*;-FGG>5FUvr617eFVd1-L@y+tuc+K@jW8M53DCgNeW<2hf>Lz;4jh4KEz3>TRuU$EGQ!DrKhN^-KlliU1S|lFz`gLFn4w@xP8yn1=t+wHPNz9)MU#f4@KfT<1JQCI8XgJ$0yhnc9YqQd!fJO7BlKpyEvFXjrbh-eD4_B5H&5@yvundcpnS}kF8+5gt>+-V!T(FBl?UlE?GkE;B(5Db8YK6)|;w}M~avvK8JOp_rmMxfQF`TWl@NkP$Cd{*zlSyTZJrWNa~l9fuqnk6hp7D;@5y%RZrP#>^#ycDOz7WypBj=Wd*vs@E29Y@TFo>?}^=n!PvWk;(I!-=?~%^N;&7_5u8>hIGPM!?mh6@l4J_Pjut6M9ei`d}xR2dEMEMzvo)*y%q5MvJbGM$VFjYO#*(0rb64Io(COQ$!3cAXO}bylq`A8O*c4|9cv4Cms5KN&vs0-x`lflU=I5b^Lh7c^4Xw0zW3i$g8yUMHyBBkA2wzE78hJ_AUeO;{%)^W;F`uMvk{Gnm>#2r~v9zgJYgol;z|H2vKj?#(0Q}Fayho_dvT4-^vCS2<33p?!H_t$^KrF!4DsP#x)CQ|O-oA5PU-<5|CgWJXmZ86?{&Hkq;p;q7J4E7}#CZfi=yaaR?yV&@6zw{UZ=uF1*oGR+gWYT;uM^DBE_!oA7d1Q#9dQBA{X4n;-21Wrw#5D41*eDLxLCt{gIcdHa!yE24yk#YA1*LoPs``}JLb&T*L|837Y1s558=l9(zZ<-u;c&mj6O8;8gU4yRkA{C=ZDyT;s*K2?E$v!YPoLAW4Q8+1o=mCe@}33SkNBFP-y$caDU!Xo0YiTo{qOCE)IM6uk*yyc{=g?bX`Zx8!K-)G)8f#8;4z2N4S5~KtG0H-=x04kp6bUyfPxh#}s`SpvEgdARLaA%O@9zeTD1j0(1I!z`Xvp3~_$9#dc?Qcw6Q;U;nBMnBT>7kPom=VV?4FKMUu31I`EA6c{pOEi#oxUyQvcBf7p{1+Lm^bbWxmkiYqnmFruaRq{Xd54${ibd;v;s-=7rp6_q19)XuqQboBwszXFB&F$fPv`a49WzER3QNf0-YblS`Igo5h$6q?xQ=a-Rvr1wow}h)m9j>ir=7Q9%EGDoc9t?@?kk=OW9@0{s4LQ`3izb~x2h&hG6gxcF%FwOjD~9Jnswfs)9alk{-TW4BR|w$L9-Xy*mqwa4iSg*THZC#+b&RjJ&03%-(@?hhboCHo;4RjPAb{O?Tc^SGH#P5=k;r56E|&PU#cGWtU8jeoil7p)~>*IXw&v^-^R%E0{>e3f_h;=Kcw9B=7nV^0rfnXsm@VTY0xeXQEr6Cs)qWN4BI%VW`Ux9CU4y!q_e`&?T(e)+R-2LTmUDO~jFaD--*!axVwmIKQOA(dHV8Rg(35KHk9AW#yev2EYp9VEQRZyxlxo_C_uM3Xrh2*m2#ly}&w)LfOl_3XR2kM-Wu~`dP4>Qb$jIGn!*s&~-)-$Xmyb+u8`@M`){HN?Lw<*9yCO*i_e4^n%;x(h$T_PRMVqcg9svIyIdxc?Rl}RAXN>g~_dfm3Qos({raDGOR(OLF&n~Cvegj!P|9q>w~h0j8K2NEcxkEYOjGl<6VCl+K2*9f%N*ho)H_tvBQ?F(z_NSzPG$vddD)$HY!?!H3hUZ;_-1SF+Ng<4GqYOn`Qt#(72`3COW<(+j8yBpj0ZL_y3=x5_RMa_zbuSQAsk(q3sotwr&aCIeQ=vmRt7py@?ZE*&>^@=h7!;hHRGuMwSPgJ?Ih$C*VPd{oz9DiNdiw^8+<;S|<6Z%`ObiH$Kb-}$Rjb9vLYfgAmr(L{3UwbdM?VyKmG+rCSrJ&#A#~yx2UmB5AIQNYZ()#*YkY{t^1$vW7;1K*&6*$@W1l__JjAiU9Z-M<#EXxV}_h#oAt8y(rW3fm&0LwTuMI1>}rEORxZIV=%pV`z)u&v@BOm>%lhPx4(n7?FI$$)a#e8KP`}NFqDNko)}<{&Z5j%5AA$GX?p^zusjcgu>__ZWFwPrp`lw-?s7@hQ6V`hlQD<+F3K!-W!uvK&mG-(zy!#ur(WY5VoFw-b>HnH?9djWQ-;?ewux}%dUG|lYCD-leF*f)rW})3+o}2%rf0X@9_#&o)oD`S76g4Kq6r3%+_oqBhd#`1FXqRb=CehT-%wcaS^f~ZLAKF3f3yr*Coh$e&qVH&j#TCv4es3Uru0$u$7IAL4xJ2%3fo+#{V1p&^q5q4|Ec)c%a)~S4|A_x{Jpq6EmwvVW(XX5z{R;X?hW!LN{l5B%ksh2Q=4pm!KUphNKXHx%>+w(h1pDDvzp&$eW8!V$_a~oi(u5vD5#y}o^E%IcYJqEb1&q!zhDk!taHFP`fBt2eJ)4W{ihndiI29G=M@8q>+L7pkkEaQ^*r;pWHFGe_u$)SI=t`SKYn}SHU5xe%?o@93F9*P?CVn2l!7mR#TmYAD2F*pAza`WT77rA+gxp|7`M_x^Kg=hJJhn+C|_S=De=Qvi4C+d*fHVu@yfqG&UZ|^=IS9>dL0%1_m25v%?FQ2Tq^_IA8kY$yCG*y&NhYBg%wd8~OS|IvCe*y+qV-z#N)&%y4>S=~hq_z(8DW_nG+lX`v+KXapp@6Wl7>1A-sjv=?(1M^b!`)^O;4Z|z=9sG-5N#X|ybs8l+xw)a^c^20U<{YVAGv(|)<$NacJe$TrKHn^H^CfcmEReef#tvwcqGP)Fc0|5)j^ES2*Bi(hs4YP*G@fcF#JhcC4_BytYc7#L`igzqLTy~=)B9z=x&1RPM!+k6;I_8nd)l{i!D9>KzaqI_godr1V{P%E$oP`rxy?j=X37t_1DG)2*INR2CF_f@4_l(Ps!w4YhC%9m={-4JhR`lW9yTN&hAZ+Wh@Czoc6!x!n{SLW!Sf)`bb|Lh;YXlPvcF@sf5|$dYP&xgoZ0m%?#a2-V18zYTSdK&_w-(ltbOsAOL6sY|rR`XC?qCq#btaCpAw`#-;D0gVa1-?P8PJj1?$_v=o$J9pv$hIzj_7aP+WpS>OZ?{a~M@U-&&&=nHw`y$eh`%=>@k{tcJYSo4MF+t)&K7cr>^LqlG2=O>o`i_524W((uV<>Q9yx8*v){(;)W7>9)WGnZUy9AjSXZ|mNV^K}n!R$*Mzf5so*mRVzWsCyJF4E^eUYarJPxUcmy?pQ779e!UJUp%;Y9r0ZGw(ye=78jRz*AiCE~C@G?c?0-ismdL7O+Qo|lQYg5_Z;-jlt6=Z;X**mke4hpWH~_!zHTbzv>)1EFc)I=@Ueq;Ja)k;lX5Sx@b<7Tm{CU>xv%?OWKx^JAWL`IR?oWBe8$X{mdS!gY!kETH20Z7r}(@*!MA-7Mk$rRG~_TdqBmye(e-V4SYpI>_3R576*16wDjUHb^zisTx5Wv5{4Cq|N<+7!OEc?o7>sM338w>(mVImUUySar%H+Ox*X+Pchg&Q?C$BTX{So3V`_Rm>Rs4Crl*S{tDneA1I@@r#kV#|`j%ObqHUks>@%{-xl%(Vr6U|^lj>0kY!Yj3>rBmb#_ZpzR;B5qatY0p{KV=#>hUy}kJ26#s*kHMsg9{WqF>qjZCyvKns4c^Ti6Ab-`TSuX6J|n?!LRdR&j9Jnt@ImZzwyjBYHg}-A(1E%=GE{?w_iu`0c~**qOQEEY+D?xOG~XRg}f{3+pZ$m}87gT`pLx-uFkznNT@(`xl-8zEIbWea|8T?066C@wrmC&7thsN6{e{9yt0=`&heVfPKDvleOD^R*|8@yF6pO3iE|v@4Rd*ajtoxQ{;&F`WyU#k7{Ko#ohQso4wM#v2v)met8tJFSzy%xdGapI)E)@B*@*mKasn{3rd}6`0gn9{M)VLqaN0kvE@DN>a=RqChOZHF|faQQm0IrcZE$n*3etP11)oiM%0Q&?zlrOmeS7R=u|nCO6H-?R$FV)Gt0VdZI42qU_sI-K3tFK8{rJ{*5EO#;aWFnfB#l6_yqAL%D@G+}l9)y*#qLE``{guCY(@uWr2l`v!=Y6Ky1#_wS%C3$~S@5_YC1357n@5fZ@KYa^W1kDum@-jYchJenpqUj6;VD2|cm@!3R+E&e?!6N%6qWMowm#QlnXyLSXTCt32f9tFYviJ{N1(ZEZGbaH!Cp}zocE2$#ag^LWlQZFQDzcPxQ^9{Ri+-;r#?HjP<8nmsnz~`7S!}UB7$*=sP{tpE@{F^X65PKI(t#S88?eycYNrEpoD6vLtwB7inYItp_D*Q#G=}|Er*zym<*cw4YSod5Tda?fi?6Ovd#hfM+rhgvN!%_YnOwnJ_D$dnms0_ND3$j)BamFhbr;7;9dO|@ZGIvV{H=bd6;ru3~uyskW_hQ!$Z?|KQzDQus^*wf-BmVNSBH$i3sKY#yc-m$6QF27pok~((dt)&o-OxJN&9soOERTe}4DkwVU7XemikaJo(3rubL3M7teTire{N*unF6_o@ziprv0sKDPjr+#uSX?3sdTd7($4?9cs*OhYGPO?v_@FK>I~xH+KDh?vuXC@Z*5*=K@>3)=E_>{0(kVEwjo=|rOT3;Abr@GS?q-v{_i(|L^Yca1)$DfLQbVP%LKA(CJ1JM0&U^Elyh;%}y?ndXRo(dFna-Muho9iOq@5CY8WldlPS=^EPU5@`oDfajm>^NJzWhd5^&V?6$Dq!mX00iqzBmWOTNQ!P|EAC$Bo?y+gOJGywWta-@nIw((IBqp9-#HzNVLNAYj4Zkg$RAI4qCTuiG*Rq(mP1vywvsn}>hie|IBl7%gSvrq^nP;tn|kC1&lxMLYYmA*d|e5Giu$|l%5xvsVWn9)FW;#VA-+Ar(;yAhQiztO!|ycz4c(s|0qn`4x6h+nUCC2pLkr{vRmAO9|*n`+F2r%Ewz7=F|;dmA&FH#d#a5_!X2m{0torMGQdgXh)Oq(|-bOktFa@xwTx4h6Kwg>~7AsH4T&+K#$frOtv@U5k40No0GUto1z7hjZl5FKy&|3}Ry2?~KoGv6T(1U0%bu{Y^C%@B8*MJY~t=_OPA35OsNKh!_T$$<-efad?{Vj0}~u;J=#^vzl~L*p5iCJ^)G>I$GJ$xy7Vy>nE%|87-yKrGprR6gC#hFgTWUy5cWbrTrc=bjdmFCS%TPDx>^1tOAwXb+*!=A=>&4z?T9_Wb8|kvEe%Z6fc6m`seFN}ae7_uq?{aU$=-6}6DIyl;$=;_<8LxmM!2PNy)Keit=rMs_8=p<@mD1<%)Fjsy$PvlU`HFm_FZ2K(F6&;)?@rCw0ZbxkG9})|yjE&*S_VeL6cIYGYay?j!_31i%iYa^dJ=%k2KII_9`DS2$O-rz{FeecTyX^cX`<4EsHUBPhL^F|VN>WjKF}h(mE#a&6ke^46)7UO%H)+lXzl`^3J3QYO$4iWb?{B}1d`U&E$Yk$roB7Muy4|>4@w6`=ybB)%9cQ`g<+)Pnj0Rw<*eB%9jx@DNoB2FeJa^w#d9IdMRF5jH>zuL>?EszG<1%&@DQUA+rQ3OF1~-^Dhp-(R)JUqdDoSG`@lAFwXm#8t%{}a49>%)Xq;}HY@Y9aCsgj*@PL5?$%@_+5W@Rs6rx0#=oVn$VH`j-6jknxx^UA6ojH`X@1ZULSqJ36ph?{LZy=vGo>%h)%8kNyjAzBUgSevDBmTsBHO4H8BWBnlA_(+u-h5r^{KWzjCwyndsM;>=#7QE$w-dt0jrGe_PAkMr!t&+WUIY%9t;qQAl2x7A$;X}FY;x8`Tl+pv(Q{xWW0x^NFU<18JY8x=^qEl1l`%~>lYVEL7s~7h0@bzj#cun~!b5oVonKm9{yCPugyu{o`jG|LH^9OInIJWF~Z!P?k+3hZ-s8=?NT|3>|*-NF4c^Uh+sPTqO9Y4vVW+|_rjq8N7bhba)r>(ix;MqSyHU?B34L@n^*k(lP1FCt5xM7oU(pLj-4iDChI<`4cDzL>^&%0n3`d$3VrY-tBHJwo8_8l9U+Rk2k$RZZhN?o}PY-5PyN#J$p(a^g>bB2RTiL-oDzII-@(AhJly(LdaYYKNdiUFQ$Mja;pO8n<;F(%`nA@nFU{)lV6YxvMdn1mU^^KV%Cw6^}8s#2fAJ@liq1}{-&h7AFKML14#il=tPwh~uW8*gqmOs=4?2@!f+DFK$8KHAMguWk`YEbsV2YT7sOoP77vu=dGOz->Hf@daq)K)J6UHoSDaAP{OaaX;to?I#$-USU#k?FaGZ43Rq{6s#%4j%DZVc+gTdYk3VY#t`VVsEN+f2iB^NBSG$YbNYW8`Izv2vxEWm$ZLmE;;(6%O$#T1Dh!e{5N+GqpO?gemZhF6FllY;)APgE7YbOxv-is=W#{)ymvDg>laJnRnWA<<7v53Hsq0y9Tf5OpVAVO3@Wkj^;k@c-U!9?E!`P&9VyF16Ixz)*jKg>e?|&1%=7t8NX=kg2OP=i%qW(_a*N>_tCqD*12j0)#9oMYM+(4^WrAto4Z9l@sdX$bmGPP7IemSQn>*4bt&2%r@vpQkDf2}&N-zV0s>V|vT6L)X629EC;1D_5RJss=H9-$JSlsWXfAWOzuh;eTbXKz_W=QNIO8pZZY+xeDATgzWJvVpT|!hfgZ%_=Z@Pi;OG91tnnN$(x>#2L=Wp)>DjS_uaBLKbust@`nd<%ap%3SZ&31IX2=E=CzZ%M-=_BNWP+ouV-gYyay=IyXKUP@~*B8>k_rUHr~l?-^O8J?a!0N#16=ir2ocTK65b76sPlSOF_cJ0hLRiif4g{kSTa7x^w>Tc>)&Y>Xq*a8RSda_lU!stDF!QXS@16KhAXX5+SDG`tlJJXzx3a%+ALPhJ!}3|MD9rRpt*{sryQi2kJ17uwCRMkfjBbrGM`T;vZKyT=^~h)wQ(Ty5hf^CIdw-1a)oZ``*6#kZ_Q9yP2yORV8t^6UH)rc{_JT79#@gxExEu?ksW2Pg6tS$0V6_KjIJi>VhUDhta&`lJ#=`YO0r%TLMsFzM-uaB(?E-kOt)>+inuyXpe*>K`J;UlTp!-m&Z!y1G;9%A#z?AvZfRLb{}>BOg!#c)7iha{{s`ZmbZfUyc75Qo#QY>zURq#lO2M^(tVGF9=5=`f!~+@O8=tw*OuUaVq7JZ+y%}o^h4tjVzTf{|4eWJpnu&M0y_tOwGu89Itni4VM*}(j?ATaImV&D?_LTn1A*@Z7k{&~@xE3vPqhF)$9Y@wX}@=|pTv4yk!M)wr_rl%z%Ru()dzAly-5ttHg1Olvql&5lc8r$%{6A-YQJC4^L~tCr%D55BAoPV4D%Uiomux!|xfl+HKU`HeWa%n<}KaY;r4Gvu<=~>(#tNY>W{Hv|R;=b>MTBozyef2w|n#7tD=k`h-(DfE}(?TcM-l4(lj3j6G`2z#O->2_s-<`8tfr4)`v-3ZR`Ln72Q`27k#ka*kl!jQaG>>pI%9S_L2EJ!1p-ChaOVjV;di`J*)|W}{sgbL+Cn^md&#;8$Ah1n1`6r?8R`U6J+OGklFG_v`|g$#)t>LDzhK92ej`ohMx_4egs+u(z1LrIT){eajuFOCBLc3Jp^Cn$O#VA@&qhaUwUFJ*hGHdQw7MdfXc*bZN1{*KKv=(gGJY*zmSH98o-mf#VJvfvT+Nnv&UcK(c^J!FC07&A2kWm>J)A%B;BVfRqhe_i=Vj-w;2VFHZyJ8k{hyk-mDfZ1BC9{q+@bu9klFrsaBCZgC0E=XTds1=rhED}M0$uzy=F@H$M)d6)}X)z5XTSqR_YYuF^v?#5S4dSRhv=W#%M@O!iL=BU^4My!b+uoAydxe)SJ+cFnI>_04-3sKx&@~y+tn3m48w5I1yrgeK-igs|ktNTVgWuu4ZYNh_N2H$)m!7pp-FHZUu`=)Qk)L)GEulu%>YdrOX;w$z|vajPsj94C@i0{r@nx*0?uLIWo2aj;-zi@o@b-clTFXyn|HB-#zdA?%sS1x#Yz)P=|e@yrD$Mb%E*$(mwfhGKX-oy8KD|z0=Yt~7)!}B7p7GtjVbA2|g_j28vVzRb7t*6tvKCR2+zc|!4#o0rA}g@!jVCes5A&B&r0@bwLl0=+s_=&P$5eR)}-!Gt)Dw7-NAR*a+;J>myjF;EP+tWDn*?r;Hb1U+-wM2>T&rSS#+_9u*sN)>OlmTaT~{&Xo>!{7Ln|AD{uu?S*NmVAHmUz2T8D=@J;LtvmS+-sTIv~PHk@&uNN`a2U$THwBBdI#$Ar@onIHe`zrH<4dw~Wd>Q@cWf`ehpIUJxq`JkNp4v`w*A=GP=k4?)OD%V&|d7t*XBIb=4alQcfZY&J$$=DPq?#xSFm2h@D}>kPIdpDbvLhSvg4LlHP){%7rqD6NJyI<_laiHx+-q>+Wk$2ek3)TL_aUxR3Wo&wBV5g5tuk#`fMzGU|N*!CGF&1gn2i7?=J3Hph;uxGf*XI`{WTU~9Mvb+L!)cZJt(TWpa13Jaci@gnB;q(&!#wv3>(+n|VzQ>5bH_HgQ%B5XZp3OgOX^u+l7?xj!cOD?wlJf~0kI>4$o*I>&DB(?bds}2u!`Cd?Ck-*DT6VmveGz6vJ*=S@N;sE!#0b7b|LakI{SV(Pg~~tO*YG8IEW8$nW^V#_1oZ$KMX_--k8E}XcP&QIxMPscpB>O8Zmh;i1Z-1}sD%fo)0r3$^rO*R%Snz=y}^4pv!SB)kO#$pJ@uJ)`pSzGIYJ$k-EHpHoQ-eoRnVcgN}lkcdntR?Sz$NPZs@)q>uopJ>Tso?od^}cuOGsn8`WCSZA_=v5F#Ib7al5%|2C%o3=Yy3ynf^UDsVFcD7Psn{E`Gy_oJG6SvXAghE(VB^;7TsL%a$${Mm7MaG{$m@rPuiinq&$#u7O6u&@orBX#-qf2eM(&4j~LV!2lARF<&}TolG(uGU@i4<9gi*qAEtxDuIp00@;D@cXI8XFv7+NBRC^6?D#w5$SS^Yb&d-&~-OFmt}4=!SB9C;ZK^NKOKK=3OJh#C8?YqR6-e_)Jli6=6?x!Hek@Y;7LT>o!gc)^`uzKHkq)Y7vTZ=sU?4p`m$^!%}Nu!h7wmyg-UHy;XOU0-vfC&9z8j@=e~@qt=-bIEV(!MAbGxDEYj-fM@9=7{s+_>D`P*x&ByzqpLQ@8feO?(zDpc}=0sfBla(x4zq493wT+kT;Y4b9?+3$6!iH7-+kNyzV3|nXC_(yZJxpUW%9Yj1&JwW3;KanHrG5s&xjoQr>5$OsfJGx0uUsO0d5QyV{YieF@s}1fvF_ywYMme=n%5Rxa3Xu@}Vc@>+qt!JNQjNu|atd#B7cc8sD%7kTypA>Q!Mx=5MmL&!Vr`V*;$(DoGD`KR#;_b?R7o$w@?1Lglq}p<@W@fpwIA>OCMb4P}+HD4X=_73B*Anb3dh*@_*X}bO?0nUWz;=L1I!Fo=?3~{Az}InTchR^FK8{O*psQx-DY&GMHuS+}06Rzbc{WrXAw(IsyjvI%AKlmiKPCo4t$}&29X|_oe4(1R;>j4MZ7O_>eVkcUX&Kcdwa4I9@!>vv)A&G-PgFUJ=qDWt@H9>n){+71HQXXr{+IYbe12&YH<9)(wFQT(s`7Z5&t>nwrME{-ct7_|y%JlAmz@4t=@_OaZ^LSZYKEUSf%g?j8k3Z#kWPWa>Vp}ic%~A_;l;sZ9HlBwX)7Cl>E9@+ATf{*ON6^oxGO7>e^2&ta-+$YDE2Cb%P4|j-?*vD6ccfc9wMoXBj)c$vOp@e>}_j14Y`l@_Zi>k1Oj-HfP!Yq`hj0XMX)->XWi2N!ks6%6pMHQ>pJe>3B@_3}-nOb>F&_lfLAn*C_QqCQZSo=GnWuG7pdXX+SOJSe*`Q`vAYgb~x5sEt|C+9>AD9uZ_d-d$pt+)}2m5SR%fZFp-4OS`Zk**%zDppHo`-)GAT6R&vx+F>EU3D^DnQMXL1Z<0Q=T=U|t9Nb}g3w4=|!6uK".encode())).decode()))) +elif sys.version_info[0] == 3 and sys.version_info[1] == 10 and platform.python_implementation() == "CPython": + exec(marshal.loads(base64.b64decode(zlib.decompress(base64.b85decode("c$~C+$$FzY*X{+?plD2XJOqQlIA9}?1e(z}#vq!+cEG;+vxHN%+wXb)$*DmRBcXOR@4J>@HJShQZ!7n5d@0vt`AwFWvfSIsa#faBvfS&UBdgc)_q+VPmF;advVJY=Z)JPuWu4ATxomHn{X^b=;f~ctnSAcrMjc+{q)jBPCYYpphMaVVdQ7`0gIw@HT&%Wn-w9J$cX=y2q>WT{VE>S8L(afca4M_KN1RJTlyqlIgS3t1ksaijX}LeQr!HRBIc2fKw{ri+Bj572Uiw?NXE*j`dFCcH-;V8h1@rF^v=;|_tI77xd~39gtlx!g>&95t=WZNxe=pk;+{dku{dHVE$GCr#&-Hwd+Rlx+l!M%jbM7zeF>-%y`=$Qa_FcTJbFRfFzFXGg!gqca?+0R4j@xWnR$w7{*mUbnScIRU&%N1!S1|iF1S$^)4gom+w{*8yURR`Jr+^SlV$@UwTa2|fh@;%Siq8S1+pZ1a2`Kw2|{4T+-@W#-*EmyOC{cC+o#Zslw07Y8Mr`<<4WNC%MIZqjKp(JK>K)6F2R|&siFZuu1X_+iIbUMW(G=UJWjHX;Wxed_?j&aVtHlXs7C0rMS+zS(K*%da`p%`+kPSqv>rAvi~3F@GI;1d!)@GV}{^p9UW;n7O8dNq@r;`rc@8Vs?=|IY)r>$*d9B2&HC|HblEb8avGjEAet=4bRsi~tg@ENXpv)EH;Ge^1rjfDht5TwtPx&8IWBt9hNub)Z|ov1(wT?$1)G~pLl^!K*JG>Z2|CTB&!$R427Lr-rL9&_t{07p5A1a`tHIiJQ!Lk&kz@?V*KwNqYm}?QIGZ1SvffpjALmGLvT<&~=30HdIN^^h#sf*xTW(M1H?-XrK~z3O9#>*~^&jmISDzkt(;7FHW%QdctW4#{OCP_3&-*%@ZVkA$lsIe%iV=4l@@z1SUCs7yu^L!){sX;c?jLFqzHLvhx;X43JybHVf!3#GN9w#z*w{Lj)26)4el(9`tf2nB*;e_F$`Zitv|jeslFL`YKWW^tfYGKbxwXuC6=Kd%u_lMGRuTfv9ossGg{9Jc$q71A*wCQ|vN@VULp7>|w^n#65YL|o8Pjvq={rGw3a~YnzEHT2(B^q87vrgY|-amB9e8~<5PO&9?>#bfFmUeZD>Gh}mnH8tTpl`A1*!HY=&gJs3Z)e*&y@L&tb_49?Q_l7I{9f&NHllQNZLu2NuPLNM69HaM;_xA+;>#L|88mfTk!=2vyneXp_(!C@{n(DLFiQP!?5k^R|J;S=`gI)zUvBprGCY6y52W8ogZ#a53zHuoZ_#U*F?R8d?X_cHu`^G1k61-mDB4WPt_j*+A`DTS^T|aKQc@DI}J-sA{$^WUauRL9|vL*L$Yjj*Qt3!`Be-Iq*Pp`e_`5b}pD(yP=ZsW_gA*Z8lhOKRF!^!Z(y#BIJG&nE^RV)k&@%cqQ+NP$O!Y=sb+9zH4p)}d__#?Pn;+xv---L3p^wovF8m|E|AIbKbjh(&0*6Hhgwh!5Whd!`v+Y`XX|XNvX5-v&9A5G%dix}FWc0}UX_lbN1ZbBGf$nBVYl1nkQ#P+e*4&n*H>Q*Z3VVBnzM8h_+4@u!XU`poc4zEf*%?{v*6|*it{k|&0xIg{&1-3)4mBGA+Gkr`HEv}q$S}$vTA*}saFvK4G>dnAGgYS8=Z{AxSYllnYNv^D=c!zeqdTQe|&kjY|1xZt7OCd236S1+b&m+(S8ECPIiXZv_F)3J_c)gh)|&(zsiGg=f`)gy?d$lv(VZrHTP*c;aZI!r?gy^*Uop3B6y)P^NF5H*Bu{Bd?Ost)`I?wH``ZRye3jT6`&O2W{O>u&^Fg9ZLTNmWqEl<)xS}*8qOr=)6SDrs+Y<@3Yde7Oqee1?Yp&2h3s^=i7H`t~fP0M@X&Qs;pP25(WM;l*4)xQLcvr-v%%yS+=YjlNMw=p>>q_HOKZdV1hTEKG&L(x5An3Z~XrVsx!7HCLZe~t-|#;kffux!ou?Yne*FHtG|>uAYgd*c@Rn#n_aQdZN-z2d_2H&|dCX)0XNj`SAG$QZ{>MdAdSCPt419|F&Eb3{|pAr`jd4*J7H1@za10YUXkKwekbLv@a4ixi}s3)}i2>e$hTqwdr31~{5=>JMSc8|IWNN?zB6KAcD!dVu=f0P#FVRHIF#?A`DSEB+y_oc_azEmA<_D*%B0vV+W?e(KqXmflNVOuEmH5OtDRq;}E@;TrT#7F~MSQQg_gdzh!U@zRUWi3yGhVG7?p9d=4k#@X9T>#~1ReJn`vvrCa^a)ttT(}1K{4mYYXfx#RLT`M_5}NK4VSt{)IPqIS)^6G3J@7Y5)$yxzcoQ+hNCcTeZ^)=euSE+e#>II~X>j!Ffw>_IG>+qkdO6lL4w|jHPpA^Q!3wLEn|RdVw8r$I1_y#)0u=6pp0fNwcX1lJ)G^LgPg`JT=eVaIi5P97;!UVpI%U)-TmJ@b{LH%5oh9v>>f@Gx9ub;pAq)LL;rB$;8t~LBjAd83!wPt061KiVZ7P7JekM%-wtTFqnt_Z~BW2k=pge~)ZLw2j1)^$*#v#z_Ft-&2=AY#DcBbuCEr@V%i}xhuDYr$2$@r4DMqa7mIqK0NXFfe9Vw1OOoh2fT6+dZAGOJF~at$ar0xz0a1;%V}rO0F6C4*6GRR|Dy*j0uq)3D_dX;9S%e>8dHz{7kN8sZgK>2%7e_!rhK$`^UI|MA#3aQQ-9ABc~x}onga1PbCXq0V~URyl|s84Wl^s{@OZ|5}<9EHn6%A*`1Ng$*wyR@;L}JsAyhVa*^IJt|9He-NRPhyb>q`Y1&RyR-f?k2`tFsmZXTA0eg)voHmD?a&qDm9Jx^ZPqVo_PRtv@Ov1`I|%RPhw2)TJ(zYrw847ExbyajS;Z9T~`zl{CUg*mdM;g(Gp&qHflS=J!||Sq654b=Q=&V*+-nE@*uNJ=bz#Q0k3g`3UC3y?z9WvI3jsQxfiT&ksU1Y;o(ytTkS!gYCGldJgsrE0y#icOs;X;v4FmG}fRrcMP{|#X0L+C4Zov3-F!2KjgXyvZlTB2ig?QHK6IZ!>l&Imf%P=6&W{49Q08Tw5bRRnG>v{ek3^(cdDX1WHkX9yk^}MRV@Wmjz5!hcogmYk#{hD+h@n#s$oxR(vvA-;YaLVL)LI5u|p$%h_^~vi$txhr1vM@`2_glh5|ojjR5P6y#R1Wq6S6?9w9*B*WERSHR9ZM?zpR0g;(bREtR8(USefl1r5IxI^DBw?Ujh%LSzM{YlNg#6wL58qQN?A)bJ>3AQ`nm`e+KeFo|6pRyGH23;w7PUxfK05IjpdV*-D=V$OPl_3)Fmh{j!H(5_Bm8t%e`s)-m>=J^WqkQ>X4pw*}h<>*3%qZg`$JYh!NP^;%3HVw{JN!a>o`CKD3K>^19S!D=I7qq6?cknw^$XbG9PG{Y==m?inT(*TW57|Id*~Xg*`rj}=jaiBL~W>GH0o4uRoYlNvrl)dj7C8Gnut<`Jp&F`JAuIaz+F3x@D%*@SO}VzYSkaTO2c$`9GRj5=GpLsZY%1{;A5MAWfYb?gN!Ly_7Y!EvnL+ZBl9#_YtxIYcXMN#sRCD|m|bL@CWpiQ4L4=%?6N6qnwoB8lgW}-hfJme<@PZiEYnjqfHPk#wUptUR{nlJ`K^TlnY&n<{c2N9NH;evg1yS9bM>$`ukv2xAq9k(@)xd-Gfk>XrO-F9$>6K2bC@{yK!})Xe8oL0Vx6$Ct?mzm5`1nQ?Nq%3w=}AbH`;0b{dcP2G1Kwgk@ztje4N$|Pb~$o?rj$xa#OpCV>Lv-?J8Y=@>INY_+5pA#nWdjr#!vNb-FJBENCZH*AuaY&pk4e1)B!hvc4w=aQ4YUro6uWv`n)984Z?YZnr1%ZC%!iZ0FzmvV_O7KlkN+TJ~iF`;wpBli5c$?2lsYoXvX#>+Ve^kug3QQj_bP%5a(WYQj2yME?GX^Ucw!hE1U#a?7*o%B}C#^lSXD`rg|>)2L;s|DF?pV|CC!A}`;#d<0)`%a|&D&D~z&cH8I~TNALx>Xh|^iqoo+_g<$(xHcxr&CO-GhlkKGf?yj7<4VdmyD*0*!aCB}zJ^WC(P=X@ns2RW7D!et$-yC>TLnJVk&Shvr8@?anDMTf4u8hGi6$G4B`0YAT2X(&pue()57JQ#hs9s;gWCDr~i_jB;qxj$v0HlKYg^IG`S-9IhmOG);xT;4L8WqQxpXSf9QDye6lVuGKA%^Nm@8NQl3$0}<>v9(>aAt@@l>TIYM=U-u4Ifgk>h@k&<`^$t!gp>OByd*1boFY;=s1{nMSXnJL5d9{h$S0Pw5wN+Bssc>*%4fT_m3S>TMUER-Wbmc5Zcam8YQsYk4SpdMi3{Mxyi%MQ4N&P7?bi_8L7ZJ+Br{g1V`^9^0UCy$UrUn{Cz7WqM^W%Vu4!N80%%Q?w-X|c9X(cX+;fM4tT+i8(S`yU(RFM|6QS$tXcbF3Fx+?m!O*HVw9OxjZR8jwlLiyY9&`__w4e#%dlE_D?4B;B4WlbtqR?R)PI)V#RKt9Wy@JFN;n1TX|(!OL-;Z=$`-n=lJ&j9G|r5=C^G(zim4{rjfMm+ke>h?fa=-WKPP~##?Q_ZM&27+r`EK@8Fdzw(&5C&IxAJb3p~_dSJ4X(k6|mWk%~ZO)?YCjEuN^#fdr#-9k$$s`zam^mVzxezADgRy6AN%0K1OBn;+$wEONA){wc3;@2R(!r))V-8D{EN(c?iog>9DhU^{`7rEiPO0rUbK$XQ+ue$}CSs#YO=ghD&vN0x#NpBKA*U(CX$^|jOWQMu?|q4l-U3?&EKTk5z5ZVf&LN!$CY+~5q|%jPNHD8=`jp-ZY;qU^*MM}M(X`u4tzw|Uy8aIu@)a=G`Pwi1<7G!u@Ry`t#F1ZGY>}qJ;mp<<0p;+@I+e+wgPn2dFHy{_lLCqfUo)qou(bEjpBl?roZgBskc9*{kA4)zri1Xjp61I+MB#3$A^CFp!a^NT1z~2(9&1lw+?QT>tF}A-)g5|0{q@QF~(p1Eo-s(uSEX!Ixm0s(x;{o2VWt_?Aj)GHf7`|zt&gc15*>XYS(VG)AkmG1FUfkGX0-eX?IxiZdmfu=`c!+V?UO@tw{R5_f)l#lFS|L+8fmUlKH9fvAX^3xh}B&G5RI+vD`$@{c#uBTyR3Q@xJk^Rl>TM%=EwKuxqWCNV?yR%xyh&SgG8y!7bpXJ3cLAwt?$j|4Wz3b^#jcvR>07A{mq|Q#}sWTc(Mm(DBSkt6^m|=dAWK65W9_`CP$GnS=+@T@3>LQcY1SW_-l#YFCLBbA|d@%O~J;JT3CLxj`nZH}EUloVNCRgx40>fy%_MmM498Zku`tce)E#-joZr%i#z@$b7`0hO_!8Z>H;6%mJA|J*leZJ&jE&K=Nk$fHjmiUbWrJX2F^q2k60S8L^^lGJ(%THkf_G6cvTf00hx#qk1#CnUm{X4h6=)rQ6EPLi}{<@D(%(9UnV;~|9+1DnNzth{%_wp&wI&7?W7pUx4@=J;RL0fjD&cvc1Juy*BZ~&uEJKf`z1@J}bRypNZ%ZkZ~8F+OM2?OS<(J?+^hS5$3F%neelOjN_5ebCQH=3|Qhwu4&HrSME95F8bz&o{yI~i0v{j{M2>Hc~@b_=RF$cr=76w&;8ymRpj&Rxi0DR`GwEk=^{HmdFt{16|;=s7s5PX>nrQ#ZT~zoa(eEqo!&yykLkCBHGl&eStli?y-=Y_p6L)_hrez*r4nElctylYswSu+zsz4L}C*{ugI|+ARP0l+F46_FT{Dxt@Q)nBMlsa_<{o2G8e;=UzNzc=xRX3to7bT1l}6m>>9oc^(mKdBUkTHrzLd?2DlGWjmV6iR`^J>`eUjJ~oD}%N6S{L*>wm;v%-`77e(b*Sy5zGK088M1ikZn61o*Te0C|u;GO}|hcbLTMu$eS?%Komkla>>CMoMDt9C%mmR#uj7e=cL~p7NZ^xdHytYQC&nDlw$H{#OqAzwJQ{_Mk#UR7zYf80GQwLNdlAiVp^2#M!k|6Avt6ymqe9fJ6&bI-U>C1oG{&~o;T%D5fcOAN}NZ7w`j{?4D6bT9d0sjlywsWsp$$!-59@1ZT#GKO#Ak7!vd>pM2GtWoMe{!ioe{M&O~o@-D($2I?TUH-O5wFP^`5$H%;G}U|Q(X))JK4U5VVg$?n8<+j(zs2ADHU6oXG7ff{7g+>Z`ve=bTkPsH{;WuDDQ%3?eaqx88}RhMOKiC8l;`-LV_jlzzx4WV>-P`d0((s(RW!syI$b0gZ0@ghJT0FPSI_U&Bl!azjLOE5SA90f^TtG>02W2wi!>uvsVKmE)7|LQOMM}PdE;{}}EZUD!?dbOLCviYtj-!*7$x&HE9gXOxco4?e@OZ~sDZ`DLp?hoSDa)$M}U#awYR_lGQrzh9bRNL)VvE{yjjm0v4U}evJ+-#+f6SDt$>7PYszJc}BWxv+)ZUW!}>T63rs5Oz)zZ>w28}4O2t9^rZ^Jy1>zLqfWwbiX&WsDNWBj1I1wsWo(`@=j`)-#U%T|WOVZ}4}y``7aO?{WdyL++0a`U3kR$C0GZd4*d!FY7~&i`yU<@O*I^Ul%>F^QC@X`*NMtW?2t!{ci40&NFuUD&r};qyl^VHZI1&G4c(n9l*<0*pDsiY8orGD4dZ5E_zVCocCVEGC{pa@Q>K_8Ar6u)vzxe!yt-k#lX_z1fe4xccm9LWw%ljkxd~H2S5UGsasyw`)Mv{z!je4YBh&!d|@tjvF^K}9=2H@dO6`VKx55N_1Gs!E!81oo^NCX+IFgap$1dbh9hwrjII)x_O9G%gb$amASmCQzn|yK32!JNCk^K*Zx1I9R^$8ogy-c@zlUMAMz4|(>g>_reWzTFc86)5EUB=l)_H9`#?m@DEUp(JsT%^V*%laWWF4rRU^_AFse=o78HXNvQHJ)SD1YAUBn_p~xf4PPR_C!tn>HNalhobFt~XWCW?ZNh=GkQUTb02f`ehNi?8@iFyt3>>G@!anc9P0%A&uz3O*v5vNy9FqDM?_PZJPR89*E8iiS$DS|u57w8bJaO)o5}tWm!Rpjos%9!B<7c7MkkReEYQ$UR&V;cixm7-mj+6!+W@TdY$WK4L`((A^8w`M_O~#H~*Pm^)Xi_~_Qauf->Z*(Hyy%3!_2ggydfwMxUV0)^FjB=Pux|jtOt~ccv5&_UXaj>+SiFN-#I4LCilb_>v&pd7&t%ZV-u{101lvqyPQ;;ss(5}Ciae_n*=0JdbN~n=2a~~$EeqiDyLt%`Sm4UT(W{loKHru6VHKYk+LNLf>q%ynSSKYkJbpM7Owc(GtshIkpow(r+sm#IqysZI)Ebf0>SG$|`C|*~T{VP~DS3!3bp)$O_z1mW&HC{~lI)%&La!X-d_<*AJJm>p=!5Qh0sVF|5!zhwVeQo>xBZYd!q~gOgwlGGf!$@S&Ipm*l7x16k1uc5-VQm_1^4H-!ywQSc9qD7#=ss-|sMzqTJ)SR)?s`$b8Amet{spFAs=OgiR4r|A~YRa^53KTVt-D#C+eB2WsR}`OF5(b$Dw#oJVK&^bLRiBv>Jc#PsIqWZY4UG`BFGQ;n)v~BJJQ8-bv&Jzn8F7qwkUwx=2|p@qe}@%LNQ)Ba+n}tXxqDFxmu^agNu+HRuwvTVo(Mt4s4>C2zj_(91hd$JpwEiX0LQybvm3S7)T7HE&hX*!{mghfX0DrSp-}a@ilaPj5)c8Z73N>i?K6mFVd*E$=(1xpE(j|65w+cs!-B|7q0oZX!w55=1rW|h&#LnpAGV(wzS2UK-=n6TeD+IbnbF1YE=6`EqTWA6MVK?DJPw#)@LbrkJ}mSJ^DD%Xr1iZ&9AwA=drdRgZDfQUk^iP4e;z1?k#qlhl5jU;)T;8A~d*Dhda<7&lN)j65J!gZ&kv1^w=u2ogc7=FB^o_puvyep$5_qW0kwKTPIk>d8E~wf}&5Fm=o{9p+c6F|2viM(~3Zsa|&C(OBhW`O5fyJ`9xq^*m!?*z!$k8J|^n*Kq@H*JIW03do`uR_zY;a!mSa2jFJO&)?6R5#Kn|>T*Xj_XxALE@+#xhfl+jNW-y#Yi3bY2h%8_=$gr~Kl)s+K(S(MBqRcL^TieMh^#6b>r#2&8)ivo@ystBWY9Y8xYab^Vfwy;Jb)2`=2Z*mJ+YN^4s_0`J5U&VEB!8YBvyVhksou~Lc)9Jm`)_3Up&KYXqehN14JyPZaQK$pIb-=tU^J^a4tO*QO5kLsekzVmK#le{iv%eg+&k!R6dc@Bn5mTfxO5-BN<1GBg@*qX3m_+-y0babpMRE|GMsEoP8tX?{I~B#5}!C8%xHPcIW?&EiK{yw?AV`;c{lUGM6|baAaRGHF?$$$*YWowB{1y@Ru0R5(~-X`@Bfz!r?bta%)`X$e7HfokLTTTp#Yc<*)YqB?gd2Ze@n;2DtAM16bO-+0TBttQUOu8!p^?kp1HCdOx21Ses`*mMb~=(w_5duQ$8WeUB_fp8w&NjNMGIZ2sDeTA4pTZFaCMroY6+-(g%Ed4^KMugkow_<5$Xt6G#QPSLKv@8{3^z13Q}ywAVyAD{O}UvgP{`CbBW*>b2}pX2PF-1aoKh(-CrZQa#v$$4o}vBU!0VJE)_;SP#C?{nMg(?-rmeorBv{CnR=Z-Y52_7V%QZs=Ee_ALMSRsQiT-~1{cp5@o{yZmJ-pQ+51NRDqV9A4%Y-;;jak`@DZp<4c^g8=X<`1=R(<639yRd~kcdQ3=ykwf66rF)-qqbmYv)B_PV%JsF0zKCGCU!-X^{0E#*B`lN+>Z;t`qo?1j!cH3ipsshluB(h_)m1~^hESZ$3G_$6Qwk9D(N(GYx1I7cG<;8Xzi4tKy+I=~7yLix2+(79-91ekiwQs^7z3%=n79GM4zPm)f^+G<6U0A&XXQi*Z&8;`R0BVwbMTwIJDzJAv?nDNXu`n33R1hJHcXt%N#OVc*wb_I@GnQ(nhI5TfyO_RM77!3VkN0E*kuE-e#mSTmR+f3?dzQg@x~vBakbtgt+*Vej04Au8?wrE1XwwnX-8kM7(W=|e&SXQMWI&!*2)FX0q@iyS-<3B1Rtet0AuH@D<8BSN#U&Xf>tj9p_gOlzZ61XVyn@yseu;J-O-~vtRfq@D1$ZtX_r$)$%89voU3Hw&J`fn7BHA#yj{(tK{T+*iZUJ)DiVhzTIVm|>z^1g-y_rn?bcu(pl`R9dgxRHw?tG+-WjXm8&wpw)W?n^>H#m`ms)iW9m%b?6Y#>6YAfTIQulbapbx5oyhMS(ap6|LA;yrp^a8T8!)+ae2ssB5ti$+EoO+U24-M1uzEwLqRpU2#XTWdN6E&EqUaBC&ZydM+@H@BE`I)rUgxl4WYtBTK%t(5`nQa}z+P;KTeCCeGaqqLj8$ldPK&jaYC3w&x3^+vV+iC5)^=Z#Gh|xJogs-4^y)%N5G@gxd)cIBeAEK!wDDpk1?DwKb>I{{$HWhFJ$NHsDyVYpf5a#GNT^jXQB_LVz2BZtXC_P2s2vxK)za92bfDbx84jIgabWGoGMSF?OJ5q;hAKv|?AGNGTjDpSdQsk7HYf{agbdBWmo>U7%ZzeD5J@xtj|N@*aj!V}XtG-9T8YV`^;}Spg5Y+K0r-w}^LGF<6qeYSx5V?x;RjM){tV&lv7uT~gqt``DdVQU@|h^P}VMm_TvhhAdasf~LcisC3UY14k+`fWIe!Ds^Cla*(60rlCy%FXJFl9sNMby1ciz98L?aLe9VNY>WwV07rV|@RZR71ADu@v|w5tZVTN9P6Aj@azTwwfEfWJuJ7e?V8pt&&-%}EOye^z+CA^l=e_KS=~7;oVomn2kNDR)HEkSXg7)S3JY(AZI`ck0^IQGG>vqrctsl?+hX0+*+@|X5D$xWlli*WgvGTDP;`|#6x@NMqwt)S9Oe@bkZI>LgWdbIQrr%e_e{(2uJ+T>Gsx3%TmzszSj3zh?H_kG6NUGioua=!Cr%ei?=Vn%uW&X-y8+gN6;SY5PTp6{0PQh*I*K4rQ8_I*G2^Zrp{N@vMGbrK`~$}0((6W_^xWZsOM>(<#S&OiFW-|fZ!=qHiCkr%x^=jYeJjBYUggKSTJ8w;>rD9={N->%I6SonJ$xVL%*`k!Sxe98aF`CA{~^AFeNNn+342{7Cfdjf`(`5?Ok?6^`Tc668g)`BH1i9J#AS%2TZKkt8CWu6CqYYV1)kGNv%lPk}^0XBYH&Znhslf<+zj^lTpDT4b;zDDM^pZPlf)9l~gD(m^XyjY6U%XWXr@gDeQ6UrlQg~YJ({>J^z&sY+}o}U=jc&)6Zp9a?dOYX{2mSZI^G_$WwRHtm7JjbN=846Z{@v9d-}T4e_3P`OP7v%YEm|hRR|m)XS*F($4#LJD{+~mGy4ln4C&XeoOlAbF618J_24X9A5-mu0}vmVB!_;t}%d5P*zz!7~W#0L2PCRfxe*ygm7aZneZBWCcVQ!j-An4V#<_VdgcN|Lmi0YkONW~=8mp8$99pyfSd)fZ22nl!==QoaN1&5pKsP)GDwgYkJp&2;Bc2>&hjsxxk@xYFxBM4~C!no&KxWL@+qSm;-2=m+3^3xux#&^NJ7FS*VGj;e%^?Y+`@leo%6TY4pESTPU#Bn{@6(QU>Y?sMJmBkF4~=3UI@H`Z4P$UsKPwF#N}QJ{LrI^U0UqyvU)7#-6HW}NF7d~<#0Hool17zYhnQ9xud^S9tXY2nuAK&@!u)oQ7ZyGXS*!1l7NZ6DybZSc=6CDmo`ggte`&msl?&5X}1v1FWD4Ll6|uQp<$_O$a4SVJzb$eBqjN?N0$;9YNG@xe*Id&+PvV_Pbrg5L;3d*+~h)R-&Q@eE{aIxsF{Y&%NEHX-~*yS0ol*9j9zg=ivUY$3vT;0k+8_$IM2juUk_5dS`W;~>)DTi}d!VdFfc;U(&UQ^<4I1YdHuJ^*g9!bCj)K783bb4!~L+&O`L7+FMyJ78}gw_GCvC71>VC5D?36M=8cHq#TyBJ`2x~SU&EB%fwa-(0Iua&S|?wg~)WG%t0oQcc9yKc5m(P*!7cVc-wr*OV$>EK|jKsp+>6M17BfBFLaNc6=!M{g{+-GhB4SMz@ep1fnW1(KIg5-3$^M)isbvN8}dM#(&Is<;gPkz16-%gNaX-8G75&fNHaD$rB0@-uT-0H?)qo00Pk;W9E;InsNNO5bZ2pd2Ev?nyw13P2|9lvA_rL-00K(6rIq|>xsCG8l=oE>m9BY9LbN~}-Gvxyp>1BWxS8)biAl!+DCfQ+Q4sQ^BoXgj9u;l;!J+;V^4tB^}dla{}8Cal~dDT-Ru#{@3}7gs;#;l(SbnSBc&V8<^yN-7I=bRdSg?$YA(NR5jwMyGu5iPasmqAMS6WHkj0s(C&}ZZRv@g7Eb!DWgdptT;c>_I=kUTrzrPK93aik>t=!oJYZjFr)i^-+scK?l2Jb5q-G%sR*B=|q*?L;Pwocrfr|D4HY=)nex|Ov&9rNuu&s_Cz-`@OX6;pem!vs1Ri03g$7Va_jNF+kV`uXtW~v9{Ybt8Bky3q9VHp(~YtT(x^wa}eF=h>&DzJC3ekAFl2{^Zmq3wWc4sjBC36U`<9v2R|)2>R1>I-0wE23H*_!p3%^!ZJ5ITdl~alpbCa{>acdU3*vtT-U!z3G(-6Xw}Qq9E5}6e<5}`w`OOi~uZ1gKWxIfFqA6Bsz;!Nd%mw5w2f3I)j%7}YN!tQ;YafGU1q?I?j&WfW3-Cwi2wW7{VGydQKCtcjDEG##SV_h&+=MZISPl3-QmA~3*~}slio{WI*2wSR2;lvbLA&cNBH2V5&^K*{nbcql=^1Qok~{O6B+xGKa5;V;^S2|yyG%u6;HnJ#K5*D<0>34=?k7oOJ!tC#AD&%8hIL>oy5z`};C0fCG^a?OQQ1{Oo{>=9SojwL^M>bFc!?c?&F%aRZ@G+%en#3H5x0&D5|Y4Kt#J=N!G+au@fX-h#z{Ctoe?H7M@ZKD*x`5Tt}j7r*tk;ztfH?&>a0mGW!7hv;(tUPrDcOc(q7#}#uHPd90|Wt1t&PM@B#c2*pr45yaIo@B5XC4f``CYDa>yJ_NnJ;=t=t(iE*2tP_F0K_j9nHXjPDr5E4xZ;=4py(;~6XGzt3()<1C9>`2ERmsXEu*J;##l^S#^mI@3-S)}#EtHV;E~e`Z_)ru!_&ruA|3_Tl$-BqzJPlD*`95pmiW{$nVBz$7)x=7ONkZ|`uR5rd0&XDuKVk*Xv%O^ld)JO4?05Y4c-1=3NIj6Gk?(GSeV~(e;$5NpfOC_4gVyg^QV+QXR&IQra~IEC>h2j^keEAEll2g0+B}x7{{{HCO|?o?;eadMALV;pJmsS3@jE+tq)?1^=1Tg7NZx4B`h;65wX07cTFFTQb)aMV5QoM)LhHnWOqSO&es&Z_unP^Xt|5QD^=?;}!PuzUN8iyn^p5GwWgVJToubk?*)h^4-_XlH2+-=M^kDF4HN^=||MH&yp?&7KfZqf6;U<#rR9ee-Hu~@P#!?0NUnt-Ax4z>Go9}pmE#m{$_L&2F#yQw`oFo4;&cRA~KJ%sMBTt^)r~33OPT_sGv;DK3U-6Po=BR)-e}pnlBKhU_yBSa}`DnYmr^cu7yZ-Ip^_Tb7mfV*e!h9^?yOpfx?P7UO^ZDHUd%W78<4vD&8GAX${3{+pW!z!={l46@ef-_N{#}3dulm7K|JS+TE{eW$eg7Pvvy2awW>L%c=%VnLU*x;&GCcKSd(mFD?_|M~m;d=*EqXuEo5ke2F!YDDd?!J^1F>8Eo}c{I`7vcey77(;wDQxig0T=mkjIg=<+?j%3Ah?E$`_q^^U*eHr5ii$xqJ5Gj3z)%J$u?6i2&k${+r#wZvz-XME-s-ptgCWqq`Jo?A7&w`qwVe0+ZwCldKfV^~$Hqfr54XVaZ0BCXu@8F-EdoXOy@h(RMRSywk%%k4z*MUq%`fXYYG%kK;NLD8!F@_Dv23sNye#9v`z$ZscZLRT1>Aop0W)m&Y^D~PcgUSe&O=Sb7irrTpHxoD|U_WwA0xAsPHCR+Fh&BbuA^R_RIL0}wkI7kBBad4X$ft}ciZGQb%B}h8mlbLVtJR%u3U9)UN|dwFPY@EoX%sK*Tv2;u>^u5o>;*xYaH1^b9#EJkxW*=g(Bu=hF2LC1=|N_*s%ljElb4{M0h7LQSb5m9ISNqGSJt6!S1@NDdre7vLQOoOOSVJpPNz9DDSNp8mUXwsBqcEaPFhL)L$1|NTRumAN+S*U>0znoTzWhA=IrFjueCa32R4s+7?t$LJT+yv>zcT>{ch)+t|5_+LFa3EzZ{@FFM#QvglW;_u$))gt&ey-1nupd_u(y<(guv$myVPbt@P48UK6LCB@RoV?-}n!N?|O)JU^6ea|d2LaM#h8S#JZrH-%Gsz!ekJ46Qr)9=gFI>5psX(tDJJ^CuSH_apuo{XuQRE3U5quMTBLdS-}t*8zWbhzB;TEdcLxSr;MT@lYN$YOqy6ZylE`7w#n&Mx1O(9RL%(0ymuj|K9*E_ISrEX6pvxPT=Qjj6K|X&3g*GFByQ}rh;NT6|?=m8uCSOZ?o!I<(%Kihh$9#=37&r|~2G6Jy?=M_)xeVo=P9Tl`E9O)N~uD9q+(k%d1CoWs3TTIZ`?Vb{2F*s5rMeqdR!RhKLMz@U0QD{Yd|w3>n0`}Ufs2MBZFo*S|$!;kaCYMaIG){*4*eBiIR_h0tBCY=Sacc{ZI!TxKTs4pBB^@HM{ITxD9e7NuJ9kFCL>Q+7euG7^Qw)=@UN6jv8Q;#@u%;WxUPwd}fsA97+s%(ENTf7VcTf*=6YuqQJh%1-x+S-Ea+IT(laWmq{Kj7pjUhpLkd8_jA1jh1sD1HU_BSlRgUt7))KgLQkU&S(UwLdoH7x@@7Whva4;pfi&lBWcC5pb2lpYW;n%Rcg`0B?F2>qJ!SlvrL`d&Hx?rScbRyich18PxS3rt60P9s8uI7$<9tse-?y1vtj}TmAkEZrQ}ZN#t>sI`h0{{^O2@u=dni3^ufKT0J2Wu*cN^yLs8US6Bf_k4v)nkd+M@RW*+CvCdYgrr;?J_UEhSE6Fvo8f87#Tylm?=b!)=g<}GYb1Y@0Y8NNgZutP?;DOq!lc@yTHusNkSG5CCUSnG_kx7hHXVqKU?SKGOv;&k3>&u;=*X<;T_nI^9Z3D3DHLRdf3o#Vd*CTUWqer6ru4oyDbUPhE!m!zjdN%dD@)EKktme3D^oqVdxRc%}EdFz|WL4SP$Oyekx)W%A(#!oZS7pWd%EI{GHy1_3zaOdwiBYEY_BjE2vEE|z9(hDMC-8}1+amk?Vz1p}v*PLK3!kzZ@vFLm&)@u{6+d)uRiw1cLQgH})JBtn^EV1uQYg-vN7y9vyIrEp&v;2UvW9|573O!5Vt|gxI{hUK5%Ohv1XODKdzyE;taTcV(T-!e`4a;iDyZxKMUi$2vU8+FfQBqagWT9Jn{2sWls63W6g)V3a$)~utMukNh^OwElJ}v*D|fKD6vGQot}8M8MQ2qBj;{M&OK^6oJOCw9FI-BJ^l}_{;#>QtLP9Jx%4m9%hggk8!9*Uirkzc_g1zt&dCQCUm{nJuB19E+x(B1fR!?L>OSMX!NYNk3D_)g4_Rs8fz4}{{jVHg6+hact#dGDfT-AjS+JbyiKrL?&x{_Ld{>#6tk)gHUJvL4z^>B+%$8g*YhZ?&1)2{`PsRXTLe6nkJPZ7ZfZ7<=$P)R@8FZ%5nzTDPz^c;(5TjwhcvrEBl%;{B(+`USLO`cvgPYtRpiAGl`W?+76G@%Uo_3>KfOQ}M$_)E{uIb!WcH9qppy6r;f5_fw2Q{9|1E7{(}Q)9+4GoGeEzpv@E~%e;u;^I*>G5p$@$D~^{&^~-9fVi>0L&mZ>@Q!K=E{POF%;pcS&<+JhI$Kx22KsvnM%NUdJ+)VBA*JrzI;QOCZ{pOihg69S6&)5O8wsw2hi^LQ=5M#T;eShWDwhj6mR>Iy)F#$qzj~}rEZj1fqe&oQ;F~>I4ys_@j4-0ea({RfVO|WInngT}$GOVFaRow%x%YbWBpO#*H2s(X*e7n+5TBMOxm4+72SRMmUsJUMNS9zx?(Ml>PUXSU`3+>~1)d3&Xn9H*8n9#*KZr4WXHit;*cGd>&jYVd?3J#&cDak24ZEAiiIH{j#8f&%bkNOysCQqVp6VRyc0$lTS030k(d8!^rA2P;b-QvI%ot(-n2d-NfHy=3GjR6}fj9?yX7~3!JTv~ZVby#1?s7LFtK6IHK==*ET>x{P{#z4M@DLI55>Y`s4CBxVVGKY2D*tu-WW!Ods{}gdtgZ&wIFOO4f#KWG1PcfCRW!KCSesW`uF?g7-R-X&PjEIM~7&u(w){i1>vea(%AoYDlYcK8=b0$xZRJ*MTev9*NehEygtGg4bAg*!WJtQY*2mEK7k~BBz9XNYZGf}W!K1A(24mgY8|F?B!9r8nyN6_w-#)^PkOq7sjshAEA#K_u?aPZjTu^t0oxh8_KAcSKzx^+4@PzZ`<4uZ;^I72FyP&x*uro14s91(EiX8qq<|fM_@Nh=wX{+?r6IhBEz>Zk9C`}b>5waO0pR6Tr0Hd4m{|XxbZ47E-RWcBk$XR0?Xb}1{|viX*ZwmkSpu3Rs&xK{=NpBa4GHju;uzgX*UKVClB{(x9&{}PSygxuRL-{UHz4H;e*g*9&6+rd+Y^$1c@09+f?{~^i0~Hj$4b#H%_Gxh^Ta05CO2<)Akco+A+^IdfP;O(om*@QH@4Svz`>YL$O{ttsa7{T&%&G$FX(C>_3R}dqI)6%!@_qg^>x-&I=mkT+<1bL{`NMV8>2YkZj2*-_H7zr5!yMW-s&KDXvL``8j(KHNry95Qx7``z9rS^TP_eZ^H0-V4g7UbSAuTUApJ1(B{uo>N}j*eZb>^JNg#J<24`HTdrwyF^EG&nk|#^NISoYhx$whYc8lrcdZZD)qk!IVTf2Ymhwi8dPOrplx;oVrH)>-%`>;dEN!D}GPc{S?3Y*0&-YNzjXG@(BE@(by$7uL1~!b>HuFy=MNH^BWF?RPl%->5*C}7o-i1hFs=G{PD5;L>eQsmFw4d&gvFJ0j?t-jSnoJ)gII)o~FhM(GLkkni<%GIpy@qr5I9OU@XCnQFvAvz6LIa9-OYJN8)tQu1_?+zl<>^Ib){_V}h3w$OUVj)3&d+5$mCw_F)0`*b)c*?TN=2BW^JnZ(>Kp6yB-qZXPftzH6Dyx;U-0+dI&m#WvL=)D`<0+wzgCxgzm%Ae#Z&fqihB1nbw>{szX{jMGadylN1@V+vSNagTrNlAP(mJU1>DzQdM@By@o4(`sJY{=8zR7w%j_;Ho;-3knZ1sik;^mDYR0yv`o|=FOa$MSDK}#6zYCY%IJ0l_uGv?QA^APpG`8t>j#=MBL<(;<+PcXm@gYW0GwhNCOMHddcRIH$%9KqRIwCkaA=LhQQ1p4b0)&g2!9E}U>L3Z+}x7SNY7m;k7v}fl~Yp*bm`PO4c;Ycsn#SQF(5B!(JbkPGpHiCA}%Yj{!G+f8hk4qE2mQ4)Us82d##3qa*^R$Ka$x8+n*7DTuoG^xU|2*bk*Q)}3wkEk0x;Wt467YKa#DYa=ZeG>c#JB^(%$KYCav!l1ntJ{9FiE?mJlKHE3`Alj9IvcBKnPo_u^*@taEru4#KE#j{$5?&1;(X1aoCJ7;9CLn&LbGjAgIyD^<}xSya0z%hMe!rIN4L$BlABs_;KKCr$fJ0diSJ}>4BPdr#`v*SK>2oJSW6hm7=d&Q*#YlJS2aVj~}!)J^Iqp7Z=UIje=it$UEv|`0NVejbrn$lYu>Fhb}PHsu!SxMM7(1e$InDefiPnm_!Z?HqN5_COh{CMNcXK@R7iZZYmx?Ab>D>a;JHR!go;fz^3A~E+V#{967{Vzx*xU#vkqHxb9v?ZGcg$QOyqPejfcN(O19AdH=6|m+9P*qg=*w#rV4~u^HZGHvVq(tt+3oH~NZSB02iRy^UHojXir-Img-L|2~b+Kk8;Gbw7Bg@jcyt(>5LbIuUg%Eu^Pg{`y1tbuyL0vBX%4VDg32Q9IjtUN%e259TU{0yod2^nvX6DsPzl7DKVeeBrgy7gzqE9Q{PU#a=8`KC#j>gzG=bm8B_NKh)^fM&15DT}G;3>@OPK6}rpaDMw`eyC29_IRoxzE(z)wq916f{6N3OU^r9k1W`Wpbxg+S`LBEi;I*wXlaGXxxGnGrCVk6XX^ap9H$-h&$QI7r{yPskQlz-<1{X4$OEt&i~-iLpu$CwnATT)N{9XL<<_T8`k9s3Xej>;{Wvmaw@#9vcxNz=L>`gh{-_-gX`zeso<%|kzq^(E(H%#C=ke~#_?{3X|7`rUTQMQJog`Ckb7g&vjvN8s=LDHkJ|{2S!Q>Z4{xrhcz2@j2gw=Je|CyJ1G@M^1=X&H>%3T#`5Hpg20tEzX5LTZ`0b`l2bs*RU}35&(x7r-meVd~$QyVe4;J~Q|B%-cEcVHaUaoAx6LYBpj>-$iKUZd5)P%hYPjJlJp}KDZ&Ryk)=+5YA9oVtR^*Sv*OOIL!IBG$1UJJkq9^R88`To;_6?opm}#~b6Zm3V#x9kwWGfYT^^VY!>pCSqkSL8Fkld@AC=~SXG?l{2AtX_fX4zRSJa4CRmQ@+TgmxloEuR=fMd&w1oNnmj|KP5GOMv(0P3Uw&J|4sxTs_eOHV&8t7Gdr|OT;1Q#gTQlGiv!!&9?xTKj&$9W?c5Pb7q+LEDpZKB};4SzlKzxUY3P1MzsU;MVB+tTLx#reM`hcot+MW?ax>i_AsVZ{h{K(1{hm*LDw^whtFF(j2ZR&iby-?1m->*5-Qe#2ETE{0k{x`6`vyt_}tLX@GcS9A8*&~%@X=>%Q3&@r1K1TsV(L;aJ-#!!+5Uw6L)}%Jcb{0B9`ufpV@_Fq-=^{sPV-8{+pA{Wkl0IpMPNkfuM)y_Glj?a<~eG7s^o4rT96>h;I07TvfR74Es{1&)O++KnLbN*?th|S0ChaV%<>L%_9`W{#eoSWJDGjfDfifeQrE8u@YK>ehGYXO-e!ix`a$FdUhI_zpu^}qZWl+`k1z|RbL9%JE#S$KhYX(b08_(Z63b$~nANqce`baCJ{=aR)>lL>NCF1fQ|Jx`6xQ^Ffk>!Ls(M$&@4a29hI4@YJyU5XX%&qlpWBTir)biq+~%8gm=?e9qk&zxF!7(Y*`&P3oWSYp(Y>dPy%1LN%t^%>^qL#gpRkFeToo)Sso`e3C@iYH7=fcvqM*9q0m*BopM*npsv(0=^Kc%B0bnc2Jm*NfxS((t@Q0{B3alZ5U%(cvuNBzGg6mJLjb97r<_bMp|VPLyemsW<91KfdI1B_&=Zb2EHZ+2!&;VNR(JySVZALA>5gOkAUnePiE$VQO^C>2xKpWz^VAb@n(CV;ioTaCtUUrVw0Z^@E!F&Wn$~HkQ!PD6H-UFV-$hEr3tSg#18<*F<-54E?zDn+$!8QWF9Xcbhko6%rnY0S3)P$s?R9JG2EKPK+1t(*n~;!eKqQv5HsLqd5PkKApR&O^Fo|RCHlr}F!2UFw`1D_XiubR6iYW(WtatD_a{nn7WaR#@V||bB;`1)oFMf*C=zqA3=j#7Aev0Zc`bYk?K3B*5kjS^-y;8mgRX=3;n~$Nu8Xu1GF&Dsr<8^jCv2{?4NuL+fN?@K|Si#R1e5j^?!cTaZe^4cRq3FQO6y90&t%9%eSC3%?RpNV=RJL%66sBQ+f`MN?%-Qm|;u_a`mva^GTP&n~wjX+m3nv__w1tt^Cky$J!a`AyV3AOBGX+VZ9;)eHpOo#*0yJ!fJ`CHyKa*>!e-rC_A7IIB?*fQI7iH2=wMSIk$K^w!~T|5l!K%v)HF`V^>XrfaK*Wl%2-#f{68HGMznQ54fPYu7H;rKXD_=$Ai$7>2VF~;4ZnGNr2jHiwS@T#KI&v9E1ydy8nXc8Q0m|vS1*J~|-=NK{q4D023t1-<#$6mNX|3ShW^C`o8g2vc!-3rVmO1mZnPTLp!@|>h=bLUyFh3C&l3~$AS?OR*AzU4gZORAqS#|3Z_JeV`zc}>XN%6y{71;gA%2dIJBgvlX{MYqj9sshE&ZB|!xp}&j-Aymu+aU(56J?H;_mAm>wNuQ4X3`&+5zeBFF2q51KX5ESH5TgxIL+yV+FI~${*)5L3Wz6H&=#+ZIkz42XK}aiOO1uK-MCb*pQ(Ag?ovIhUV@1?08bkBdYm0iL42>&gjZ?$vv5fEl&u#z=48UNl<3!Q7YVnmRq4bu(eruCb&UIH0Y?D#)14<4-iNX8Bbx3}4|Y~(&=5APRV^86?0*mLVO)noHbo)p3^n_NetM_I9Qyxia#;4MaajxCl9cO1ESn)T2w^6J{%@Xy8=?+gSho%05eqQ52i)3YI`By|yz&FEW$E0Wn2&qO?vBP5;NersSs!EkDP7zfY(_^E4j~uJi)S7iIN&)!#IZ6lJ~eb>z2<2avRn_XDAk51z@o5z$E+ua#b#8tS7zKi=FGXuQ|?bd!EY|*!J-~;@1y}*$LP)@o1JuY%qK1A;tg?2DOrel#DMD)zyn3l-hdAUn1_3t_AGM1qnlI`CvY0vNAp-#p;nbGv^vFDVTSovi2VQ*RH`;JR)Dt_df~=Htc9FrfX%25ea5&jPfa-Z7uK(J(Y8b4lB959`J!>25RwSYW6Qlado?P*4NTqNVUfcZ5#364w#<{<6@<*-j@fxeafu+%ZDDCZE@zDR&f_5b!xSxtq^e!mII+JSapbuXk(WAt~WaQPm-@AtR5y&a&P2M6XxaTq?fh~DKPA=*`utB>$@%pZSmTEtVx$-&c7=ZmbmJXpQf%fAuPgn@!sfjuI4bmFt=#_P1v!yxe_g{nVCYdW>jpay+JBw6Sj(*sPziv#_bT8U6XM<38lHH#zP(zKr^Duj8??PSfj%@83quKOgTg@{0SYJGU|R0=1Qg(wKkjMUM6SE+g0Y8dGlUFQ{z{>)8VH$M3uB_ne&npFPPZmXW+N>p5GgnD9@Ypz^fiBj9`B2}xx6OUwsP7w)ohzUJF}Y99Z4J~&$?}tG7A#146!z{hkJvo&-|Uhu9};wYlZcG0Jr;79*;le@vINg_Q_UtE#3X<0qcSK*;vbOiS_cM{2Bkui&Ot7N|9R18UJK?oVBPH+H7wn;UEN}B%oiECX7$(Y!O0@$xa2U`R1Mp931;Dl`sFHKVa!8N*O91okfYXtw@a1Q0os6vRgc$04GC?tN&XA(@GA3EwP-T@5A6Q1Wx=Z`*#hmZW1*6FXS4rLkf`ILV8XTHmJ%7a-8i)kxyhM)L<=Dpx&K51(@pZPW_&H+DPrq8#p*W0MPmg#xCeEOW;SJi4;t)}<8eB`;{C&nWn2VYIcTm0Ks`5DD{pRoqp@eswRJ+b~7#bf@?O2u6`Vx{siUhurlOmlul?1#mVAslZX*P5l`DSEJpW4~TTAIf8=#>F&VaG(EaseC45UI>hjdR$|!Qy!GW+K9Hw`%v5+|89MT`5XS011>5V8+OEBQJtCrfOy)~Jx!a}z!7FliBBCmFNg)-vs>Wa`oN15-U62(xt<;@4(Ghb2e|@#E9k-JK%-xojT+)&n@ZmeC7A_j%_|l*R1>^le#HBeUr~_=XR+Ec))!`kT6isUn%9tr+nUI!-qmrP5({gaq)+VhkP~rYS^$i#={RjJY1Ry2r+j#xoJ!xQHJRd`Pu|^njC7B&HjOKv*&%$1aBr0RUTiFQdcc}Zw=C-GxiDg^pB98EyKG(5534s3;1ZsN`A)8l%2_$?xVI54{6f^CS{RvVM4c>67YE3i-$r3-elBC<=zTm*Qgt27d>kOt(vp0evMjb#K6i^tg|-c_Zn+EcVSy&zF>E|)<*o0xa<|V2k+UXaKuaH+@5RNNX$1B^7Kp%om8oA@_lni4XhD!c@48;BwWCsypffov=w{C^M$~@PI8(vN}?SN!<-W9i2_etwYJe%&p8iYh3UW7eBNe8_zoQC4(p$WwL3okp7tY)JE?BWjOL;3Tyt%H3XrRGr|0qzYEhT#oXY2T03O%r+a&W*&ya^qu)_A|r85T(5nN;K0(|zy=wW>WysafY@r$;8f%W4UyW!(5C9BwIfeW!LlHydSzE9iQPNChX>wDY|S5ejud0*Y*l*}svSUUyI*M+Y;NAlPR-Mpu8er$8P)@!>KLhkQ{Ht%aUT*c;cUYRGK%Trp@wN|*HPqn5`yZW3k`4$XHV_?4Q__V)5l-9}Vyi18Wkj7N*)-ma?m5f}d$W7NwyYh-RRt>BBdwc9k+-FgQmxg#odo#0O!aCGob5(6;Nsq?P2A=YV|{W)PAZ?Lt>djn`jp6rppE9xE*n8CZ|mM3a6AGR^B8a6OM+OBTq+3`*AR&H^q^(O2%iLRx^?7h;+&GCTbRI$@~xvMfVT=Ro49aq$B@V{Fj>qDm>K5so@n9)#&1#UA%W++cnx1IsiDCs~xJ(7F-OF*;K${$VTDbZ(FygmZo3l98)7`-eLJ1uG5C)MRTI|qRwNaT=yRd42u`#eDhA4O!Qmi(hhN>woWLZ^;BcW%AFT$Hy(n%MxD`<@Pr5K9GJ@Kd29Qp(2;%A1zJfjJa#V`)g7@7ns%UV=eehNyYOWgG-vrHS4;Gw*m5-tiuE&8>35Mmv?k7>vix_XFu@!T=kbS(l)1qQVXZ*dqAFb&c@+uP_tHP>dx1??b&E#3v^*`dF&`Z8L00JX4D8thuB|Xej<6mI=0rD&x=Wg5)V9{~fq0zwjA|hXGwT^~1@v*UBW$%JfGaWrprMW^4PR47JjWS~O@~4Iu~jMAJaFfI&__2Mj|CH5+J|s{_{iGOO5A!&wFMJHd=thk+2PvT*DxM)SUYbUK;kFB2w3MuK4r3i_IPH!wT0{Wj9*;Q`VKYb31gxKdrny^U*opkCT%`Ydc9%YJZjcyLBs=XMUgtvjOD4VHD9vKf2|I5NMP;@<8sM0sinZb{{H#*-zH~sHT+lLMQiFKTEI>@dgO5T<;vZUd$;R7`e>HcMiYpg%~jkcbmQqC97hXEAJpXhN>+9RmRAFYm&zd)_JBkr+|S}5)E#aXF1aNveVdx+~d(%~JWVR6$ou?Q5^GX8q)s`)6JBPYIZhy6EZ||E!a62W~g&3VPSEPI|wN6sLo~k^g!h_5GUL&&)W@v7T-=`WSw~{Cdwja?VWARGn0|!D!e&eg_s&tI1gB7iQ&QTt_1f_)cH16DeY>Ia%47u{$&@YMY{T1T776UWr_@-)RT@5WE?2-+^Bp0NuzqhUZ6T=cGj?EZ;+}x31hY~nw_SU_7F@jZuGZ-xzT^kMx@r9k>;4PPWUuZ$kTWxm8gKoKr)-9GGdT(F(Lo$TBg}TdIdk4*`9Ykxvz`HeVMQ+w(O8qT0bVCkqxJ=gTwVr?|tIOZa`pIL4b*{CW*M)ZcE*v}M2>{TX0cUYY^$Z)O)7;4)aV0r#V}_JiPojyirRKV><+Wwm}fRzL+At2GMTmFn%l-9;GjI^|t(r@;TAj|6k|bKKWML8X~EdXXEAoomfS7*`W98rZC4=ZJIO$}aB2sywh~#`pKIgL|OHy;Jj@dpXxSZ~^9X?wpR?ajvD;Y=8@hbnsK)K6+w=TF{@^me&dAA?6i7m2?jHG`J=Q|C}hDr1%_}u?5`9O9%O|0}Pg8Ep|uOv3}={LvLZNVHh*0!B;vy4Y^~mA-GYm4s$60ONkO$%S#1Z9c#QfVC*sPJ8Vktsc>{_PSx*jGS-=&X}@%Ry-|zJ6MSwIng3q){)kN`pS0zz*Ep8pdY96Ob;KLa9{rx{>Z?utiY-RFy?Pii#kAJPd)$9n;r`8f=}d82pE+gdCwA@k^9pmyEUa;fe&cryumtL^ogFK~5=7tmkJXZ-eDhN+O10Ofbb6Hy2CRT_R-d_J$d#_+#`xhokLXCa6_(5LjQuja-E}v^m(VxIXkp!>VlqLo%%!N$B`y>dWxFv3nc)+S?gJupguv7-)tcxH}FW46|JJ=QKi*@5O?V^d)LJm8!Qow8FH0cWoU{bAQMF&q4cEo(Fw(}&pfU94sxsEnh7o;}g|xIar`7vt1_(<*#DFTcbWD(^YwnooOp_eHE@frjDGfX+It%@(MJub$#3pat9oX?`bznK;qw?+3P1MfjE)gQNwwapI-p~1Dfqq}`^QF(NVuR2!7#Kz}KzHC8msCW~FxWXzE;3DbA^RVmsS{Nh14@VY|6l0JnEfs{Y8t(S94RYwzFQcfyF>i02fqnZ}*sCGPjUM4jsXvL(S^pPJv^noN68mdZ2jao@m28)IV(=Qs`<+=Epb+M^~o?tiS0n2%}Ms44B^_e6c)Dcv$?qjmQa_0K%yG0n*MZ8glh#CD7;m}gqH9NVL{6b`oT&+vTedWsXgK)Y@QwwwL3e5_G>+{1mSRkJ+&eqNvbIuH2#mU&a%tLA!HJ3{%t*Dly+#62qu`N1jY{#hgzaJzQ1Yw|C@i*8^%;ISZI9)$^wR?+DL#Sl+nNq*!*@UO}M`#B!hv&6~@ndSo_@uZt_jTZ&@8#IW`%gc~v-Q89iPe^Xq}Hx#Z}hVqij@`ZSa>Qk>nv!^lEgAZ<`1fEy~|?t+-|F8jC--rZiPo5xZP`#ogQ{>IRE5}fRUI-9?Gs^AMx^I9Q+isBS-%y>clZ~|B5wqB@lz3y19qwjXhh>O0~81v_pO;-hh0IgVz2xu@S4O9md$OO>0%J{}JZ_xQ%*E$Lu%~&w>5v(^`J<@jO@Gx9k7G*if-Vd*`Ee!8kU^iG@9CsmhoiEQ___6DRBebLMhhcXXiFR2MKdNRaE~`6=5k@}#w^=TTdGX@;`?n77aQzl@bB_hofd@1)w&f_HhH{8fLxi{cja*SieUyLeawo-D??8MsESxj-z*F$QDn;97V@Z2$-R#>IH5)wo7ZweHp0#J0xX+58i8{NgX8-gcm3?1b`>Xpc&7SzXU9l@DdPDPeiF+sMD++P#U$!}7jdtf%+h0CtbZoE??#W9*6XEk0`1gt(9MM-9o{(mU3f{^MQ(_Ds`i{&=`e95VO||G&sW4daU{dtPh+#V}*7r>TG7S(wFH(^tTGg%fsBSEDZbmJQZ6F|fAs=`GRbtC9rBCr93~uT(!;Txx>r!{~coVx75BJM7%5?;S2+{nMM;i=`loPag8GKJCH3RM{yEhxToJH)TfA9v~S1qIOf0j^347B{qLb>E!u|T4mDjz-x$WS99PF>h?9+@Swp^c$dmU@@Ne&wQ`3OTXAqB{JjTJW{sP9sBVQPT8HEsJ>iPT=>KW&Ed`EH7*JOwIc@Tc-S18>;ZAA1U@ld}BON!c%^cS75=R&|fiUVN8>=#M_0@7A&s-#xtsc;C(VAdWlb?IE`+zvoteJhQhRR2v@DD_J>i_`+M#@NZ#gvD_EKaYAye?F^vw68J9fA9Z%Rts%Vfw8+|d?A<}rBA&UBL_#mrq&|df3QDdg4N%~XN<7JfFC-5q3UHg53U&7OEI?B`{mbXe_`z;j60iZDVfWxT4D?_#ytN--&m%(_#9S$wU5ghdEXevm|elPxfn}~*Ly=J9^Qxly3bn05bOV0s|k-|?WFt9?C5>)$)8b!`xonJ|H9sZeg3EgwNmFdziekVgXe70&-a;XK&{k1gxFU5(dMbK;kL`apZ@+EV=hwGM6{h>V&_&cH|)z)x8mn^Q(Z>BVUAqDL%xw=y)<(@#^Jw>G5m97mmjIFZ{QEWd+N6j8~VTT`pRzy>)#7C2jrS{+ciTiGABdM-B#5xUiPtbp3yf<$w6}M$NWw=Gp$F>P0AD9gOJ@pWcTr@57Je5|J?Dho1L-l=tQ?TCy`fwWB*1w+3XdT|FD1SsoosgZ1w%W#5t>WnS4tI{{M$>sUGdl3hTbD`pCwZPfP8SE;LK|L<;;Jtx?m-Lv4HDj#=cZISJoajY``-t$P15zQ-8r9_dG|bS_=h?7!}rZW8Usu){j6%68fxwPh}eF@FsX*69EHXfxe9Q71HN&o{nadz*#F$gH3KuzUZg#qz8E%=447gEs{MzwEE(6Q}*$Z?&rSdmg98&~N*#%DzrKj@%zJ+&{HGeEt|WU|}5q7(2j60)be)UPhCB^wEB-Ci_8l$@N!!wbGOG|JcX$|J=vatRuAjp_$?nlz-V%ek#>x&(LSVVq7zhyv7`6tQm*#zQ3N&`9FR>zW={`zU9fH^9QWM6KMPEuB-1N4Td~jnomqjdjh9iuxbcWO9<0S;%(YNcalb~Ky85UuWG#d3-}{-ubYLIpEkus|!|F2^@AmJ+3DF#^!(ac#J9^(9|Nik$AJT8@{-c_knz9GJug*FDOPtsBkNK?QF!(0U3)Uu_S4*5%*STsJ;QOj}jLQ9C)wnk^Vdf2LQeq7hm3K$f_Y-Db{oMOM#&*TMr`c-E{aNqE_KhdbKk`<+U67z7;~e~&>n52b^q(S{O|q!=7+)z<68a^E4BYz!(qH_{+a&;@crBUd)2yM^S{&uM_d$;4}K17>VEm+jP18s+R8p{FlNgCW<0Tx|9N0`$JmAQ7~==;G4fjVEEs>hG=;4CZ+Y$xe={HL|3}=LgY&}vjC-5?hds~#+5fKEA6+a*JEu*1*4W=mwI`hit7Al7tdGC5Nq1(f?*{hpYGdq}ouMDe|6zfht(P1*7vN(T{er7;@6joh-CVV9+P@q*zh%5Vbww8!kybO-$CpY!*@3ingf4r_jYTVP?^u0zRNq;>-;`baUe-r9H=1|!PvZDf9UmUoRj0K7V7@&T78j?oBWJMdvh2cl;j-4)lf%E_5N-a(QP1vRbw9q0L*)-kly5#)<51?`k3;p}FTQ#0JAbB%OxPBDuzPUuePW9)!xVWM1Hn%<|B{x*5iGD^-sZxOlntuPaWu=u0A}m7>^I!xnPbjPu-fvT^(Ys81&mqNpHN$Dg$GxYDWx(BybI~QE_&jACB|5zFXtkI`z#Lo{jNK>ey)8R^xL${+n$ZW2#V}ggJr99{;-j#`Ba;m8aGlz$wa}t^crR!Jqa_tx{me@2fFR;)kj!7Wr?`&ZFNLc&+LW#cx03Uv1#}FXNseYiq7wE7RxW`#u$`PQFzh(?+hJ7M3B058ls~|KhtFb6?w-$4z18HjaIc|sc+U{=p8bjUV#To>#C!02XOFeY&@aA^7497OO+NPA;9W*skdJnpolAqX)#PK@L>bJ@sU1x8U;E{VA13WhW1-icrPpN9!o1Y}%kLa2e27$PmXzpZ<^P@cmxc>QB2rTdzhOe_T#6>lm}}vV55|tpC5p-mSY)ocSL9Kyxu1>^$+sdtnR$HF)A_p0t&jg;2`3FLc*uhw7uWvgbMgun4hfIWXXTcu5!y+3WEW)(N{C(9Z*v(;@dhM!SWXSt%fJGKz(pU8m~jn$k{o|o3`#qZl4ZQN^lY>r?TB$4iZ7C6SH;ZWJP7RI3@PebHj0E1%=$J)BE+b2%lw$$l+<$%2*W4vyq5!61uWSECE$owMGE_7TY!*$KFyS!F5y_95uc||AAVu@23jkhvcWH=xFECXzZn%m)P*)4RfCIRLoh27#_B<)9KFKna+{1e96Q`u3lU+NZf+A5e+Vta9tIjR54i4u~q0V9xvui#5>Lu-+y%54`YB#Dy6R;vxQw8I+S`88)yhiO=s+6A8LqUV_3sxDv~Dmm&>PtTIubl_U8Xom&Zb~m`T)p&CIgt=}&zM4?ZZOP-EQ|(rRz5iPLc&=r7g8zMPJH7&SA@iqne5dfUQWw`k_XmMVx}2TIefR#4zpHbUYIAsh*#|NaOGXR=y+Zw7ux|5o0NbyXI@SK!E*Kf%Juxq3%yhTqZ2tPFPcxnBv0a=wYx~>@?|Xsabe|?44eR6U{1w*!*SXL~H1)IU=&Qt2&HF#wGSzE3u65|^mH<3DzKo(hcybTkYIQ>@pD{f$_Em)mLm7Psp}pw%Kc@SPI~YI9(_AsM8I)HokT-NXUuue^zWek1811E2Xo+qFR?;Y!sO@3siuKT@MQzemcYetaw`r?R+b3L8Bj3+?pEPMTfjc+`g3DtI_PY!A`tBHTu;{dH^{`jLEyaQ)mtrR4V1HTVSbBoz2aSPdF&?+kE56`j={!VvYEw^MCjbWKD_^|aim`POUR8uA>ik7V4&=T_CvDvfxjLAfuMS{0h;8l|=hEQ^w{g1QwMI@A^?6#W#eTTL`5){k+c~;rdy*=7+Xf+yA`&3SR>my>+>)ueP&1mu7v993#W?t7gsqasD(cFDD(Xwul=1qqB;dSB+9*upaa?aP-sk4lQU{3I6pHva;+_~4e4%I?CPunhwjd`fJJC9U3Z|gcI>uYY^f`rW$)u@h>Kbdc=o6RiJ#H_w?Qaf?WZ~NFk`f9Zc`(a+#q~6EIipOrpTAuBj)~KxTDY9-3*aA)5)giZ42mI&xKCO=-t$dif;91Dap1CXDscAO47q8(_Wx9DxYM+~imNQQ&*kUYM)pEPNWGX-H9TVoZ))sFWxW+!U5I$krpR6RcyO2tqwOlsM-bC{Fsy-EE-Yd?b%84}GMp&e#PcR>z(H%_?8+S(3Vy2%yHy{hKP=+da=K^Rk)CFHb=n?=>1&)hoS3syU&?KTy1ytA+mHK@BTfV);NtP92>8M4AL@}e!TzL_lw{XC=T5;-X6c?;Lk!#!$^>z;*PWZ!-ztW=QGyd>P;pGe~;o*JB7J#X6`GwGH)!f$u9`83A&o$4YS6ADRQ$JWY8whT>>EZLM|_Dmd#CBZxP5b=^*Z=|U20W3pZc0-hZ~{$VybWKST|wp-gC3PR>&Eu`LtlAp7p^!h(pFzatf{b1-ULM^Yu`h&qD3?@gKM(vEE|Ic#SYPU|wA>vjgUjO*utGt5$NUpZ`ncvl+GF$G9{z-rz;%*?bCg_K#$>O^+-f~AAM1>K$$Ud_k%{wB)DHb$%z5_VJma|Bu2<{B@(BL7F++~A&3f6d->ap)UY-x@Bee5MYP*4*RxZI#=w+NEY*v}zckj`!{jra6_DzgjJY#z))lA71A7h%X*H-5wHFDH?hMJ!5Se@)qYw@(c?M(x90#dJWN7_{|&b1DFvoBm3kR!;3ao}TblNR+X4VvsD!5AXz4c_Sx$RDT?I~L$F)V1f=|N1uLD2q9ei2v=}^lE{4lm?I9&+tDe&R0P?o}(FLGeOpKABu&lnDF!~0RhE;lbCj(3*W6tl0;UxfLE+;bKDWNohe1Ct}-z{llx|EmuFg;f_pO_}4WOzScZ_KRq3h;~K40yXoXKgUop-T9$TNSFD$&3EjQuqkNTOCrv%<1__0y7D!S6Y`I^N$R&{EBjUXA^U>>b~tOng`(9)%o24KE4SCkTF|7ayny<#%=3BRM%I$M_9*Mfov>nj;`0)@V(E+MG@GEuILObw_{G1&!QY4R@}6n9rgMQlPP;s<<(TQ8*ZA&_zHW8@s;|d+yV7Zu+{W*Mf4!S_XjRPBeq3+r#=Np?S&x1ATG|BTCF|1h`&2jJ`RXYSut_9NS-x8?wC7}un+gt*tHfJ{OPO;W1;)$L+E2Nl5|?$b%8Ba(`tD}wV9Y@LzP6Uv%y14ecL*F^u{LTgr6z|we}=h5Tl}=3oc%J0|1P`3pLsOoTK@7YcK#&SjJDuI=LhnJdAouKL(Ii=z%^8{=H%e-Hm-p#&jFeEV)ix6AnONjhBz)T`9dRO1!KegrN6Gww>E6_$?SSbF}Cb441zu(a*>Ew^Ruy8x>$}O@`=GW#aQ?6YZ_>ieB(~VeZaS+CA`xQ{Oq(gk2utc6W0}a#%-JB$@~ao`zh|)Cy#}zq8(bV^}+6^4F~s~pVV;2-jJuo$!%K07z<-N*cTSq2E^SKbnr?Ne)93K$o2C&R>>QDe;)GcudGF#H}lWJRQ3I#hV#gFmmC&RzZT=<{#Zwz3SMMK=Sk<@Jk58@u6mVfyBqSL&B3pm`*iTBYM?Ig@h$kwjUK)O)SSPZ9q8}3iqR4Ju#Q(Yc3q6|B`s)@*oa=)F3G-9_h-1jU>=wE1w~a*oo?Hd&4+G{EMRL6e&03OU4)Ix835-7ceqQovT~MqOIcG3!Rt}!O72GhmPG|^BHT>RZFka1{mv2+w6!=)^xV>URpT)juiJaJ8V7s4EAK2@EV5A>B2OKrwx4CvxGOZrKAG-y8m6xNtgIhm1ed!bJ%IoK#dlkQN1k2PEi?YhX)^Em-OJyXu(J_f&S^tVwu^qhq6UeC8%dm!8~GM)?{d*zQ?S;&*Ht;DaIKE9&h=b17~RPOjK}O=@S<)wCf|kt2kUHto~;DUADVeKXMcUvGeu;%MIsSft|ALgdQIbshuy4@1r%7z@D;hOrAZh9!sa0qx*vAGw5o+t0rDUzZW)t!?@M-j@k2K2K0#d@(yuYxPt7V*q^C%&^^HwEs)#qo(#*cQ4>ym9QHI$;ijJ^SCQX^Qqpm6ytJQIj}%U4EEYPp<*$7+p7fMMVAef!mP&>It1Ae4c~*;55eVNpKmjQ4hcbp0&x4kPL6_WUqi)O8K)g?`~by5S%mD5o`O9&@eIy>e)re$wXrU-roG^E7g&njCG~*8BM}pp;mdBN}aux-ScLsb91eRUHuV};h2o!iaOPpY1L&D6w3t{ZqSb88Xs+k$yG`ezuI71USc{XxkszoAyu(C+pW+u>WFSF1vq%~@QhnRdHZG4df-JKBXR#n6J1sU;hF@Ll83a(9U`&-bL#_As88ZQCIytIweP)OCuu?Ft&Yxs_?bsZo=bI^L;%55eZeSRHi^T4Bv2nU{Sr-K%1VIL|j%hN&Vy+)L;qi$|f67oPdR`5w*sNLMc)_n<2oYEd_PRvozrQR!R4F=!28FcPPWcy7)sU5NlVQq!q#wSgxBTpMW=;|#etwk08ojS>t6W^&Q-&Kt8u!VL_D#3A-Kp&}8{{wl_s=i(ow#$9QO*fbKs0|;wJ8Npymtd@|UFtu%3G!|DE!26-SGZn`{KsLt0y`Gk7<|X_Pzc;+bM4GLlr82wHrS5&PiE`3$SYZD$sxuV2=rOhGs{NzzGc^2&ir>67vB@@2H#UPu!iJ&hxoAFp=N9Z^^|FC?~kgnOEJg66)}$TP2!rQ{;>Nbec$j{LEYecChfzA+eI}LWlZ4gI@~mx;naN?e37+5VeE-pha73w((dxmYh8W}1vutyW*!y-nep4xv4a0nPzG*au(z_KyB9v|-J)G+(9YXFQK(cQgI!Y=X}|D_iMt6{4s$U-uzG2%T-)&AQy0pzWWRKGvXNp=L__m-?VbdLHZtN>3jI#C%vQ24yTKc0>(Dvb}K|*@KLWr_)qwpDL&tyaLE$G*9E$paT;9&hEIrHE=6w2WW%Bshjm!ae&q7aR)!(`d0g`cBgA`X;)vWnAGJ6`@VkT-=Mr;V9@;vq$)A_l=Y#dO3|>ZaxwtET=I;{!esV-@rW^qD(o=|)7D*ezIL9BDSs4?nC5OmO=9q>Pw(|eZlaT(kQCQZ!YUbAe0^wiF^n*uk-zE8@KPCVD;ETPBaSiNb&zjcH4Ur$oCj18G-dz`hBde^5$Qu>-v4@@eg(FQLd5_l;eaNw{AACWgeVi8=Pd!-wFYgxnBMG*)`~G|t@3xg~`IW~gbYxZsX!}3s$VgcB^}FrI?;M%C@pw0p6LOL7h}cZ=Zm1_CbHZGS8NCxto{yq4@csDG=cFQ6O!#me<|PX3r-K+6riDK8V=FnvjX_LG0{k!YF9d*c`F{$7ajVVpSTBo7mgsjEj`iHwn5YTOO#t&#x%`4_ZY|PtLHQePd^87OOv=!Z(id2T(6#l)<`P#{&+J}5%agTuPW_jr>y8Oc!Ww*}ZLY#~thp7cyG@)H*RLJg46)yUpGCv>B%xVs-;hVX+oiSC{!ZMjuktHp@3)A$USeO8kkXoVm)L7s@PUT+SfNj`MMD~^)-Jg`S=NnGdYC6P9Adjgy~p`3rcX9Le=77W!Pmo_mEj)taH`fip0iw(D%OY3z}GpU9i27Q&h1+O&(`N`SY>MEB^_t6(q1atNBqhMP1HPVeJe?Q%46#eHaXjyORxvQn^JwgPli>ZmiMHsS*5i1iiEk1v01RCDKbl*=sarN3!EEKl@C$uf-P}gYXd9kJ7jkzNgfNq%T4Z_$t0N@4n;v7RFe>#vi%4RCdhm9~DO|V-Smxt7iAGvz3F)x1V^~FC2VFv_-_&acyN9oWhJ6i*+1#M2$Ol52{u`Lb)T+94FW0^kdYTnVu05$oF)T@3cE;LM+=8sc`zT^I*bejto-$oEtKH|K=pYfE%K?44l59Fp=raWY-k6LvIP3C+e}h8mAQxF&?=<3Dn(=lA)aZ7PA`Fn@4N+y!@@)MqpL$#$6Lt>xSDYduL~NY{BKW3Sc^?C5BBzn}k&6&l(13ihWXyjmZzW=zd&Hg^-{pP$#GF2^_r9<9pXGT%JKZeXdYXT!B6Z#>Jb#O^K-eP2Q^ZdB6`l{TGlY$4iI^#qF;saRW6n!3{-8d@@6qFT)Vg=@c_qd(6d2D*o8Ebq&zJswALOYK^&#}!>`dy%!Es|cp8q_)6897Djl8Bp&y7Q8m%4Idtzs{7(Ng&wj*LOe=f;>SUcZ{&YbD<6bPD|G_ek*FbC_);w)TSMwHPzUM0&nLYzSg$!^WLGV)ZXIYOEU%&Grpy+=oJ=eafYQa#4@&YT$a}bAJ`rZ)QT{{$PsV@4}x!`{*TA>=lk{LLYA4yv!zjI9>4C;C-(6K4zD#s)N9WzF_W($KDb1c{lBOgfV6~?=GGPv8G2~F<~4g;YVUW%pqip4nyO}fJuelv-}i1_QkXm2S}m*_PvUG5oRpE0VHsO$mbZMYlto@3zOp4}-VQv}T?&4?m9Z-2P;!xyBkNlpbo>mnIVT{rH8Yja%Q{2z$#E%72U8qsjQ<_^ix?8VrZdq((1%-DoE1rz59d`9tDqwb{-h!i6`3d!m>uub$@6-qHRERx`3mbev+IC<^=p4@7pHSbt)@bkQ9vx1eMmNl^8+JmhE!}Z-IOb}#p)Gx)V9$762=>lAWhWA|gm`-rdNE=U*=&*M=UHscGq7@uY9zV9xAyLNONJ&?E;P`pRo2v~+MVpX@Z^tf6n5c9MTQRA*GT$y4z^Voo2tHJY93g(H6sJd^y<#qV9c6<=T4hfO$D~)r7t=k+L1G`yFRiextAu1E8ETYZ8h_g>Q||@gqd!Xq(+xD=X*JZKFn=To^@l)UTnSY_KTbRlBnDUd$le|9VPu*t*mw(YJ3)Jw@>a=m!RdO)CbR}#KQM1b*NW%z#&DX0@ZTF4A7_Hr)sXxNbzZEgJOYMEmPHmht?hA#!Q_%VvHP81zBU`v`3-?naT9aZV$nk%QPyPz}z&TN&-A|nIlRE5cBco}14yZp%lG!Xsz^^~4VcCn^*C*6-D%hOu(H89vcPtC)7uQjVpA5gCtdJ^g=xY_Hr}k1(p6;n}qR!^FtTj@o8+5S=cQoJkTX>+m*eAH8rB+Wh1YqRRZQ$D&YnplfiAJ(+>ovN!@Y0XcO4*uS$96d%Xs-9J!U9MSk9dpgkxpL!Ftqs~PuL<~|d$ztY`>ba$=44~b_ARda*Wiw|J8jAtkR&ouW7%#(h7z1%RfRQ%7psRmd~SM4huBl-#%FZ^?T6ZwHrE!lPb;XT#U+HXYoCOxOsfNKwwI{kUTN}UmQ){M3l}pt4;7VGP8d$}>K*6RiVmTt8XF4ZG3(}t6KqxEM{A7NKZCBZ|cC~ee6W9@H)Mm2^=GKssw_RE;5*(ZCffli)V=RT6B#HZK<+tw1vt1f77@Ob=NJfM21Q!??Bb!EkY(Sk6BRi@0T{>WXkV%unjWwK58r*Vab`MTQl${Jh6SWT;wa$~|8jh-g{i#&y&*ZeembNzr%vaha;{J@jm>2)cG6YhzxH<$2Y?Nmg_|#PQ6APXC$}|f@Li<>_iSI?B_-#bp9g5Mv(*9>OuTu9S+_y%rJJzaGhz1xKZSE5bI20{mDbTCv1(`0%Y=!c=)syvJ~q=>BNb{G86pgr>IB$Y(rrF!7tpI&ZMU%I0oDl{RjbMT6?D8PB5)yc_%vhGeWEm`s{1;XAJRN-GtEte-Zq^>Aa0N53yf(AB;r^Y?ikyBlV%X_Jy^A^QG>(J?XC7LU+9bzZBz4lU~|<%Z^48TcuKfEd%!bnK`8Q>}mscqf=?u8|DK=R&7PSujOFl(|$;!k@{uR9z9KMws8sb$@^mcgY?W_q-h;1FhZ^+no{p>yGj6FHu8@dzD%mDr(`hc)kCzbanhomUQZszvW9wCE8*f?ozV8A()I+~;cpRJAJ&xNN>}{`XYbOGK1;!&aROXC>50UBKy`WUxB?RN3k=Gk69F35rU@w{tcv3F-C9Mf_(%fr@6V<_{W!D?bOBq$>AB9uhH)7m4A81T%uw!0ARK{+&le9E1$>Hi*R~6>7UliO#xL3N1-KP~Xu9!!dgMTAA15hKfnRDfRQI5(S>rT*agTA0X$d+b48=MGdw}9|lh9HP~9Ss=I(W;yU0voC9re8F<>c;yRuc)|^y1_yb@k4YQ;L8@(BfJ*CGW_UBP*^kDapg2EhR*C*B!2W}{R-RmDQ^exgO;d~xyBp=IrhFBe~y(C4nVG%9z2nkVW75!eQP&Ck*~VjP;~Sa^Wh6S&6ljm4Uy*$b2bydjdDHR{5rSPjrTnLbIcI&nnllpg0vr=^GtADSPS~1Y#M9MhO>L#U_QEu7%7a}*}ypE}Bz#KK(F~mfxVUk)47DN9ByK&1ZZI`YW9-fzkdIfXYjv*#){u!|AqJVz!FTAe=tpC9K`ZKgqnk9J}dbyTorjwSbSd+s%YQ-o{;j~^UI721xkK}z_EZJKGN=rqScmr|#yG7S`An)W?Vr}UnrB03v|{YDSqa|z`gw`hVLp|JadsHvbYGX-gC%&TKEyh=$XgfZ56`PUi1Vw9T0oET{71~QJX3`@%1d!T93*aAJfGqDCp}1CgUbiJM+Vzwl`39wG!z@xP~Sv7Zzaw$$l-Uz)-i8tgZsw9v}YbZuPN$%z;YhHf0es$T*XO)eP#T0SZ^%Jtu^YdMGW^ttTMSk71M{R;hP8!S`*uWI?%^gMq(p68j^?wdso%X2P6uyW0a-Q|Ul{IyiHD^5ne?Cyi2aex?F1dhM4do}5R+#iHREL3TS9R~8R_lds*=-i4?bDhBYN!wIzBYKQ6F#@la1ANAN&OmiLNB2*Q1ExosN1-=sswEEH%`t99W&MMhbPuu;zV(0l##YX-NuH$2T8jMlT6KYZlZ1@{N97jbIeUoqs>kA+W{O%ktcCQ-A3@C)GeDUlzH<|YtjGhIjh2LtPZ=xMV%G!1OkP1l}kHyT{goRM@PUlO_rm6|1bGtXF<`er+TUHAk(wo$Od%-5dqyIfEBNcN!6h{20WU3!q^CZ`*cE>8Tw>C)|-KhH^ifch!?)!phq&M*J*%4-T{*<#U)LPB~()!Ixxo$f)U)@}w&8{z<4-7Clu@$VK2a#E$Hl&RQcWnsy_w4j7|sLsp*F(B_LQQig45@+NBPH~5bHm<$@TNDggTXD8RFMvO7FxK`3L!l56Ob9VB^N;xaJeL=p@PmG7}yY-chE(`Qwo9W9t^op@)joc&tOORHxOu2Q)4H2A_8^$L>Qs3Y?bwzUI=TayM+;yYA7+zSW%4W?Y_iH>=K?|BxnYPlvffLqT`)yQ-BMwO^F&RiWL{PrWT3&9sitC1!}q8|Oe{RleuoOj`|h<#iWO0qt5sKT!~b&rKr-Dq-C@*dYZXckc(RAZe7v3HL;eg-=m{Ucgx)mzpLDJ2|yrs3qpE{uiYhew8Oq7b7<>oB%1VRTYYJ4&!^TV_)h>D86>>(N&RH8<xfgT$&8QHX>Y4@=<{!W=MG-$-3lk%K-;6%be>~;wyn=eZ(R4Cn|s|%$@Q?obt%@?FEQ#TcA;G`mGQJuGHAOkaa}*TxN%a>_fGo`vXmwBmwguW5d5yv`k;PjW|C-!(DbIZ3s;xl)iN}pjP@x$RaSJrIwCOod0;@C1rEG}YdKdSVUuk;_s7&#$lSH^r9f0?jjlP;3XgC5?0U>|?RrpyUfyjat;ys|HRGdu#SiQ?_`JkRbcxa1gs0rl7GtW(aoOnLZ^^$b=agF3ub~?wSEsi8S8ln$TR-xj#lF?UIIf3a$1IRjO>oNz+)Qv+gxJ}nj^$GWNWbDza!2d5hg8T@Qqx54f`rZFTY~$sZ_#Qs4^4NcAGD%Fh606HGq#YA6z9-?ZTHm?bzil`F-WNJBHu}>B#suNGh~3GUU?TbA1W(*b>OBRk2}}OqiI?RaCXHRe1MX$0gRq`*%B>~x%L!c>+gLuZ=#OnNH_~))NwupI}yAt&l9Ps;Pe&$i|!u>}pI&MU!xe8w1_5B{{WIxn|B^W;d}{RhWA7E5Hj()h;j{=gigHq`oG?e!av`Wf>|%_q@bl1JDE8@`0LG{f#)Wp;Us?z3mXW5{mf?udVrOV)+;t__f@#YQ|9e&^bO!yHF1g*F=u=jA$$i!e{RE!c%H?!D$l8=mp|fU$v0dh-7l)_L>WbNqb}F&GJ6&J6oN?i-As{g(#74;+@b#zwAtq1}`Gk>CH{S_XAUmU{NLLcaJamZ(Gd{^zz9HTpx}^EzS2ADrtyG^itM{*)+S**VoLHjOvV{19v!nsw@qcJnb*!N%8AJJ8RV6PV^Iskx^50UPol^_7r@Z(d8cU_X60Fvmr`ow#cK#_|h{>r}^Yh?SB+l@RcDns;3taTAO&>$e*ptDNl{hyeB-;+#yTcG(1&l40kLnm4X-I(YR4F%)4a7aT@|sd9?5fVxa*S2C+s70&US50#W0lf=hI$p{4!2$<#lhh^KcAqC96$t)lSjOUkasiy{3u_!qv!XZjlp4`)=_Iu8*nWru()!hF}lTu9{QQ?!4ZoF{`3X(om*p3S%7a(sP2k$6+=OQ>I)z%Kds=xE{rI7Q7gn*M<{gKAH`yAa|H;f&gKI>Yn!v%kz8q5|{&Od>@lxY)()9D?y*Co`F2=%1Pv^yweNw`Lmn|JQPo>bFPC;aS&YXEAebHAMYURMXsw2a&1d$s0`9ZQ{{Prtg8Ga*AL%Cj2GTPyqDAscBI|b%I{3p{fmrY%XPui^He9Iy$ktHxPw|j;PYy?I}_(mHdZIrB_DRqmQm^l$uQ*>xI$~S>}AeCC7)5o&)=k$k<2%EkvQCUxlXCbbxOIGc#-_{|C4s@RknvUy`OmQDbGOK0)|{Om6+dJwwodATiU9V{_mvwA^V%uy}iH4Yb$w7+K#rU!%5e2(#DqBhLbL&)Z@B`vJW}(JXwd=2ak?;7TNYxK1(Vw$?}Uu`l4@ZC+)1#;{wVEjtvY%3WxHkdBmajoCz~ZHwb;Zj6pn2c_wKP$Yl$nK=Faj{-ggyRH^wl=J$FI3{fmITt$XU-FoIkG~`a`{j{i2sY@w(A~Sl$xEL?JA_hm_5adPGjA}jhiYLbe@UHJPZ98OIbR4n2)D-W*)oFoZ?L=I+sY)jkF>`otx2JOJ84h;rXRlkhi>?T=lAFFmGQOptnc#B?hAgN=dG6I+PI$mmEo;d_%O8v`-jL_Ua?$%wanJW0nS@Juh)n3e6`Bf*7Y!3oxJsSd0_ba`fz}2oAoL<&=p*_x}NRT>V0Db2S=2@JZx6WXZU|!q5d2mT*ZR0xCQ$y>a?lPA&lbV$6>cl*9qeQ8|NH*|vOWN|".encode())).decode()))) +elif sys.version_info[0] == 3 and sys.version_info[1] == 11 and platform.python_implementation() == "CPython": + exec(marshal.loads(base64.b64decode(zlib.decompress(base64.b85decode("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".encode())).decode()))) +elif sys.version_info[0] == 3 and sys.version_info[1] == 12 and platform.python_implementation() == "CPython": + exec(marshal.loads(base64.b64decode(zlib.decompress(base64.b85decode("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".encode())).decode()))) +elif sys.version_info[0] == 3 and sys.version_info[1] == 13 and platform.python_implementation() == "CPython": + exec(marshal.loads(base64.b64decode(zlib.decompress(base64.b85decode("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".encode())).decode()))) +else: + print(f"This version of PySimpleGUI ({version}) is not compatible with the version of Python that is currently installed ({platform.python_implementation()} {sys.version_info[0]}.{sys.version_info[1]})") + exit() + + +if not var_ppjEg8a: + print('PySimpleGUI has detected a security failure: This copy of PySimpleGUI has been compromised and is not allowed to run.') + exit() +# ------------------------ Read the ttk scrollbar info ------------------------ +_global_settings_get_ttk_scrollbar_info() + + +# See if running on Trinket. If Trinket, then use custom titlebars since Trinket doesn't supply any +if running_trinket(): + USE_CUSTOM_TITLEBAR = True + +if tclversion_detailed.startswith('8.5'): + warnings.warn('You are running a VERY old version of tkinter {}. You cannot use PNG formatted images for example. Please upgrade to 8.6.x'.format(tclversion_detailed), + UserWarning) + +# Enables the correct application icon to be shown on the Windows taskbar +if running_windows(): + try: + myappid = 'mycompany.myproduct.subproduct.version' # Add an app ID on Windows to control Windows taskbar icon combining + ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid) + except Exception as e: + print('Error setting App ID', e) + + +_read_mac_global_settings() + +if _mac_should_set_alpha_to_99(): + # Applyting Mac OS 12.3+ Alpha Channel fix. Sets the default Alpha Channel to 0.99 + set_options(alpha_channel=0.99) + +if not __aDP7c(): + popup_error('Fatal Security Error Detected', 'Fatal error with the PySimpleGUI security code. ', title='PySimpleGUI Security Error') + exit() + +#----------------------------------------------------------------------------------------- + + +# -------------------------------- ENTRY POINT IF RUN STANDALONE -------------------------------- # +if __name__ == '__main__': + # To execute the upgrade from command line, type: + # python -m PySimpleGUI.PySimpleGUI upgrade + if len(sys.argv) > 1 and sys.argv[1] == 'upgrade': + __fCrXeT() + exit(0) + elif len(sys.argv) > 1 and sys.argv[1] == 'help': + main_sdk_help() + exit(0) + main() + exit(0) +#490e20168db654496a026bd0fd21a53a8f18140f93ea87d9e5fcd9542c9a7e95f0ff62ac8181129347bab742eef84addc0ce46f85678c5bf26685c6307377f1aa783be7e7be9438ceb9f2d8981bd3a9648f10310f1a90c25e9e32ddb602eee8172cf30d53b782ec9b439e82dcab739e9172f7b975c75038bb2f6628ebf5e35fd89307b7092088ec30f62e02a96dc51958c37344cb1382009a10b50acbe5982e46dcfa5b31c0f38c98b2249f54fde7220a4a23e08e7c59d2a63d4fafd3fd6ada299b93d4c04cfc4334ca4871f4f1cd97c11409d8be49e818d8e88408edcc097cf0be7fb13b03dd65ed9f90cbee25317c9d6bcf107228060280575c696ec7f2a5988e2a3d851808e775935e7afdbbb3a21743feedd1feac4baaac22602fa022560ef3329b3b832634cb7701f64d84f9ea3e91052811fdd457115d720f0a4b73d6b60ecd8e9cc3d55b8d0d630c32278dc9322cb688955a01951405a86bb059375de6a7169c273944537ea3bb65d0dc557a2e722fc02451ac61bb0ee14d2c1c9fa79e31e2542b15ab47ec113b7e8f53d0c713d77248bef2e0837016fcd22db9ffe04322b66ae6128a2a1e057a8a090cb26fbd36aa9263a767ceff8d279dbdb6b750aac83f2644d66ff5926b18ff0222bbc5ab30bf8cfe201aa56afc6c0f19badaa958ee787bae2dae3c3b07181d363e9f3d21198aad2ce80c582963c5b86b5b98358 \ No newline at end of file diff --git a/PySimpleGUI/README.md b/PySimpleGUI/README.md new file mode 100644 index 0000000..188f4fd --- /dev/null +++ b/PySimpleGUI/README.md @@ -0,0 +1,102 @@ +

+ +
+ For more information visit PySimpleGUI.com +

+ + + +## + +

+ +

User Interfaces for HumansTM

+

+ +# Welcome to PySimpleGUI 5 !! + +Do you use PySimpleGUI 4? [Here is what you need to know.](https://docs.pysimplegui.com/en/latest/readme/sunset/) + +**PySimpleGUI creates desktop applications easily**, enhancing the tkinter, Qt, WxPython, and Remi frameworks with a much simpler programming interface: + +1. PySimpleGUI user interfaces are defined using core Python data types (lists and dictionaries) that are easily understood by beginners. +2. PySimpleGUI event handling changes from a complex callback-based model to a simpple message passing one. +3. PySimpleGUI uses simple Python code and has no requirement for object oriented architecture. + +PySimpleGUI is more than a GUI library: PySimpleGUI simplifies much of your Python development process. Sure, it makes developing user interfaces much easier, but PySimpleGUI also tames advanced Python functionality (such as threading) and makes it easy for all users to take their Python applications to the next level. PySimpleGUI is a robust toolkit. + +## Introducing PySimpleGUI 5 + +For the last 5 years, PySimpleGUI offered free software with the hope of sustaining the +company by donations. We appreciate the support we received, but the amount has been too +small to support the PySimpleGUI project. For this reason, PySimpleGUI is switching to a +subscription model, where commercial users are expected to pay a nominal annual fee. + + +PySimpleGUI is now part of PySimpleSoft, Inc., whose mission is to make the best Python +application develement environment much, much better. Since launching in 2018, PySimpleGUI +has helped hobbyists and professionals alike create Python GUIs in a fraction of the time. +PySimpleGUI 5 takes PySimpleGUI to the next level, providing hundreds of improvements, +including new features, enhanced security, and priority support. + + +PySimpleGUI 5 is licensed software. As the [License Agreement](license.txt) explains, after a trial +period, all PySimpleGUI 5 users must register at PySimpleGUI.com to obtain a Developer Key. +For most users (Hobbyist Users), the license is at NO COST. If you are a Commercial User, +subscriptions cost a nominal $99/year. + +

+ +

+ +[Subscribe Now](https://pricing.PySimpleGUI.com) and help support the PySimpleGUI community. + +## Examples + +PySmipleGUI users have created thousands of amazing desktop applications. Here are a few screen shots. For more examples, see the [PySimpleGUI gallery](https://gallery.PySimpleGUI.com/). + +

+ +   + +   + +

+ +## Get Started at No Cost + +Whether you are a Hobbyist User or Commercial User, you can start using PySimpleGUI at no cost. +To get started with a 30-day trial period, first install Python and then + + python -m pip install pysimplegui + +and run some code, like + + import PySimpleGUI as sg + layout = [ [sg.Text('Hello, world!')] ] + window = sg.Window('Hello Example', layout) + while True: + event, values = window.read() + if event == sg.WIN_CLOSED: + break + window.close() + +(You might need to use `python3` instead of `python`.) + +You can try PySimpleGUI for 30 days, after which you will need to Sign Up. Hobbyist users sign up at no cost, and Commercial Users subscribe at $99/year. For more details, see [PySimpleGUI.com/pricing](https://pricing.PySimpleGUI.com). + +## Documentation + +PySimpleGUI provides extensive documentation. Here are some starting points, depending on your needs and expertise: + +* [Documentation](https://docs.pysimplegui.com/) - Extensive PySimpleGUI documenation +* [Cookbook](https://cookbook.pysimplegui.com/) - Step-by-step cookbook of PySimpleGUI basics. Find a recipe that is close to what you want to build and use it as a starting point. +* [Examples](https://examples.pysimplegui.com/) - Hundreds of sample PySimpeGUI applications. +* [SDK Reference](https://sdk.pysimplegui.com/) - details for each PySimpleGUI element + + + + + + + diff --git a/PySimpleGUI/__init__.py b/PySimpleGUI/__init__.py new file mode 100644 index 0000000..f3412bb --- /dev/null +++ b/PySimpleGUI/__init__.py @@ -0,0 +1,3 @@ +from .PySimpleGUI import * +from .PySimpleGUI import __version__ + diff --git a/PySimpleGUI/__main__.py b/PySimpleGUI/__main__.py new file mode 100644 index 0000000..1cec5c7 --- /dev/null +++ b/PySimpleGUI/__main__.py @@ -0,0 +1,4 @@ +from .PySimpleGUI import * + +if __name__ == "__main__": + main() diff --git a/PySimpleGUI/__pycache__/PySimpleGUI.cpython-310.pyc b/PySimpleGUI/__pycache__/PySimpleGUI.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5b5dd641e70191d9f5bcd71459ce996bf0e2b20c GIT binary patch literal 1881991 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 z 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%0A1}bLHZ=*$1y5x|cwn0H1j^2W=&WWm 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�j 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%0AwBWk`l_W7`W~Hi;}kS2pA{ke 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

^$c`BD3YrM?d{kuy~MxXs|`{>)0Eh2z${Rlid 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 z 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�Pr^ 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

b4+r${tg12Dmpfroi#gpY|TEiQeX;;IJY2 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�QY51=G-K)o{39!zZ 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%0DAbnu-q2w2n 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%0D`?A&kK<4#(JPPYf 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 literal 0 HcmV?d00001 diff --git a/PySimpleGUI/__pycache__/PySimpleGUI.cpython-312.pyc b/PySimpleGUI/__pycache__/PySimpleGUI.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9bb119c3ea8ac84f0a4e3eb7b74348821dbd2132 GIT binary patch literal 2255664 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∓LQmNBx zG?0Subr{p>yR-sq!i;0OD|g+z?}gE8qn~S@ON|s^A;^!c&6~@3tFYom`xiI7W2sB8 zdH%p$>)hm9U_jQqyfu_n_xfYEQ@`sDHFZW@#q;(ToY$P!&#JEKh%5iS97|5&^_oz2 z`RluGo&CmSsG)1g)evkv5NSLfX*?ZiY>zZ<#`SxSJ#YU)*7Begjb47lif!>{(w|Qcr{$|@`PU2YrB$vZxM=Oc5Lw>6jS~@E zSl`xDFm8mn)z(8qPB3}c=M_uG&iF_>W^BA-l_Ds2Y6bXF@_D62X~Y_#ucTO!5E;j3 zKd-NxG9~y{P~i}VQKH1OzT_F3FGa>Buv(5=t{$DVTuC}^nY7lWc`ukTa37R2Xlp0@ z6U5=P7;MbWID8al)_eLKyiHCvGUCGyNjNglrmv2J5GLD%=PY!~ zPSO0<5fof|@Qh<(OY9NpBcZe;Co6Cb?WcIQQgsO10=wx&g8E#Ednp?Y{V~$Tl5h$J zK=8b~0@I>VK(wv8{|lo#3` z&eDkyG6GSbr<)6OVr){60T(h^#xUb};U|Cu8W7vDG;P}Zb?R9@_&Fg0KhlB}%(1v3 zPjaM}&b2Mu(lZN|T<-b7&!^*gX2D$hXZoJ+yI!&2EO|Q*N#4hlbgzHMl1j;Fb_e^; zM~XTlMIGUyKDDUtzYPTkj{eu2dGe-Y1tKI4z)5Zofs^I6;Yej}V4f>CLt z9!=zNgnmi%%>(j6peq`s_#>cCdm^cnR3qLlO0oH@vo?biL=Hrx#~tANtQL7%C&i3U zkanGMC$A7OSVJafAw(3RU1pQU!E-_|dCU0%na=o~NqS8~WgNqrM4oYn!)}z;JNeEa*e%$tCwq?r6Y3Lea0I(8uzKLaa1ySem60>h3&Fb0t^?^Q z6q$&!@yf|PNu&tOxh1lImMYj!;8p zfw%*|jWb1N8Ych*s8LmsLUZRPbaE#=V%qD?)Vaj0wu$!ft`cr?NVSI@QwN|zhv%S@ zprCwNFtOR~n=l7xhq|YSmFc_}sl|$LA4GJP=2;ERro#0ixdd~!-N+B9umm{IOfQmt)&>tM&WEyMJBxMkb${^K}9(M(e)QdoJE6&hHzfwdaGMj2!d@26b| zl-o!zGg_QTmq^NGOavfd7s;}lpyh#;QPRdoCW+|t$1>?y4`(`4BMimRtOHW=zk{iZ z>`OR^U3hSEd99-Q*`M)tM6on*~#w?5wuVITr=cSjIx zJM;O>`E#Tnkp>Y{p_*0*fjUbV8&yYR$k7}pWUOr@DP9%YHRlj?9W6KVAQZ{V&k!#^ zW?ByMx~z%#A3&^H4unW&tc>JWTX5{-dre#j>w}jI$tzIuP;!EWB@qW?);{h`oEm%? z9RY)TfS7W!-i*F=1T4D(^lR(_pz{DsDUb$>M}kF2<_&HE08|_^gxZt5KS$T<_<(o) z09GO*#V#Kk$}2!fgm-}T8RO|L=ZWu69_yJi2V6GEbfTVFkMMD8e1;@m%}9#9v9%%Y z!o~4M-rkYgBCP>z-5@YB;cgU3vO#vRdv?TETc;tI6$GMQ$}V17^jqnxj|p9EU6CsK zj9UqRYpu|0F3_T$2l#)T#4>qP>SESdFsE&#u_=J0Tl*DM*T$ZA-F!?(!OZ!%@KO@;!ZAu6; zhf!~xLutY;MkuSZ4mqnAzeMkULRjq~I(?5$7wPm}I+2zzFgZosi>B*+r!W@$HXbT} zgp;49G}lDX#hK9N#w=GTVmcZV|fMBMAc?n>2N8Fn|S?#Aak z?#l;r9ZP8i*Q;+--E>3m~ zA>@A;!lFoUW@fF}Fv@9&t)zye5Fk!x!+pXEN^6ICI<`}EWp*)8R_1|pdeY2}5!YhQ zksT4uSjnl9!a4}jMhH0Bk2KG!0Z6)6BNQZrn4p)Zw)AwN156CrAiqig!Nvz-hK$1@ z=_zo=i3^DM2qs^RR4ri)!;=#_)E-V~K0Gx@{<%iFj`pw#i`T=9r?Cm3JlfATPj8_P5tF7lwgm1{pf#A% zPDUc*eF1JlAb z{k#qcvRzm%n#_KKNFXT20Q&(^SMv-pW`r>fJf1_sArG*#$E!OR5pbx55TNY{^}JsG zbgkYIWbQ({j0B@kMtq+TsCQp&4AONE7*gO>$sP`mrI#wfIV$IYt*vGIludG>dBV1&@u(eBxQ+yncW zfk8}!p8lbZf&SJ$&!PUl<7GM!_fTjh7Q<-!HI^12wjdaRki!t|2e=n_Msg9sn}>Ik z)9@+4p1z>N4)qNG3PQ|`S9Bat${Ls``0vGR8E=w{08cf&R$^I+%^)7fuOx-A{)n)d zka;(HXt#EP=`VIE)Tp_Cg9)bs9FJ-cD?;j;$W6Vz`mETp>UA4Bt&Kj95y3DiO}tC% zd@sg|cw;9((9c>;n-r^rm|wHLV1<}48*F9E?<7rHm3#OM@?#QK06qL8rihY-Jk97q z`JZ??U8*fR!-Nc)_mEV1%>PjHp0kjuUAd$@G)4G<2>$=q^8T}yg~FXTlfJb1y8ope zYT?eG@^14JYxAs~buMKWVA>=dIhlsram>_cDwNtl*7}9T;95Kq;tw*^Q+DI4X!;=8 zv|qk7)T`{JTz-yf%MCIN;s^}b=ue~mlyA{Tjx*4H^TA>V=6&2a#YHV7+`trrp#NaS zM!3&uZsr)Z>0PA57T9fJef5mD@(QnSd1>d1J3sdf>8vj06{3MR17Dqbbt+W2b1@I< z&(PS`l;fAvEKuQgL~`?9*m-RyF;olY+Q0&R$C8m*FrT_?vqL_SSMtK_XJ;Xqxb9d^ z(H=Z~?df1%bEK)|x;>O%|Nh(ANWYwf&)+VzxQea^!lj!Rpa~nNgZ)-o_I%}4=z&9z zwoG-D1szSd+~JlkwWTZAGPsoMx#7NX`KE6%cXQCWnRoCWHOmuB^Sr-YVa+ah)1Cjb zjPp8LMn2jxV@1Sh>$r8shF!Dh4XIJa9Y#;A%!^R!gL@;OFEIZ$dSe_CDOwc9lf*J` zd`15liv{FfG|~7-JkqZx8za2R=={>hcYK0c^kH@Vw>}Ol$K}IDs4m6(*X9MhjpONv zHJ3~p^;L?NVrVG~b~2Ou@ZANyIO4u*4-rO$o*7zjpawcX8Pk@9{eAJi2`gUD!NZ3J zhFbfF_;VlYd$Q{eTImlB8ngjSkp(AybbMC^qiUS$^>|d!wjPC)kwZ=qW5d%-L8-Xf zTplUz3Bmyy8ZyEZZ>(5-)0CrdAtp30Opo_7#}@KM@<ohu|T^XUE=5(=b^< zcTf#9UlN_B7+VPo5rl^6i^LvLE{&fRuF`hNuvxNFP+>hA?=9DqT62$PFmU>na){ED zcYvy+=~V8ea}!|lSK%ReEo{vBH6j8OT77FNDRW&2;VXYnAK8W{4O?~5L(J1=mUlFR zvOF~!xahqkna|93PS@)cO`fDQvHa&~8kwfjb6qMaA6%z3cp5+oo=Y*<(DU|R-Swrl zu)DYc(~<2#`C>lXSwPuzp*9c ztX(d)6v0aAQ(5mXZ%&4sGru&PU$5rZhc>o_^4sU}SrS%q!S#8e|5|_8U8A~dZrX2N zxV`0DyT88sTMvExp*ObPb02vh1|4Fhjlk$j6#TR03}<@5vdv-2_!idvt@Ftr+J<|s zgUB)s)PXHEyI`rfB3#_87B`2sbcKq$=g|>KYu7_<_9e%Qj+fTFxF($6pyoH+Y`@iT zJMgWizy9>Mp85JSZ(P2Yf0XLAcKw_A#s4TP`1AM4o()a@z<&kk`>T8Q7g+9YD{4=% ze7m5yJt^ti+xE0=wtZ)l71!U{Y-`(|{GF}Ixc+X6t;?PC-SpO+j$+&QimbT#Ua_q! zE%|$;g`NBC-`lmPbG!Zf+pM_${&rjE?$qz^Os4CHtVr|yeYUQo)E`)ras7joWPBSV z1tv8J0HNjG9XOGC1uG6hy$}lrp2QzBHWFXX+QHOL;;ZDDWYYQd?lmL5E`$xC30(`u z6>lqyVBBJ+k1<~Zkz?621aC;BZWAk40ylt`XM$cD->*OlQVVmJNr4mFd2(B{T85_j z0O5#A=-5dh4n0@nxl}!t__DS`sA1JHBGzt%E^C5%Q-gVfBoL=5Tjt&B_liO^xgRG# zk#C|fCZrXJU@X(cl8lA{kXB}Epigs6@;yvxp`Q$t7}Ks4Ws$(!nj@Q z1**~XdQumfNR?a{tK_miR9f}Q?jiz}yXz0RyNEz0YZB!UL_K&Ce<<0QCzL+! zkem~!Uw(+K33D705bWo5;@HUA$dx%8IvF@+o3aT4a>}Oh5t1-W5@0(okF&oTo={*8 z5SI*)O5w1D9<}gcMfUbE5~nc5Dgq@+xceJ+DL9eIJascw~7{y1J@3Gq3^!C@P&id4u1ZSwv-4_LC9Sl*|2%O z{hqsVIn&}=_x|!4YkKyZPS*zvCZF)MuCsil1*f~~Y^{Y!G5i4?V}1hVuQs6+E4DNV z)pfD$p&a;t+Ovr#w+gB5kg1Jd0}iIFbxG5+`baagV+f;1T3+0vJlNEw&ERsw{_O$> zfO7zpflNRT-Z zdKPCO7F|26)iHL^brhHA?cdRmZ$Tem$k(v&ykx;qa^IN)gY;KQzswfRB@tNy8&Z%W%_N*onMs{VLwbEXY?Oqjy5fG! z(*z=Dq)ng)g{KKPsd$=zkBX-WRPpgN0S6UZc5P0~rq855_tTklZd=BzW7hdE908Bf zQh9~GE|=HFFP>H!ck*gBYj(|SCN{m*@<~EC(DAlR1qA@-Ova33CUa)ZOqMi*IA3SH zmsjYKdU*=D?vS0DP7T`57mh}?`jfD3hAdSI`739fpIp+GU4Gh-jb6QV$g zlOBL@Y0Ol3>84y(nNJnK3R{`_qAGuc-^Cw?cbx_WNv^pLTnY4KY| zK;;>mWI-LqJ=3Tk9TjR6jef8EHWv0eM>L&v;^8%DTweOTQ_&3ZbP9oMqS;t@;hhH7 z&g0OBz~#8|Sxo$>`_u^h_aV5$upb;(@6_<6F?duYr}h4bovIJ zzD1`ybh?XE)D9aFC7J^7IF|z>(G(H(JDMh|sI*dA%zIuW^csq@r^b5*0*KH9?A>6nZ2zX8IL;a?h}ABb7tLpgCWH;~=co zBfjYxNez8S!vBxf$bUe|SR-AQ9ecvtyVdR8i`x&VX+~O-{o2{v{%>9R`js1L^OMi_+;7+r zZs=9<-&s4?Ge3DF?X7i{H>d7&1s^>b3|xU~*=3KmfYRiG3cLZ-v!5ajW z&gcj39m0(dtBnu8u_fH=ReQa`2|rR?vi494`iX4c9p3(ky8V&h$4-Sm_N4l;C*Mm= z%JW<29AN)D^Wc&tQd+M%i|0D#H($3WY(qu$D?7ftiO!q zb_fW_mrixKWP@6=AzZRUE!lC~ef#pA({F4E9yt~~KD=0RGF&pMmW&3^kB84cqn>|e zvE<|Pj^zxCt0b6JcXRxXeWAHM;wlNds#I6ijSKf&n{}`KQ@1!WDKFqqbqEM|FB`6os5kZ)R0Q>b8gLcB^%}>4WN}LSk)<+!|Ue+yyB{ zip5nKOsjx1#IDWRAjHg1v@ZH+I zUB#9k6sLFXP5MFAnywv5KiH9s>(e@M0$@zTACo@=cnS#vZpD#E@6KnvjQQrX8L5V~ z1qZ@sJ=a9M=m&3NjQkQ2ISESD7tRkUHG!l;5?YW9$fjBn38DQNhDD?48(kw$K2r)l zB%gFhT#{$3KKq4sAP5^4AXqwLi36q(2g_a(kWEIu!#a_Ntw92%aERb-ucydGj+Vsd znr7_2R9eFWIyuFQdl_;ll_eX$vNhIYdC%B5PwV&- z$hAU#XZ*@^KI`k5dhLk7tu)feD}z+xJU1Z~kXZZ?sFzPTRVm6P1(mpCMwfdiq!mgY zP2vvdY}&4V6D>(nU|pGrI5K(!?@0n2cPI+TyDjqJd5~H0hi{F~DqF2MWnTnzf`?k* zKlmYeWSR0P3+$F<$lShY@wrSSlHHe0V=l?MFIs-XtWOF;DRBX4!sg!3@m>^4<#g&Pm%JCKfz37Ax!ku|ejUpH-bP#+a@Y^8O_ywy@ zEN_TB1&Xe?VrubwcWEI_++NT7e=OHiiOr2 z^o4}!1F4+xCK?U#UV;Y>NIRf{u~I*em@TNGkZ&9`RZ*{@h$1Gnl^}t^K3=OyPv?i0 zsMk=Curb9Y4lJN0q2>vVTXrNM*s)T-R+LXN9O3MJL~s(&15{7SK{AjG^{SW(h}`3R z6KJG26T_OoCq|WUQaA{ZmEd$RNP|CYHux2l0&N@D=9v6Giq=VOjDm?F>(N=3CL&HK zsMM0L38A9$I4i5*bfQt%sENyd7||K_X+xd;e|6hovHaB=m{s79bzr){%dLO~>Kk^j zGhI3e$D}a75$zUEK_EEOivoeN!KClmaHgANONJVbK+Jc-? zvb6;?)_w|>;s<$6T0lPbK`KGn-vkfp+V+4)8_s2*ZPPSur>obf1Mzm(M;^&>nFwp)KoT}F~QR8xTi>|sUt(&oAm z9}HfZsUX9@xaKH)u)p>2VD};6{keo4$%>k3?q6uQhT+JUhAWyYHb>x$axieeAF@W} zZQ6_cuT*|2s43-Dx-B9$>U*@eAeYVMFQb}K7vo1=DW@3iBXFcGDjdhELVh2UR8bm*}-bHa|T zs$=VI_@vt#+4<1b&X9B4l5=g?S)w{i!p^O#b8E=C{Vhj!*wLaoT5b)gj-8RMyC~fz zQ@UNMb63c@2U{{1tcIHxvYMBi>*31{51f@DN7d_R!p#R4nh(N~dG6ykYHqgwW^<%) z{e0?u&Ew$xH96Q*e6{!0Udp)+ZZKasf9?FuyxSM%&o8b!FxQ0-gIVQ~+`{WE*LH=< z_AKN=Ydk;f-mbd0huk}t+%>`4p5PNBL1k*$V(GT^k*m5v+i}}ZES9y8*&^=ZW&4`U zby@~DiWYJkBW|b}!IMs{npb->?^gD!g?EO6d9{mq2j=aXa#F~%aUpjjQoS&JZ8}ud zx{%k(dgl+TMGxO`hl)DySJ#KDx2x6LuXja?%iuyZ;#&K5hQ*mp(o$?6uJ-Y6t$e{z zPU6?KO9h+41>4kuZNcq_g9DF*3XTPzI34tjs85^;ou6EIVsa^OV>oY%nztpmwfBvo zP~N~&{`wnvH?zN7c*A+K00}<_X>G0V$EFpr!F@Q%o^-LaQA_q zI5OXLr*%6l-(BBYfS>Q@x8`-{Sbos54(B%Y0IB8O zXMn4ixvuXt@Kie_ji#(KtG<#*L@HliA;nLf%}&avtd5C^6@Mrdpz|=p;tyB?SP3u#~6_%vW)M+IIx>eTSi)G!AQW5+M1Kbjnq?4U*r2a?>tZ_-Y3;*#0c}c(KnU zKWoGHByNQd610KJ)N4z|s)i0#tg>w+`g8F7fqRg78}BGQ#y9fnxpI7)fDP+k6#{0HSh(Vn zIS>Q{s`NXZR%Y?rFA~NQ)Kd9v)V^AlZTu!=@LJA$j1=<9XVZ5S5B*E?dQEF>B1W>o zPGtr%b|HYUY*`B^P{-W!4mQCq>p}Y}cqF3v%?DV!$WKBJ%~BsL6$oF3N`}10eiQpF z1upppp;3nRCty1(6|2@}r!3F-mGcd=nC6fUC4gPbS1xT6w^e6Iqtrw#)!EcW-ZV$g z>w6{Rxg0^1=aEl+8MrHxcQclNzT+I$;RyRp{ptBmnb!C{-(y_MD^vSu#PkwY?W05T zOXC-gnGJZ1T;1Vw(z4u({anZ?dlgK=Y{w%v7Q9}`+ZlnD>Nzzf?|Ro*(g_#Fq7!!MEw`XT}V3ME=T$IW}ElcK!h& zs~3Ds2=OG-X1YZ;OoiALk6SiwWUdSJsmNW($}gIyH_#`#)jS(8B5>{L3(Tt&nmK#n zLb#`YxUKIH0#0(|yrJprdK{jPM|*}4uEs+*%G20T)zwE!L>MLCuof$c^BC3x4Jsrl z6|ucY5~Gab1U86}PitynkWMpKPa(o2>KYzE%`sT}A&MrGU!|KqJU}OoPDX*r6ffQW z9Wbx3Q2G3yWs=z)LXVCqaKtS{jj^IR}|Cu|rr}ngzWr^p>1Uvr?HtmaRhZ zXppY{lycujr>!_e^Cg2Po{yuX0v$)wqz07Wn%Ln9A)p+ieAo=?FtS+5HDQKHKP7q` z{i?v`YbDo2NkjIA(Gv~uQ^Ym-6(ojOwuDuenpH=0$gy#$e*10v?U6e}i}eSB&I9Bw zWBrX(uo>q1dFNlb;HbRm4%Z!As5=OrK-gKMI%|l-v3Uoj-FTm!{eQk<{_N))Z*PHn zIY-XC_mg`N!XsSVq87I-7H@w3AcUmbB3bUa*+_l`)St7~&OHP5WnAUvLnOKv;>G)U z6llUJBXp2jHkrYb%~R=uqm)aoTX5FhJfb?A@1c0|RMMzsHQw|ukWab#U_+ywMkH<S$cHKajSE>D z@8{-)b1T%`ig0d?nhWu2xb`8n_MtoWP;LjaZfexLns8o&ng{LeaN~ZpasOgoTR5*< z&Fc>JJ+YAYL}X9vb^E>io%eU_oo^4hw=Uc5*)52o@>0=@Md5-5wV+|KplN>pdrnJH ztx0+-*+g#WA>ORHRrYHAZO1}AjMU2K`|rE+iRFSS)+}VzEZYqoccI@Na@U~=_03ub zlrit+dgUiS9;t4iXBDLFR`lhfaM>ocY}2jnx7)*e9#Qu^vRHNu4))f_$O-st!)9WJ zHITd;PQ=!QT}`U1DeT&&y0(Q}J5Y(HO$0-AXjJA}O({O?s#RUJH{D+?d9?(Iz$2UQ zM|H?1j>4YM5Ug5lFzd4O!mfJNRUdLSf;A_bz#}IHyy;eDcvH8!sXMsoaPa8y@X<5s z(KErb=hUO4!J|)dEw%5_0P>HMz~pXS1&j`=Zn+oNZ3APE#(2v@?iL+pcw~i37HJv0zx=q(28e6eK;T!qnt=_L|5{Zzu-&41)(=>c7LsfOYmyeS^9LG}7B<)hwj?cVw+-xx)rZwtc7Kn} z$g29V+jtXblSHZU`yfC3%$!N|4c378<2CI87*MnU*O_ESI%YrtImaJ9+v_HA>8kbA znR~|fvP>}e5^iXey?Fjlu75x`ojk9zURIWgtp!Xk4Rr#((_1%X4bZNM53pI14K|Ck zKcBK1WIt~%WOB<#EgudpXSA(CinkMkuTy}q`_(+w^g}W+z@kA=K0c_EpGK5Y);tH5 zMpoyVgEzWFGS)~Nlm0kp?Sv-`7LV@T$P!zU1^dZekBH-8QrZ);KNy3=itd{K)kw_; z$OYkJh&`&1U=Y`_l0iYt!GfGjt@}IcGC9brNt>GK9ya-Af+`VdbcDzgT?g(}%}WK- zD+G?xd954pGM%T%cj76!)Ot`Y3rMXiToW-s>xr>kcvP1syiR$XT`oDU-8WbymY> z>^@?=wO{RxRMpXf1cA=_rL5xXLpQeGtX$065KPol%B9q!lafh+PAaM(;@@p(5Dd`Y0OSMiXh{o8Id9 z+{kOjLTfO}Nx)otZatps3TNhT5~YTcm0dyrt(WZ6^V4Q*d=!qqWBh?2s=OBnS7_4+ zD>&MVl5n2lj^olx8`CkvJV;1@DWVg<7!AO5h_rO18V}rmj$SYfj%aUaLfqu51bROc zBmVIk&G!=GTJvHRizD9R)sWqY;rrLv)u0tgt7k z(-RY8WeNBUD;!}CF~NO;U8Q|(`rZ<(jkEUs>EA@DgPRBqk~YhB#P)tBWbMOzcEju0ij6}V+F^-Nx*&r%m83X zX{7n`CDIqKts|p3P&57s02c@tKgBEac*z~E<``eoOu=-+$O6I$aM>A^VePNaTT*Qi zCVEhKgVGwN0B6iWU}&~Nz09kSzMDxQ&NF)P;)rh)wE@9Z3kTi)3HTMjFHhVv(j*X* zn6e-7)fol%u%eyxU4~|8lTB#U39w_&j$}9Bg=;jSlE#kRMm$fA`bQBa0v`VZqd*~; zt8ixnpX1aBR92%lXjv@bj7$^k9;eM-kj~Q&?E@6y@O`=PT z2MjOk*Lu{)r^eZ8{AF#!Fsk zI2s+z-YH@dcxuUolc6712WJ*fcL+>QI&Yp`g4b&pH0nbxr4XczrlD~H0)hc;#I=zY zZ4o+{0<)W{w8CFz0x&>)#vJOlP8iD^LllcgyknO~{E{4Um>Lv=OrOUn>AF&IY%w-M za6!vBbfw&u^rGuqp!%QIWI}T0ogvg+1d_Xi;fon#t3h4LvGzMm;zQjN75r1_Xf6@` z!h-1p`{MIh7vc|z9NR6Qv7NS^g<{AF?0?}uoe(h}MgW9swySV(b=o$oD=Ew-nN(r) zy|v#uMHJ6Jxdtadt;4%qlFv$8+C()V)fxoQSv!NeT7kmtmPF+%$ubYngh)kcsn(O0 zS3xV&V1QO;XQ=HM%V?@^^vs#D(NocE;BFDa8|!cYjCeo$LsgbAX2Q*vh~ox>E}-Gl z=U97_{A*AkbWR`Vnj?D{i!C%3*{V7~$*1$>CM^DqLQwP)>h`RK0uzf@3s z{jo2W&K+3FDG28@s5uQc54_tiv=x=k`Di2Hi>rbB1Wn#2suBktDwbEo}FW0%Uch1o?>OF%$9; zp=r+R4r>%M=io9{5pXC*C~TtUVYC@(4a^5p7K^6;GHbH~S29MWh56zHAZALe!Q|hD zRy!iIX$b`5V*=~(IC;Gh3+Uq*_7h}aeF4NJsV^hd;f}*Q;Drw!OGjyu7YUmgBs2tG zi?2*8B5)M+zu{v8<<|hyPmH7P{tAZ#hdqh1*weeyEVCGaqfI-t{- zDAC%e50;QMt|*o47r`|_vv7v%I?x(3o;X)Snj$$u#iD>=xTZxIg9&Aq2c*rAf+lM^ z(9p?+qi94AAd^M(q$0WtG!}bRC8`X?d-!A1GQum{io8FHVmbAj*oKJi&=#*iE7{&^RHj93q!n0OZSt1tm|n7V5^=a|@To1V?mDnL4AtaqKBO|JMM zam#zuwzRH{-11hul|~P;x=Hkw-eY5-3%Me^k$Y<*nB`f_>I|lJ3O0&PBp^SX>`<8O zK!}uN=$od@B*9x?(s;6Aiw5mHJD%C`Oeb5|m1{!Hni*cIXH#dAmE4&mfA&nubBJx1 zNC#&og%)+BOl5O!o$Ue}ql;j1CqWn1lE{kC(6B{qZT`-HPQ-u_ZUw_TNGNx^z>nI*Vq;`g(>;Kbwj`Gd8rx4kAroxQyC< z!V0$eRo(F1;e82-^yx!GE@4qaX+X&SiPN-?(@-rP$M#A>`uECr0-1h6X@9L7#tL!Blx z#?(vmQNbfgl;4ovbK0g(cV!^ZHCLTY%={xpWn+43Zw%IlnoNg4?H*iGRrI-bjOdn_ zPfv|7CkKs*BgA+tc_6h_1k;EH!8BR}m;)C_PGL#obOs2Rt@TLILm&zxL0;ZzSa~g% zju%0Sm{_xth&-)$0nYqgK(9W-E_wy?)Km?P?paAQ9sSoK)&3>4+Ao(_TS2V}h6YG2 zaGCwXXR+s}D0jO&hk#fV3Wb86W=I#4pJ_3f3N&|s;;0z7SkSI3a}&jCLO&DZIJR`f z3p-V&wO1=$D^Nfi1rFsn@KAswKB7*u%D}6fAJK~=S5A*yBCM*zQEWwxf>*1kAm(HD z0Yo7F8>DKDHm*X{>bOCpY9*?OBWgSQho(1@W*tX&rIm#61gJ(VHAcW35pjZ0ALHRFQpg$gH?HTOgmmLEGhXw|jcM(lP1-N`= z0|+PKOvMX=NnzH9tK;CI13kn0TRFZKGFE;9La{DQSP|+pY}6GG-_cC@gaIjSTGkfMr9&YHZooI}3vTFD ziyA^l&QM_0x^2O_{V!&Qy1jD(#>go4eJ*?enP!S_%_4c-e3vQey@_M&PR+PP9=i+;}T@v2g2L@0+>htYXvs zMn&+@h2X_2A=eawG~VnD?i>modo1|)#}8-UVrE*GADf6+G%^&f*_z>!U0Mb zk?4nP!(?2TebTm6SbcMIsBpuzR7khyQ{T+>EUhcK?*H7ypsV8TB#XOjITuy=z)$+} zzn;|!58{^A&HJ|{eS51F=NQj)w56cGcS#sz=CwfkLnCL&6pfudzOPRXF>%ErE++u5 zVMcI03YW*u-ibSaxOE%^g(*lOrfVitjYUn;6Z*0y7Cgfxzu}2kXY96O6RWMzz+JRJ z>cRQ6rIFWZay2jYgS918md45S=IAEcGS|4t4EAoxFcAXUdm;lmDfgc7!ON#QLG@~^ zUIC=E*^#@nJTpi_{06T}+$*}b!d2eiBk0vQ!A?tV3zXM#wn1Byz-^^xI(-yx^C)8b zgWve$xqK5JG+_!k;xK0dcU1F77@rO96G_7j?(Yeh0O}rLlM-{4HSX)W8AvSz_m#a8 z{ttaf%n&9AjUi0(IJ_KMhdCUvf?s1j6#&K`5R#PHNJyg~6j0BPhc{40dM$K_1GJu{|5}B@}IELR$juD^xND{PZ@iK!7&Q2_Vj;kkzwe5Ur0iF&35_!d6790Xnozh@M?PX15X2OejW0?UZ+n zH0Sp-FdA-cC5j0b`L{F@9<&i70ZrbVIlDQS*wCFVi$&dY_IqjhqBAk7`mq*Q+?n^W z&c)zoTOw}wYZ}gOx6CJ<7}Dk;jDt;4NRngHKnTfm6~h09sdII(zR`V0eQLpnQf%SI_`Kjyh=a1WkRlR4pJpB+@47_ z486xISIH^1w%JIPz<}GF(<=Gs{y7aNQUMY@^AYf97nVS|epRVoRqIz+b;MyfZ!*k_ z1I_x|jr!Fl{c4MTr5ltQ4wQ_j&VgMr-I<)HEJ`&zQj%I#+!51a>y?CQpl1grA>3)X8kgy ze=2Z9Ui<96uA=bIkv-m3D83Wf@madT+dV@7fNz<1r z!((ggIzglep2`sFTkgMns!2R7_ta|C4ms2k8zt6+M`eY&fr&LOiZthD1hth>ZV}wJ z3xjY8EU3d??6wkyyQOWr(CHEJZcVfo`VC5u#@-P8|8bumF%g>uUmEYxXKbYj8JX7E zGyriOqZeU3U&&gkrGo1?@S8^Zv1W}X38C?0Y7e|{8fMXOQ+`af>-VgIIo(7ylI@Th zbM#PVm5F_(RG-rnVxOKR3(9Fafw!fF6Q=OVC=n%rcdVr-|M1MFU7QAj62bp@dUm?7 zhve+EmC@qBi#F{-uG8lU2B1~Qf>dS#L-`aS3+6MX49hn-PLHT*BRTD5?OGOYLf>zU z(;%8X8(YAqFaV$WM*|-KIlOy~V6zI>vg@cU`GV!zAex_^t*cWeX#0`^`c>FsrqdNu z&JMbI3xuqaNmoufvD01lUiCYmF-7S0KJbi`{Sa>{OJMaVe?wm=bo+l%&c9Bl<8;cP zFP@{T|4yg>MyE15Jx+KH>Gp7$)hBD_2}3dg{0n3()~+Bp0KC=oK;V$1sK8)sg*@Z}4O z#hc!>RHtvj-mGhWaH+EC=IO8WziX+=+yc{z`PA!quqJ$A&$T_Fip>kTn8{(m?o0*`Ke||Ye7;*t@$$Zf+)WQk5USX=kh|?cDPDePA-Cm$3HFjltJNy8``Yec zZZ$>Uo4Ga?tb6t3Q(R`0l;`Wuc&f#;>-7mHtCzfiCZFJ8I$<%`!-zvPe~ z)b0%JKD1Q((08*!M@}x)J{;PAJoNabrP|g|+s8sD1534gL;D6pM=vbZZvRHfQtj^0 z-owk8DYXOEw=F6816J6O)U<@FJJjk9&NaV0oWFe`fBWqgHGj{&{O#0DsNq6xJr#&> zfH%%j4Zbq5khc}KnJ?{maZd=l=%U^C9zMBLT=~+$7Y_#OkB93|s`V#>-g9B^nCcx{ ztiKqVm<|;`t*7V<*AJ@ogQ1~g!AFO~kDgW^J-s;O3!Ob5yfE<(7RwlnV&4`&U;>`A z?x(w>_`zL68?ge{x7&VPv17@zJGkd$@Khjt>S^`V)8HG46A#FLnq<=>q6K!q538kPhJZ7p9)SsjZdyv57H;}gHHn1e!BDG2X}i9*$}&T z?&ISt{Kdx?-F5HuS^>bzNr3C+ek<6i zb6G1{3&dH&1hc$L+lUWy^~F5PKhRORIY82l!0I0f zYC|VVR>@i70G;Q^R$U!pl{S1mg5{X2c`(#68m4Nm2#et~zt#ER=7&uUz#+NlFEAh0 z2s2_et7b8)E|^xgvWI~~MGw;!>jlf%kI1}{JYuEI0pw_n7AL4X7@rFLNoHv@ovO*r zis7U5AdBfjfdHEm_V6IdR0qOi4<_B%MipO=HkN88I~xYm}A_aTvxxrp>F)s4(

g6JLzUeo@r5xe(93ef#vm({Z50T?nYYDhdTDXzWBxSs2`KEtggBUWSQ? z{39Zv*vTnVl8K1OKEgMekg*Hbf(koGS09ZEqYS1iR>w9v*4ozqwDSo}uXtMQ9g98v zlr@GJd&iQLdCDrOF;_v@MOLpj@i@6)r!iJk|i-jBK$qCI1`>yQ^<~A?6@$A;xkbC?4Z>Q5|@4uI!`F`!T zLh>DKY`b$L?CMfoT|a}14CE#3tG`&+nrge7n%-KSeAne{Ela*zmW=BdiM0;u|A?Bd zX4?0l_<8_*xL};MGRPCX6L%Pjm#`qQC0eAPTOVU@ZL(oOdL6ipY%wYHW&i3vZBpp+ z3!W5qL&X#!AMA0H!v2i?>f@Lc_%%%m`}8Y1?2#p?X;Ki63}Y)~l!B&(USEfxGI`EG zrx9A$0$5FxVCYc$Ay`=Ti>SdDpMOO$sHnu~r!H*%>vB zCBwV`d6y2{qQDW|Z9)8tGX(gv_?iJ9VF34D+l!chYHrnHZp}NE)bw8KT-&lOCA0TI zFkig+R@?2I#o|5l9T9gC#h<;g6~1}if7?MBybqT@?)C3jtjL6CK<69Qu0la zSDOJZ?P@Ky-7QXU-JN{5%GtUt`R=x4T*t&;)n@=X(0Bp**d`)2#yzS;?x5lkdlhgG z$p|Y)CqnePTrd%mkCg&~+^oi80FFxhVT98__>UbRGwmo9u7clVpnr0l zDj|KV1#Vt-rRzjtR*-`pxP;Wa>7V=>9$b{>XN-LpfmO9B-R+y8X_609Cmud3;P4XKh|s_!6yb8rahuPPBVpw)^u-ak$_a0 zILnjL$%)`wk}f92LNJtYX&wvP_W;y_dH!OW0)Q`%VK(!$=G;&U00>C0b3IuL^`hS4V(m1tAtg}#WoOhjc?$8!h_4#6gbK0^ zO3ly>7#Al0euSO+2c)U}2YT~1 zoqo1#w^GHN*}EZTUtWPIs&F_9rLZ-IIpvZzm`3Uz7Unj3l~V z!{_YG{hnAuWF1-k9`cDpR&Z4!CorZztnm{q+aF?}s+;#2)7l4X3InkK5g^cQ9BR-) z-ZE;?(HPK)zDxr($gsHf>7WjY1H5#}byH4WsQ*4SIss)fq4YiB83ZH@O|%mzPBPn_ zpg=6f`oz}=N|TrbbK@}24N^sc+LEz;YBC>VdT8m)lWlCmWF5a^I@Mx68Kh{`reHpm z8}o@irUjV_*3k;hqGW|9iybA6DUX1*iP|Zxm@i3UEvESrwfWBYX<5MnESBFjlunDT zfsUA7tL?F3A77;@(JQ9J8hiSVr5I>!xS2zKg3_<0f2sPVh8G)dociJhxG5u;Z6KI! zAee1nnBBo3yX{BL?H~B72xOhDX_ik{?MeF2X}I`Ca%*zxU2769?c<2+;#@dwR%I@sTEg6|V8rt%wh1eE9-hse`> z*1tiB&KVo||3{#8EQ!X_)&;K;w6KZ5FxVWy5XTQm83k?D$UYJmv2;^g0R#aF*(X*x z9}Gb_GLh7l0#YYp54zuDWOO5y@y4N@b#cUG_n~tU*vS>+Y)u~vnrje^(b{%y1VU1l z18TM7<>Jc7n8}b*>SYUGS){$!$U1!F6-zwh{2H~)Of1zDldpyr;3efI$#h<3!46K+ z-tM>Q!7Dh$!t+`(=@!+3oKtq19%DV>+ZP*<%Miu~gr!UO^8oLGyT80USg~!1LQfM? zU(9U?IvXhL2V@K)9LHkbwmB!XiC=QO=m_U;Q}eei=I@xxjARvEKM~BT52n=%-X=k; zJak-p6;BA)0#@Za({Cay3x`M6F9ILW*uH4}4HJoEU|(ZfWO}A!U-q@F*Cjz{@gM6r z^dQM42?AlE3IX-l$Qj6nCtxq72m%VEhz4)~ElPK#5hgAZ6ACaC#G%-{YnE(!jv9Kr zvdeSDlu*zbvB1O9N~B91#0sX$=8{&;fJ~Yx0KI`wl{Bm({ZQIuCpzz@GGU}@GC zL-=4=WoeekhW8m(UchxEh^)1P-*O!6nWSm-hc9Uw$P9rzokKxb7XghV zS9N?9O-Fis18f@2pi6;H6$9|7e|d+jFVeB4>x*>kgyoIj1;3Um5&I&0QKNMtcl@f0xo2LZpO*!DcEgZZ7~FMZwe;N7s-bl+0T-I zZT#{T!fO}3r^yHg^jjzH#wW&`1ZpveCW0;UHRkaK08h~U8S&IKow*DRH=vf0@fs=| zOfdpOa_ykyq~*epSx%pq3(IXv4bMq%;>G-c^63e%1WoR;fG)wY@cL1E>?inh*(e}Y ze9WLukV>#l55x|ec`M9bJPnUh#4!Q(7TkQJuAn|+Y!TyUh}OUT(G*dw4;-e34#`<_ z03asT>WvumXolV|{?(?4maj2IvMXyp_f{ps-_i8>uvy{*Sbelvl6c3WWPcbc{O2G)EoNB}@=k;{ zfwAHbIdiR+@%;t^P(Jk+uac9#Yd7*Uv-ZYU`z}EwHD9vNL}K_-fC+So6$p;h=}+j$ zTkikmtfU#^teIs&p z;8}4Axg?wfT*!2$zzWTx2KO5P{hz=P#4QkeLRowD1p*#=d2Oguoptw|4e&GanWvwB zI-EtmMi#TmZ=6H)M%^7S#YeyAs(CA~^79{uUdIc)*LuV5D%D+e*>2Kd4kPwG{7 z{ms3%t3vLFBkRlO+CSAVwnOH1pQr}*aJx7j%&ynbRY3&^+#p3n$lr%sN;+L7GzC>I3sJ2i54 zbe#N#(vAmaN{ZKP1}^l6*|XFx5f2zU5dst8wn3L&##mFf3B@Bn@0Ko2_z@-p0EXN zWnv6UjMLI(aQS)TXeg~Al9s^2krrbf%Wv>lnj{|9MC=%Y z86%fwe?G+FX6QgZbRh6a^CMEjLLrqdKYUpW-(jE*K?m9T24 zm+B*Be*KR$2!7NTDh+EanR)Y z?I7tIcH4$XRgix0@Cn;VdiaEGe-a*QKi#;y4{9;ZDM$HUTEj15x>}TbsJwC|QI{yc zgWj6X*07b)J!y?-vrvaKRcJM^qp@VLLuNoBWS1E0Eb|wHBQ9Tx!w_)0h_o)n8iusMf+ADiZzyW zZG&i@$V9dC7(I$J(7g3L9>gDsC-Z~0f@D|(N`P|a134s^_^ad#h>Sm8(;jH~>eLYs zkgnBdeDk0%4y2XFDVtOP)?u@WHmjXNb_ z2S_X=0T3i58ET*b5Ib27kVFfVX^&?N`co{*ks~UZ#E|VgQ=w-}d-BFg;x~~jJCU8d znQj7b!wBQybNo%>tTd?PdF1)>z5kqBb*sA3fJkr2d*3UGh3cwX_ujhq+;h%7tJ{=r z8Y3(la_Hp{b~9CbsO8SQtqOkd_0mWosFZ~!&`?UMZNno|+zsPYNWveqAio`@WNTWF z7(J)!zqBj$UCGPMIJGBZIog%}S6MVX&(rT~S5Q&E2o*JD%r&t?rTN7usJCU$v~qBK zPtdQmD{WqXS+fHBDdUU<%?09`nZsp`owxCbMHoigJXWZEf&O=Xn_5ne?2Dg-xeER( zis)n+Cp*N5z^BPVu*4qf&taJ;vzSp9a4G}z^Ai2k<)PmO#4E*gqA5}?)6*+-x=N=P z=tM$!WMF5`1Ljq#_{*c@5`zCB)%n*rX>u>t(6XrYZ-F0_uAo{ssArjQ%BTyQ@HokY zY+L|;S0J_2pIW+Zvd0`Hb#lthyiXlQa`M%T ztj`>J?NA`2%%4%Vlu>cRzM7G{*!qQz*E{ayF6HfeGr^yC$d`B6mvJPJQSZ;Ff2(>a zqveMEUOG0gix*!TUrOJ5BQp3G@=bkV;`NC;eg1+YH>{L+D(J=vf|Dem8xL$q(f;!z z|HyjsB~XqH^aR=5x~4j&i46|rPIqfWW|IOX1O~MH0R|9G#$J!TF}q^lwXx4=_x~GQ zX_3XNM|b)8@HE(X(AYCy1Ftd>BbS!8*a8V|vPcWhI)%+l zBi=EpAYtF;(E1jRC@bTJ=kZ!e{V&LSAILi~O*(nEjOhjB)nk2eSj*54_+m@ATs#}U z_{Fn==)!bb#uH#GQR|Fk=3qK)uzrK-wCSq#1?!yp*I*@T6@=Rx2XTN{k|L62QM7?L zGjU}?OcYk9#>z)%IWYZY6U-uvl@^+Y=`T}Vw!S1>NV+8vmW$Sn&dh6g_6b@8-$B7^ zCIZmt>(K#wrr(}<^P-@$x7>lUdO!ZpuJ<_`-l}}7_m7`>`x)P<(}7dNe*E7w>}wqH z?K;0~AAPVbGOF-iT(U?ncrPP6kWuN+sD$Nxg2#NLVHL#G{i)|y)10eGsjnV;`Iu@h zm3^z}OYLv8znK^~*zU*wCGEcAj(1PKJNw_}zcufBra$n^v>*R>P5U}8_zEwsBq=b! zM~%>9#21nkbNo)&SfOPykjh;=De`NQ31<{?L=j*7c0%2uh8WX3F;NXA)^}1I4STHb z?6KiGybWh3UNOdXaht4wIPLxx3JoV=MFo=O!S9VNG8b$3YDFm#}K z6dtZm0vBwgopB;cRX-^?2V8^W-V}{wa`Y;BznvyD6O|#)oOD-d2OXcLOE{vSwD1u+n;X6cMg2L2U$sZP-;zX~7UQxxfZvGED|ZYgQc1WQwY( zx5*p_QUo&Nfe=#*(1`?nE?07=cyhuu3(Y&J_8df}kv5u* zTTq%--^=H;yg8I738|2>S9AFM2dRP$N$sCReP<1~k;TIQ{qSehN z9~#mkbB;}FvhhBA>zeQ(k5JRLt!olJGLq6w`xNo1_kK?FN6F12q$Z!5pd)2ZA89v0$*@6pwt(do}|0zbhTD?$}(+wdKpxk+K*B66e%Q*7Oc z1xSF`v}$H5#08R2X=bLux6jjZ{%yR-%b9X13oUKua$FbbsbY5oVsrhmxl6J6*R2cY zh3wVn_?M1cKXS81B(r|0?Rwh{*Uf~Rm9HhPICibZ?0D&!>(AUgeK&?wTaWbA{PN(< zO2fN-cVqJOceSVBGh*|%Aee;vUKQyHaU~8WJ#uAlvZAa^_;!SU3Sx!97sph!(YYxc z!>TbGSUY$nsI)_?MgOanR^^_u9o^w6m?**(qXHiz!Cx>Q1m6SGF2&8(RK${$AzPY^ zO0UHfh2Dt*yugZ@s1^(g5#~ho%Fqa#Ad-m43z55;be2<~4Cs!01WX{Vqr;*S3NEV9 z(t`a3gCZn&gfIuGgQ8Mz%&gcmH?9VPA^P|5V>tbk zs{x3|6Nl9xeRQ&!SEjI+G!vqbX zWDa842pA+NXEhS{Pvl*O{6@C(f#8P`H7OKt)En19itj$E=ujiH-`*I*jou58w@3h0 zoG|22cGKx7@r%UbZG_0ge!T(-lQKla#%Et6s8sXo#hXH*a^K;vj(>Ult-7yFznlEu zc7AK8?{wd{v;5grzGo*Gd_zG`qE>txT{GyBR)TE`@Hg~eqx%FS5+jo+&Haj3JZzZV zvx7h~H4ckYBw7%#Q3&)S?7@&{5!q0O0UDHSf&vEfM5*-&>vv&ACDKml ztb??Va*i@ zjB4oA;di+GchJsIq67V9q!KlIVhoP(L4KILpOkw;!&|VdhPSV&U)IRKsGodjX7n!} zRuhayxXy$^l@=CPgpFtPA!eC!=Q5nY6c4FD$wdQ{kP`Ni^^t0}BC>eE3{Uzhl6D!9 z-pB%pqOYTalW_VkyF!q87841`+(Ah_ zH7md@zawiITRUM}B(e%1R)7y!bPxJ~^Gg1*7PW@_R9?_DNm+CcUI-ZqdEO{=dwNLK?D{q9A*RY1^)Pg#Tj3G$pd@%wM=i3ESvaWvUF0fe_&4u*em_^ zN*MOq_unUrd39+ch=u_v?Dji$ll&(HN!)Yn2sjG-j)G-JA#!UA#yS)B!O1(JBj$`2 z5x;`8z;$MU6Mpi*u3e;SSRxl6_Nj!1-KNi{Hx!t@ZmzR8l$zezZE480zEfan*lT^K z)Y7n7{@{<{<<0n9{OX(=ciuRV!dP@Q^gWqfnhqS3xNvj*9&w~e$<3+G1U zf|wtJ1r&ZEa0O@t&n>}k1BeHHlNI{tAUx^WNQ#19%4FL*$ce}oR2?r5P@A6PhCJOI z2@}5gBy)i>Q*qW-R5&MLJ}=XD1MppLO0?#34o|oci3ap)j*K?BkMNEknK>`ko(|}$ z2iwJ2;(z!o^G-@yNMsjmHP>S75Oq^^KjH*WT!32E?f(V!6SZ?0IIt1zlV2?vMNR00 zzhY!LO0I?+C<>?;RPsBJ7{XA^hA>YeCy-8LdzzJetUt}!646kwa&ZcFihBxor1}Vs zP@>V4Qj}{4_+XjpdFG`%CFHMI7>?ANdH(3E)x@+1+pJM(;ZtcRb0Y1u?ZhR$JbbK`%lp7>v+kY)giPN&6;>p(#aI>4N0Tx~GO`QnXgW zS<4xo(#|vFV0ncx4wpeXF?A5%5N`94^HYDDtZgbf{MT&KVkD1@Wam(7cgTm}=WX>C z&q?-H&pBnxRSC`7f&p^@G>I4{L)colon4*nXUjNQh=-gr30snw1XMv2f6y&L&Y&C2 z)C7|f72iQz!n;$#`)6dEU{Dg2c3LjXrPR`u8Mq6J2hMEed!=XFB3890h|O*M#}S_3|W#dSMX=4RuggS1M& zjZwuab?_?9yc?ZKB5>kaRIZ0NAcc3Mq2-1a3R@Kx(szJ z#}{xX^6y4d8zd3TGjdh(dc~f#5r<#`1P*x)7n^N;Ht4+`kwrn+AwzgBAZ?qsNx}m{ zeh_eJOt%OSqH+tAh;nr50wmHL^M{}eaBA@NObT-GQS*Lwz8_VpUbTd|k@%a5xbyW!MO zsgQ2Ukp(fN2uVUhFNW2{j^B`n(i%m;d2oE{e7H%g#vxiJbR~6&OO>dOL$_YWRdma@5HL8lePC{S=u4{JM?7`dVa_F$GMbIlU z3mTBAAao#KDs^hkXr( z{6licu_tF&u>p>UN66bLchD>-CYDy>#RgN8}DR+waI;cI2*RIN_exPFBBaIA#g5 zsEV#>h8}*9Jl(q}Kach(!P~!}O$x}ko@zpjmwZ)Yfq$kd^gT|{9tyH;hV&4Ou@;5> zi|B@NM?+f4eI(MO^~+ou`W)#CSVA`vfP28nadPlr-Ea5Rnq1O8>|Xi zh)6S!b%MMySmBCm$^&mhm?j1*e_V)rNi7}1E12@ivaMc4%atJ&UmEp{QcPM7ia9+o z>PFfl){uJOO0Q;((&bJ<1g19VEF4A{Iz#-Xkd=ys+|NY?c)X!9GA$Y-qY&TyhMEb| z#wCr~ptUGjfn2=u&aV;JRAIKk*BApvXp0x#>`?TiV}}#8h?7_B17pGr7Ye5Rpb4pqnzuQ&szh#G7dS`pLm5F_#MHQ?(h*SXU* zh)7=?{QxuW8JZX_VGC1|`a?R4pqn;?5F^JRoi9mp=vO9i}5w?1OH{0=RV`|B!Wc42$8cY*`SrlC@@E8Rc7XLbcynb z36M{f$|2^2LaD3hr>2&1A>st)9ufmuR;pr$n^Jt_Uu8};mZtonlFC#r%d z+*fR=oFxU3o+AbBF%?(Mdi5M~7#WUj?uj*VkHX zaMd#4T=4BTX{~(~&9N>)H`i4I&fSYnUyjbCfb3_?QX*O8k1x8l_l|2h{y^A!2(J0U zr(TdDWlH@?rMJf3%w9=40!>6(!GrBqnD!&sEJ7oTbR8@4IX`|cN;SMcgP`qcug1I_ z123x9yLNw}S;hz?0Iv3yr9UhSANBWnvQ?dG22h zAHw?eYjS46Rd`^mJ#?XedJ0o|!6~G&5`{_o637b31`&*X69V21O4#urim1j=1vH zw-XBLjv#)#4c9?wUF6F8EA;fykYDi1dMsWjC}tzC9Ld$FoCIb?9O0spfRm6BGD0{B z>45wwoCH?RuShU#n1D3xUuNydK6tY>T?&KLz0PKxd+@exy%_if!*US6!!HOmXdN$z zpJpv27-60p@@g&%8=m|nt%viN+z{rXWjU^u*8?Iiz8Fhu;OdrZ;Htg`hL+Ed`z9ur z&QJN%rDSl=$O;d&4xP9AavkO|?V ztpLD042WT7RSUXe+_$QgZbfT0d4qZpa%j})YQ$CR)Njw5m1j43SDG{G707pO2;^)F zX9%iCZFJj+7k6(%%%T{*2JK2OheR>@>f7dyB(Lk+BniP0^u%U-!o6=cJP$u&TSWK? z(?<9@!bE1$#zCutdINXl2#U~;eN2+*y~zaZbKq*E9^ogPEr{DblcAN@GfMJ4hFr1v z(6Nu(q6Of_j%M4{$QLLjJGU!->H8X_Uw<{iAokZX1!y82&Cyol00l{gr8kjzLl}2m z2+^$>#gzody(EG@G<9hdJRywzXV}C|NR=SV6;2GgjD2)!aAKCk!nBK0;~SR@%?wJU zRp+D}+afM(2@5OwA!nK;7l#r^IN0=$B^#j02-7brIzNP+)eL3mF~p%K;tbiP9*bV% zJM>TLG4z5(kL0aDVQk5|bx^ofkX{4Dy1JPsMw8?}hMgZwNZ@`f#Mx|VqRa{z4R&5& zkcI{>xJHJYg_PYJLjt~ee8?c9>^VQ{F^m+M;o>!xV)G1O-jgWl;j2J~1<&=Vn!cf3Al6f*Yv~9%R3k!X1=!v%iTSQ+dbUU&R>;@MsnFKsply77(S`1TLm4!i6Kv!YA{KXDLL6NYGgkd;X%L} zAGFVXlAt;=L?8)`ju93FSLT!-A{a{z)W|7^XPE2_rqFr3N^;Cu!+u6cmpAq%)cR5F zcIcQIj6DVX>wTd?)s`2oS%IbU!hkqpt9g3(E9Ddwh8eskb@@QBGlcdQB{c|kh%jnP zX>8@ugK56P&_Ad56hJ&POWHBWEGC_WfB-{_nrD!#LcI_fJ1Cg~(sxiYkD?M5G;6qK(k^pe0mu+hLuugp@#61BLBHafZ$4 zbF?Gn*k%vu>f5w8l@ZO>A~7w))BRVp3pHJ17~zPPJw7G~VAkS8!9tJRuW*BZ3*s!| z8W6Xt4W$UULf+FdnnCDCzDF!i5=bOio;-u>vUxeKWi@g4150!iY`k_a)*v&q%tBJ; zPc2(Yt+^^BXO=HzRxYJg{cgjX5q}u{d(nXd$NdM6 zFCFMus_DE@dBY5okc1sKvKM9-926aaqOw?`5H&&FlsvQCKj0g5FZB=k(}$Kvlx2qp z-+8@pq3*?ttMLiq#h*Ng#5?bMC^+FO4OtEQOz-TAYTR#q=gH#6D(g3@Y`6};NBQI< z@BV)p0SzV74llu#+yjCcxg&_X30ux4%UKQH*|1wP@0LhLShe(R7@yp1& zc<)Q{@o0<-dA-5-hNP!L*91;Rk_S*YLIwtnrKaT4mL2~!B0^3r^7u&b(J`R%4mPC< z;W>fk*hr1zA_&>UW~h!jCW&Ntd`CsLBTCToS35OnFK@#b?MM_CD(&4%U6CSREiNOy zvlgq3WIxk{wP-=J`l%rUTI0x3wB=AoRm5~i*6>$Q&t-VEuuoIUfa1Q7ntKTdR zB7x$x1WU#K)Z(So(uLO5UHPB+&}$z;0^3~`3!SU!g|`xr&o+===})gj9K`f}3&-yz zrrdabvGU~?mJ$oTXuWm(P4gR_ONECQE-uu401_Gqq>uX3M}1?;1Cwdi++cZVGG#Pc z-ZPn6EXOEX@^MQ$-D^Q4b)%&?kQ&enU_%~*-0P}yx|}{ z#f4GM>m*;4oJwI(@~@)cHx0#A8!mnEseDJ#v*g(#ZX0ro$v3^(JzBIA;w}4x6B&0> zQ^N8J)lBVp6@Smy*jDwy(ye-Q4So%k$a8#M}e}BjDo|h7TrI zxC%YOc|;?3tC@%fl7?X}-Bxk^n}!sMfTYlh@Ovwf1T+&7s%9cW_4=}Te@l*igTYW? zBUqG>q!?-kHVQG|ZK0W_@`s$8KnJW|VS6A$dr(=~sNj{w>&%&=ouJHL!C08I7ZP)> z#fzNC{iALe!yvbhNAUs*j0!PM=M*&O2WZZp!blM!i!gWyI{gmkt;RbEw_EP?yqW!# zK413HWe1G6)!ZV5en;VoW3NGr;XoxHtuxhGO>bK*b&Esx*4Tr!(ztCg|)@q0_LF7+8)QWX0Og46&~OVv|j8CtK=v216{7 zAVQZ97jb$th<$Worok)z3NBfNP4+_iDc}@dA>WsvV}wjjtu;FtX6o2UNh2vD|0d)g zm_<%r$Km`j-N>6fs(8YPLc)U{b6*C$r9n#=lxLu;DmUi*Amq0}jXOh$#~4sls0#(S zwMZ18t}0=Hj#RsP9R}5|e)BXzU_C$p_|a%Tr>b_P-5lw%ZZ<9^ywje zAjZds$t(THlI7_aZZZZT7d3lX*cPZ=6G)9SfN`Hn=|w|-DE>{eYr+GGEeJFN#|0D)bWcI!)?$LjXDueEb3&?w(!`9a37lhsnwF-NL3ameF`mS0 zSd1wKa-bT;krM40U5Q2>A&aGVU~KWErbvDUO0+$`!am>Ga{&P*{cz&wxQ9xiFU{0|pnlI!u$ZrNR<<4qvecrd^j^c%O(b z*?F-Ejg}ZnHYy1;!MSJ!f(MEKhqmGA&eYvqSfpBc8df4KT{B4J*o!YV#Iso2!IsdY z6QeV8+Us7;19an~8JaTEuVKn4*2PPX>kcg)qmj@NF!0cdy#Yw6Dy*TQ)Q(^$%Ev*4 zKyL)M;$O-;_8)>B=*Ev*|_JuZ64*}x4V7!n(O5P-OcK&w?hI%C`Xg6y!s zS!yND;PmX?oFGv*tvEwP2vv)3?DQs-8gBAE?~^^cu|2^ShJy4h(j`W?;{dU0o-VW_ z;xuM>GBH<#;JUi$mGCVkTvCKt(IOvNz@Qs9Fl)(SyC;P;VV^!vFnA2LhS2ci%W>^0 z7ul<$4N8oNY}s$xXuFeFL?HyTd7IM<@l>}F~Tar6+`kT zaj_Ya2!`ZGXB;);vdJ4;Y-cz*yVV7>q!Vw00E87NQW2r?ZIcvP56B;Sx={)RA&g6b zIk16M{jXpN)iy&~S=t~_N_I_|!T3u8Al3n*g3V4K2oEXA)D44fY+8cN^o7|AB~GYX zjnHq9gZ7{WS-GnH6CJ!TjZLz_w^>^6gSwEiCu9>HVzA0}=$f5*OrCMmvK9-Vg{DPq z7*bQ*m769klp1yC9#h-`G4xbwbd8@ksYzjrCV8z(*EPTZa|d1T4dd^RQ13Yul|$;~%3gWYY~7H$$%r zZm`>wTNs=Wi=z=_uj_}Wd_OxA!G^F?`3g!Y|A|h&ixXbcQB*4+L%B-3S4tkH{9C#T zrH%<3s+6Wd8=kyMAmA1tfKdN3Ot5Aer1|8e`R!@GoqKOJ21;7|B`wSLR=Kqhj|e)Z z-k4gp9}RkNbJwkiKw-VVuztnfun|@yqWbnP08tsU9Y4lQ8c6SByk)zsB4FC(V9LIV z>GAFkqH3XoKRg^d)j^RCdT4?}=XS@&N+jpA@zG~#b~`uDZtHSf8yS9SvzzX>r~5KW zj2lLAt8Cd`9#rb)(G`1 z=Ez{SiLiklN^%B^K^#FL@~p5IGb_*@cEi5`fl6(zn??fEODZw8O#xLL(o6{c5}WOh%?`xo`(yJL$L~}v#qL|MuI}b2&zY;yu?tVG<|A(bLOb8j zui)^_S_o)0mM&!~OV7Pk<4-SNxa_kZywiiz#)Tt=((7pZ6QiP+G zHkq!Qb%e-{Mab~Mq8$7U66HkVBP4+EVx%?Z1}v$uni+)17IY{Gfl?tj*|3OL!`EVbu0F2@j2-(EB0sB{c}l z14~3yqSSz8`W=}!pI+HJzU-KQXrrWjAtGRBG4S!bb|i0#Qq6?)H)vx-xAVY&F>4NF6F;|L8r>S+xCJ^@c1tF`D5K^;K)NrTrecFed#sV-3N)+N? zW#lMPbdBJ<5YPhf-eK5pghq}c_Vec975g4RGL3|et{Dtpzy;+(n32HuK|vynyd;Ml zMhC?ae)ks6D*v|nh6<)Z!i)yYZV)#K3uF%klEM5llPAItke*V#$=0pzp@G?v5llFC z`N*^(@oczIor4LOX(Cx<8jh`KH)WaT6v zpO_q7tsBfWs#!HyYKA%iktYziRZulSQ%Le4yCldNKR6_B_H@D$ieva$2o8>cr7+|> zVB>&Qy4QheGXlt3xlBvdPXp1f4TPEpw_kY7^@D%`oTtZ!y!+I}_?YkgB|%*UCXS_V zRr_AtwrnrEpPm1O-LLQF1PB`QCignDsa>(B|7(Z72qThweCXqtASA}s2LAv35ctmo zXpatog*qfb_=mN#Dd?4N0KKhWcrOU%_8lUat9o>pGm=)qQjGEbD=vQCg!h*#QFB91 zMgaxIL6Q=0kHjNQoX$nyHxOR)vGjVcTP{8I=l^3@?~x#j$G2|4}X zikdp>>f4(dWli2-*9nRvhKlw1SN@J>_3v?#Ap)69vCJ*(WXFfrAzcqbA4Jo1*W>#_ zrkm|@LxgTO4=vjZUyy+-DThL@-JJ}!Qi=~ePscNu27bOQ}-vcqM& zF!Jk<&O8~M5v6=UYlRr9T(DEf`%t7s!1sPsPN^^{;+bdv9gSyKc_vv-WpB8Q5W;D! zFq^X(DwqjnYt(l__UBoOXz9qX>Y2pJJsLQbf%~Oc+*+M zf)Un2fll`Gi)=uyX&0N}*b>AOaU?A+7Zgd0?<5mwJ%^cRK1P?;Ymu}l*FxUi=sZ{< zaA=P}e6~M6dpW0iDZVBUf7l;?_|2x}_~7d1M%$V4eTw0d^1}^`9gJcfjk8HhKcG2@{g& zE2m@H4RR>BkQ`ZN z{T1y+DWi}fry9qhEOmBIQ&`9j*C4m!!H$IVso1z8NdpIkga8};6P@;y;edpD0FI$- zexQk|=zaIlC0#`2O%2kKz&2$Fi7Zi5r#GwV%HYrivgkDU)KdYHmAfW1w~Y===~|Yc z0R0_x4gDQmjdkt)jcwgT6Z%io^)$4u?P_dluIp{@Q6GwsF#V(QBDTLrY7Ka3Ycmh)4~adlA7 z{2)5z#iJ{`DE99^ZZpM~uGF5qk4P>Nwy6D50;GkU)oh~4WE!~yBX`A-uNfch zXY+xoJ9PoaKEGohn;z{K{$O9Ji>)^!cu!Ql)B5%8j`|Gi*E4Lm4idl->0$Eo3@#pR z>0==p2^ij^;{%N1DKSKqgz@HS&ZZL@pobuVlXJ_0-n1ZKf-q)qNaXbnjW#{@-G2M-6)m)$ku{@h9y}5v^5Efb=s}tEyz}yl zgn5K#>(nF$J(Omv5GIw0zO-4yjFYrc2#xB?!TUqUXFD`lYFZKr%lfSr8l8B2jfCY~ ze_XE5t|q)Nf`FtSUqkUn1ER;Vvzj-5(O`7HL5q=n)nc@>GTLP6_hGau8C}NOmKPAm z8iuI&YtUZUynifbs+*kNiE||hJj{>)Is8)~L|tV8K{_E$HPaiL&rzKGAS)8p#106Z zt56x3oGD=F9K&P_F}-L{usRx=Rr@eyj4Y(uUvclq^BJ}3I=~P#Og2oSj!xwU;kcJ^ z3bK`&1|;j4PjmD68s=G8RuZ5C#Ds|b(|B9Lj9&K%f*IAc-Y5)I@gK>$lO-mj9CC}p zK1bGyqg0?XOH?wWv&uXBmK}$1c_aI!*6Xb-)<(8)gE?h}_4iZjQmk*M*y=KZW!e%J zfBzQ*i#i;Ig+!gxNzm2T;2I1@(>na=R~sNP!u2EoRsv%O;YRQb14#Ll1A9)SvV`d$ zsPzTc0Gmycn)VVxq`M7SQ6Y>zi^OFb-$8O_7A}I5&~5RhF((NXAv)3l`xFV1T(DsF zz}9XK`Zj8u7z$bx8eqZ-e^40}L|wI?qKfodRQ6r1rGILcbasa{p(HpVwI;28H8Loa z>%1Befmh*B-PDKaVMBOO0sf)&5^p3&EkyrBQCmB``&CLnzhI-fnLV=57tkl85PgzS zoUj%_55#i$ZCXw)T25ABrW_mGr;W>JErQyXY9jjKqLtHU#I_>4w?RuZrkfM8n&?9- zjuLI%jG6yDvG87ev9DyvH*!7@KkAPkg*$yx5f}nX)R<tOOCl87qy|M`kx5?8Xj`pcwj3ntmUkiRwkkVFdSIf7 zG}AaYLC(Q%2d+6m( zos5PvE-=(YG=dM*M6P=w$F-+)alsg|79oeBCfSehHH}FRe7y?F%rr(cBIMA`Bj%8E z3w)?9pK35DZjc-uY4}KE!WfjHkFg~Jfltm(QSf2%_|VL(1s5Qps8jiOm<;S-p2dc9 z&Bm3j*-lcO%7<`E$)NiY?bCzf%5(I45M#9#)y<|wr(MdL4ZD%SAte&Swm~kLr0GpW za!F*@L$%%v4cJtrit*vUBM>7s8bC~BGRyQwXZoV^?m6?n5dC`e=VA!Zc5yDp41aWn zFFN<$?!wQ!@Y)MYyUXcOCO_KckKW~r&cBzP`-RNcGe4I_PqIM30}dkI0Y{$Sk+;}= zD=)CO!@sv<#nDL+8^$L|LhRq8OPfNhLx)(mfnDP~X(4k;Kf~=fU`=KjwiwyP@Gu=N z0`M4cKF=|R2JAlIsS28fLXpdFN!8Wy@iM!%$m1Wn@GA#g5ms9LYHZfb)T zk^`*^-c`h04{B7k;Nd6a8#PD>+@%<5VS_TYlA!uKy-)4kyVu$064^FX;J>UOMyp7@ z+%MWA#VUGE-=GdAC;oQgWq6<50+I6CDcBa?n}ooR)+>7ltXYxQN;p3A+H}xB5hZuc z44xNjwgxZ1A&5NNq$%ISA`bR{PepaoICn$mK26J#@GX|5$o{A;OL79}S$6bd-+7#+fQuHT+ZqGc*hg64po(=>Qj?0dJM z84GBA(-ml*6VY2Y0`-=e3MtwP$AF`C&PO;p0#TZkgu!#B%O)WXR#s3LX7P+Ox5F*D zA3AZ@=!_DDrM6~kn!GSGr_y3LT|)7W*kVDV)tv$rBJeKHw+aU|^gQDOg-d?ror(*NUj6%d;IZxmg0*RY^%}nH|jodh!piqisF)Pny-6(_MID5 z^u$>5xRq?d@N6|Y96k_Er<;r`)gN-ea9O&pawws&Gct~GrQF<`5ScJmln9H2(GERu zHwMB*Nu!;v2iA|S~Iv*Y?rOt|Dy`pC}LrZ>Y1ITi_fE)jVd?J;rmK!C1i-N9xV8&QaY)ZMK%AZU=t<|KmgiSUoO zfn4Gcp2I}w!Zf9sBPqXOa5S$bElL|+SKtghFsg4@AzjB$!+O;?gufZ>Bjv~s@4RS7pK@r+eehcN4zoOF*>Gaoh`Wu`y zE6q;2!7-&4fG(6q{0uc7N4R`=?ewv6R$2ckg5L&O4IK!RsEzm^5jMMsMFv`(1;aMN z_kp;*{jZV1HLm_PLMmvQVSrGDoy})lT zSe*UB{Oj{~dcXS2m!Em7a@pR*^qUBMz`oaS-@9Tj*@ysX>7&c0hnH}E)kKWFI6TQw zu$OaNCd@7bvvFG|%##+E1zLH;fWWoY1&ZsoxezPbB`7<2&4wHr!njKNr`V8(`00s3 zq&5zex6f}^k|45=93!n*$T7cN`x20;$ZpfjF0Ft&#=S%9 zwRn~bQs&+!;L#u+jnr$^LCv)vLMy|f}KVB_^XTbLuyHT zlv?O3Adn5JrzlbR9;TG}r%vU+)8+q#6LP`-1zi&`a&B8NQpCIQwL)&6$`9!I|De+k z>GYR$!av|Jy83IJijtMTq3ge;(|tO9pH6>ACssp3l!v_LfOF+fqH$u&77pV1P5Sxw zRE{my|ADR^(1|^4NS>(th<>iq=^;*#P<)T>zDGB{54^(Bo7Upk8Ue8Y`p*v$He8D% z&amI*9-H;d5P?(vkzU}I$n0JDC;It+e)^o8&T zpYF%@YWyDI*}q4f*G&JIWQvEW!}gfWKa0=)^Z24aM|S4jxi=h0pX|c}$Ihs<`#Vws zJNEc@>{;4Tw9s%rG4<6aKlS7)B63!~d}-1AvUjn1@#5?Id?|ZxSn)8BSn5wKT}p&V z<9=4oXU1O}4`kK)vuc;J_P?3;hsD2F95~eBKh&{wsLP+#wa|4xDeY#$%Plv17PDXL zTl}zp*FIn3{)I+t3AmM(EyPuSL)BJMt&4xwuYt7i7nO|?d)pIBNjXr-~ z&7BXwbJu+Nu{d+%iKWDng+_$^b0qnqGwvmq1(K`$$yL7Uws)(Rk~Z#FoZYE0ian$VnT`es%_Q>FErHBrq;)^8q- zX^yl0QJf9ef0P>4e8Bog&Y0$E>mOCya7}x3c}V)`#x2lC6|(}D%59J=Ytk|EJZRax z8BSE@FG^OMVw#U_;qneVW~Hr^>o|aay9V{dGzhy0Da_X89-QRa1>*@4slcF{7{j3} zLxZz3l){~P@=<2#)Qp2Ah|&f2k$7lU29fbe{ z(s8!d7#KS5niw_|WGfSJ!!SxgkZNN2Nr#D!U7X8XajB ziQyOG9qOjalXAD!F%WNpSC?Wfd<&K3rs#qgW|Sg({4(lnp{^^fLXdM-;zG$gJH;|7 z*)^AFS8jl`e#myX%Wy72rWP7E4)o40WN1`Vy?MAr(S=P#U~-<@I!<(*>Z$AOfo_WD zNmYqK7zn$8)>BP&jooC8!@DtIDMTOGP}d2|9tsA74HXp7C+51@Tc)MAja&AxqC~br zGbq27-q%J|m2pEND6Mrc!(>aO6)(|*D;oq{1_)EP6!Z?e!PUVBhJ3Fm9*s*@uY`yI2DWbEOS(&M+=^+IMJ^EXPFMplFpk3nAdt z!g%Y2#MDdQK7!3r1UM6+8GBn!Y&1LQ;UqGRN;CpQe6wmF1#Up;((u+Ag`q$MH_AEL^ad+#kw=; zCKvv3W(6w3KhS1azwgKhBxL&&vX_evy_NTFr0-;}ukN(3e{ea$ja`pDmcsBL3r}3~ zLd-@1B%x$N*&m!G`x|mhPH`+%LQ=Y4Zn*V{gs}P$TTZ<^o)m**m{T%HxU(HVzCsgv8}FS7WbWI+U&4vb7syLpU=81QX@EakgEkr-)Z2*L;5V_r-L;SySSny^5{mcnL< z#0?@LhOA0my?8~e3|d0;K5#Z9N`vEiK~@LIa*yQe8oE3csP*urR6l)aP>`%}-zle8 zCGJ7CR6Wg@S(?N*R2?zC2`5 z=-ps5SL2d4t{f@-yf3EwgS<4iQSu#ebc;#!D|iu%#bEQI_vxw`n>8ERU6Im2T* zHvrQk<^qiKC|{Qg8xz^Bz7~|dSG7DTb7~D~Mx)&gb?t4PEd(~moj$D?s?^ar`&!8- z-n1T$s;ml?$Rxc?_D2h)1dp_30KCDAFGNdAzG@rj&mI_=Pt;;a0-fn?xHL zlrU+y*GVurhB<|-%NRF^EFteD=J*^r4=lE*0_a3u9e;WJ)v1@K0x3oQl%iXCccPY3 z4nZ@59PX?ciRMj$HL5_fM|s-!?1z@)`|qXXzu0m=E@dJ1Cl8|WSU4%aR#0a)y={(y zLHgU<)9MPXZx`CgI9&oTx82q4;E*dtHEkT7uTDW|_Jzsjb8hc3#kiVfBUt`># zX#G}BK}u!(YV~`<>9}==Y*q_|du!|cOZb+;C@YMM-)x%N_ZWTr;Fvp@ozMeWdeu?e z^vkx8U%I!k`YUIXUT!%i?kK3tr0L$AVF#(rkSBMOdc*X{ZIEY$*1SnAaiL=YI|92q zN<+PnnuYYRXnW`T+mF=GBA@A0Y2_2|+e!&D!Lke%CUAypx`H_3@PSiEKBH8EhA7jx zYA%XWj-e@mO?m*A$}AP&yp2PIS1PC|$IUxWSSOT!p+)80{Q(QaP3vMA&0I6xi%xs- zN$5>u5?(rf{kX6jxjDb=D3NBMs=+(N16mnQ);MzO(u!lB;VxO6-1IIx_R2Sl{f^>W z&>dDnfBVwm>xTo;q;Xt|&RQ(I8?6`98gQ7>;T!xbvF{-vZuTor%0#*3QL|XM9AAva zL&r%8EaMm+g(J9?P|486LKa23AwnoM;V{~evOZ6%_WBtLxy( zvg3eZ1u@h&Ejy|VYh$uNDt43hZe8y&D;fPiYhQ@ zV0OgWgIsNtgAY06fYBidgPNALrv@Kr!?sECof?xXZ&3D|L_+Kxgue*{l_dJvL_Zm) zGc~wK50dFYJ3V-ve(nJf2N{2);Q8hNtT9Y45&)}SPYmUryA8@&hHnLy&6yNP>% zXan(O{`j($_zGawq{90#@ykg?cVmhmc7ExFPrN|#^(Q{{gqjNE(;X1QzuNI~$EUj< zAlywBz_ zl!QEz><2@-q3(l4h+iEdrPL3acH~7z_nl3rn>u^?d)hjhPH{#Vx*!)=Q6Vf9;CSd9 zx;P7|8+{H3YGom<-fP;}^DU#XpXi;c(Kn1lTca3Ee7+_zP;I+ONTCVs!iX3ZbYf^~ zaISyS!}5eyn0HJMBk~RnxF-J#9&SisCn0Md^$ejO?hP`>&>Be~E&;%>3{??<_;XxH zFpNTI)wYtP{_0HYwS#`>(3K0Y zdH~{?)8H+ncN<#3oKNefF&ggCx~}~divZIpL`f>7>veCENzpjQFj2D+UgBt5+i(TF zs+DfEU@2;r9>FD)7(5TP^q_3Aa>vWlfS^jyk$i@57OC7J*>su`cHf-2Q}R}Wult$h z_-A387MJwWmFrg);x^Jg+Q!kphh;b!O)T@|q z5DWxyZ#~VkP9GR`!ECyFn zbsQlN=8gbQ02%hQB7#VW_)>ma0)bHotF{)ae?~v#05ZOE@a?Y|z7Q_=_`*uRz48tc zaqQpX3rijaQsfu1zvxXlBbsOm`omFV_QiDT_HFP0=Lp&~|Kh_nA9MM-af!C86&MDJ z@OH>J8O5LU#?x4q2D!Gn43okQVyYM|5-f?XLC8W~lcrXiJpVckE3r@j90-!K0&)BO zar@tlSc*I9vmf0!vcyC38ayHR&#<r>1x?wq&k%3(c7 zEkqyY2-?!1+0diW^pbhdGGZFEJeww36J|mm&{FEW`DM$C=@EDjJv6xB=&m;5+qx&fMe2*EA_(Q8dZn6v{u_+C zQiH2EB9y1;2AR_<{{Ze>iATv`os)6|C1eO4DQ5G`xZ$DoZA|&Y-$KQ(6;4VGB$fG- z%GOO0Q7JIDaKf!**TU%=eXEH(1Bto*#N3s{{MB7~uUKE%{@wUwvNcEnS9suXVE;+~ z{*&LypS(5WJNvBfL;e1<&jrqo`Ol86oSpcr`)>Z^f_2%Ra}Uv7J%P9)e_YX0^xj*p zyV2!$8Ui(~{+d=_P0#Ai%)ri4|IX4E8-C>&_{iE`voE^*f390i1ykmS;D}9cThi)t zBi_!4z&XgC`~QbS7#jYf;c!2}nGS~s=qJPBLAp9jTNZ#GXp=^rp4trTAj)#KxZ~i0_+fbd z>Ri8I61d3Y>eh(0*E+x+HgX`06hs@0d3bEXzXqIb!}R39H2w;WJz3o12N9Zq=_|N8 z1=k~b%$iDZtNQ}D^?7Fp1?GhAX9(9l2&{=e*ow`}dg`%lMt!q0q5&Zj#T{{>ws1n3 z9--KcqHx;<|7if1BAVeBOB)iSsDTV)qbvAwxfaXRXu9sF&=J zgYNdY2Jj5$79`=mfXnU)xM5TI29bYf9=^`pX|*RPijY`%MS%)--pMI%^c7Y@VzeQ?y#FHU#2Ke!=2c|!u0s0aU zuR#@d^r*24gNcq>f*1(Ad9=1-Ls`Qk!x~T-T;7NeyC^1u*l?F<+frVo>?|gVdh}jN zI2O57S<$bn{PFWy17BoT;z)#I22BX|2#dfSsqyb;EmMF0k7$0#x)lmH1WMSsF!R#f z^|_mQzPO@AIDQxTw3z%xDXJtluka-4a%LSXu|>A=9h9WwTBYut9ZvNNPi_lYF6)7s zbZIU{!xD!lW=0CuNH+upFJVm_V9O)sY>=LMfAuWeT2XQ{r)pH-tdRy2t;%PH@g%d=z$ij;3(~Ga}03-08g-7QnU)$5tcl{S^P0PdIj=?QHWu@ ztv|0$dAokrUQLXS4`IKpb*{MwqUA;qFrkt8EM0w$PM@dKhR^~#5Jw%90X~xx{i;LU znsw4M5)5(_#7riUAX@~ndQ>lB_x~c`JBL|=z&RFvhj~k}`G|!tlqkOFEHwrF1B)qP zm~uRiS|%vDbHaq>UVO%THcQMdL@!Dz;&20(R!gp;$WxXE%X?OHLZjt=Vj9GH;V}#W z%fsKniODPeh8|mS&EV(v2@X4)JG(A3)&!3bRNK%s}6T_Sdh8bd1NGp~z zE0?RAmRrvHGS2zq&cSAv9$dYCb=i4fDeeG%6X%=>&N)7r=SSIw?!l92Ca6s*pW8ySs|afz*( zlw3lHAED=o8Uzxy?H{@V!sS*X>4}54h(PIN$hx+@zvp-z1b0eXqmn{z|0XpNK?Qfn zf)#KEf*@;1SxeKd5E4r1pP3m)Gj7mDkHSG?Id(B`W0;4eeT%|OVd(Tq2FVj^EU44zN-lEexbow@(?$Qa085kkZ)pzOi zXLNdxPHl8zGGV74B+)66PQOkMI5FOJz?4!>_bTbc)PIh^>FSRQMBg#j1tpXcQ?C1Hb&vg1EebFD#)&D`KKcv&!bYd3>_I{ug;|gW=RqoP*@6c(LPHS}f9-Z#f z=`ZNiO66EX$I5O!0PH`|(;w04AL;bJ==9HYGSTkf)AX8+t~ek=EM1Xnw~|U%94!P} zMU%3f-pHeSWD}+o($!u%u|AM3P{ybTDN>Z(Q~?Pjm0UXQr*a4BL>py=wk^t2^piLS z5r~q|gffZwU5fd&uj?}n2} z&oo!Ey&HzGJ=68Dsn32W%6ozmM4?Z=z3>5RkGVj*L%x-5qnk(ihU8e_jm24H^n(M!xxdX z%4f7)u=lNq)zX6yyu2Cl*1T`T1B%{e=_K0U3wOfR?EG8v@8&#vZGyj9~nea<&B zv6_GQtvp}fGw8sZO?c#+QdW26+{vfQk#XPUdA!_VIb~VR+4E+e@6>7E=+tWUemuqf zI!hDPecm!-fosoOL#ye#?_7E}38uup@e6ox!qRJ5Evq^<0s z6;}`F3XC`1v)QuMd$@x28{LbrJ)z#i6;d?Qy=YspdJk6*(oNf9e`MKa%c6U+59o^C zjs1B4NBZghZn~dL_jj-F*k;RJPdZ@BU%zBd!tb(NThjV5bE+-rVO5N+*|MG&Ve5dX zsR%teV=lHi*Uy<_Y^m#6cH5ryq&Qo`dXB@Ev7WitmiOSC*_7$L_4He|ho&~OE%m_} zi)mN(t?`GZE(_`(h{(28tT&r2wtn-vJqOLSniFs?h{h>B%2x9*CCS!eepqq@ug;rI zaT(WIR-;p|HS%daA`-3ch(%fFHd~u{J-*hKwmxN!wC!Er5oz1Gz9SK*k~mwdc|9lA zb{ywKTfKRGZ?x^edb-0_yq+0@&Spj9t@Q2q(6l&P)_P7nzCJI~7Pp?X-Bz-mX2F%6 ze(p%J9bGRoqli5kr%Z>fa6QvZm2XS6Wv^H5z>pS}*zD`inB#4`*7IU)yWof`hMlL8 zhrR3}>WNz~DY9ieJZ(;~C9hX(vwg_Co|1_U9NA_or{Tvbk|x5AdXu)P}w=V3a;Ac>*x`lx3$a<-tDw zhDe)J{RUjE?})}HrYGQ)0yEm*mQ27LXFCZ%NU-gFP+%%O@K()3Qv&9{z;3HqPl^Cw zIJRL4iDhM%%MVvbwoJ<^=-zso!&b1K$=|viV3@WIqZx0CO}^H=8k+)GO>_e9C1&H~ zNVwLtnoQ7adWNkY?UdkI;mW)gzU01{4HO)UCIyPyJu z`-2?Uz!nHi#t~e+3R_ofsc}UI9MQ}lNrW698q`)?9O!Y)AJfP3r~1~C{16HwjC#BNc`A;kh7Rpl+7=t@Y`q!wl|3U9l? ze`DLN#uE}Rv&<*tU8ibgE4;AO`c(%OtpOG>a{4>HdT7_-9S6x0g|g6W0#theZ1tf6 zCkYz$V2VRZ@avj6g#IS&L0BTCd*OsS|Byr(Q8mHG%u|&?9fc%tWRy1H)B_=2Rfkk| ziMtHRhLGx(k*JYFIP0Ber7ygmT*}BScqa-mL9S7%n-rAu;GR6hQ5i-tq+#x!=vgO( zg~X!5ZHN^zxnL#NVuH%AIfRT$L`n(~o97VgNv9`i%LxX>bj|dmG?+^M>XTS*k+HtW zbolrL>`uSkxtMyZ1UgT!!1j!dTYZv0ft@lvq)j7j^>y>Ga27Va<<2&gp+ymL7@lGY zg&wSefSH(H%8)}+77iyi_{eVkop8^Ic@I6b1&W2o|B21>Ho@KTu9bGSyfIde(V$YQ zoFemDtO|4LUf7WSoP!SX=>&~^FIvQQKQj5>rv!E$@b5fuH}b&Ongd79`j4Dles(bM z>?QxRm+l_9w3=T{IY^-2N(e+3`lAbd(KW~d7H|~#9Yq00ncq>i;vkbNM=j#A9ldN8 zQ)T=fIaLF=YqVx~&S29Qc3`m43qACK2} zeHo;A9P=t6r+TApn(itSZs2bRD}bZihCusn z%P@SCw|+mIlaDrW5V6&Q@PLEf3hp5uOVZ`Qh?Nl}2gbWnn5KQI$;2vnD{Smwb2lF` z3=a=80#Zd7`x>v8)~@s~>6f<4Fb|cZNP(-wF|R2iKRF{Kh3MtNjpJ71ppCJi1}OJK z4+0w=E85$I9NLJ=@3vl}I2!o&YZP?ax^>NNj$NY5_YI}xV$vJbdg}#5=_UICrQ*=W z9L`q8vD2R;)&&Q$azz>54;PNd7GM&?u@ht@ZNLw`NawBv?P957nL2ZgFZ>+pNV!+&RIdu=$9~?uI{GB5@wH!#J3qNRk>1{k8Xr8K(0#2N6|@rUTPkGQYyCJJH47R1A=&648bkn^}Oju6#~zUvjsh-!@@ zTNxX2)8vt%wA-bCm4R(^S1%_B+Smcnf`L^x8s*WL(^2OXVPJVvKy_;yq>>PYH93rv z0#KPNCyPM!lfszPsvE2liknd4B*itX4am?!ydokQHH$z+gTNR?DZ;LX`6SZatZmo9 zK)DABECk>0g6b*|r4D2ZN?!)RA3aL+$W0|LBJ)0Yd_B z5y-bF;HdIDs(yE0pt{jt4L`c3d+{m0`0V%Wrd_##%vyhDZ6NcoKlAXLEz3=VOPOwJ zU?&DpXLI-ZBla#wlst%tu*KY?&0)6Ro*l54`R!$2yc8&Z%3uD}vb_!s`W(C7i#5e2 z1!DI2WAD}^#whGg?ax85H)^8PA+Dfh8s<5=xSc@z_ zTtrdjMV!2mxm5?~zxN|^hxt(c36Kl@WPf8E!#QCY3 zs`^W{EuB|t`)c>sP8}=X*LtyaU+Y}kzOxM-`_8t|zs`Nru2Tn&4_!LgaiZgopDTI$DVy3cl>ne1q7tC~GAccA>t>5Glc12jGddMBDro<3PKS97|j zvbMdUqrSf9;P**WiA zdtLSAvF@o$qZLiFW5dIWTwfVDFjX;o=K(wcV4a z&Yy4Vu9!YCR@3e3?QN(#)_Uc{!Qz?rf$|}5Z^dlW*~VT^!(j15ZF$cD&m(d5_`qaqTg7Z`>v+wHV_j#) zyF0wKZPinAXDbf0c8m>N=xUyuXs+$^Ty`HjF?n|Aw5z@9z`=b7<~oO4&Q&P~M=o7# zc1;}X?47IX?VG$<+2`8t9xbmver2M1rnz$8{>rnhr%qMWxcjE6JqHKRoH|``aJc%? zK;`h|6OH@52gfS=Mutu?G}a$G)mz)7j2{~r8992?^QS*|Aa6QO)7vo8)OVrX+fI}C z*g)QTOal2i&y~r6fpf>swjUfhr_3N8|H0GeJjVcfr_Q=M&YgC7n$No051tw5XdZBR zPMvdgG@o+~o;u??(0LZmTrSTs{KGx|+ljw){}}zFd!hfr-KRQ&%2l=1jd}@)8&0c0 z+}qkvci?Qxsp)~%?#nYLnvNaoJv}pW{@Bo2WuUQsu5;{M)y$=_eV5w32We3>%qg7} zgiso%x_eL6pKcs$A3Jwqpl`Z&q`B?n)IjHn`nHkIv#!DObFQAg@w)N$=9$s@<8>F$wVpU%J~vx;w)@h7Q~S>} zRZQ%wJAG#Aa((BqUQbh1aZ5*+x3B%ccy(7(-+ov5#oEhVZQTcl_RrK_oN8&ha;dqt z{?f!?&E@j;rjDArftg}=MR#reg}TG%k3itGP83)pfrat$GGZ43p#!XXwv-EnIJ(E+e ziIHyWti$nQ%7E3-9go^GPR~S}!z`w{{5|ww%@gtQ$#x5#@bY3V+c!HtiDP5tN&E8T z1f6%La?Z?{8{^E7#nm@p721ZZnJ$Ng{uvXaHUa-KeZy8`ZUo1NZLY3Sn=3bB7rI<_ z7yb#8<2E6Oe{JKojDO0Wne`7E{r(|WYJ4D*n;sInfXfkX~}AK<6jW}viN68SS;9Q|8UHb4OuOw5ZbteHsUvnUsDL}TSEJm z(7q7v6~Eawv)PS*!JOHg#XnOH<>Fru|FZaJ%9$-VZ^1tPp}gFH*<|+EOm@$J8;>Z9 zeGA=DRT!{sTkO(@0_MpS%kBztzVMk^uH0%n6hJ{pQB$JDb2)V?l(3T!` zwI#+}i5kUqjR%@ zGd$~BUYs*V<33|Dwctvp;S(^mkV&Qxk}>1YET{1=gLG$5NcRfHq$wD*^n_fokw~V) z5fM5(OU91zsDOW&6;IT);*AQK*;saDAdhM8DF=fp4udFObdso}N?cu&;dT2B(imRix zZlkHcuXmzjX3id+Gj;Z-=TZxUp{@>RAUn{Nyx<=kOLfiI{fSkx#grHqGCjFLu{*eA zp7W2mCLNB6(D=+mZ%1b?<>GRZWzuF&E#yWgqGQ&sw&38fw{LcIA{UH@XFIb!Ci7(4=I@VnuePNphAl30 zc4*Q!;1368dyK2LReLBrlx#zm*q=Wylvy2d-E$74%^%QTa~e7!tinXrSsn44S7 zOoYvtz3mobx~)4D%2_i0uzQ|A7FKbz>94A}#7UF`#wIgfYM?uvJ|1$)K?d*@U*+7=ph8apNi zZL4#b%tnVs5@uKD*uaW0vfP!jEe}MqV>3Z9;0z52t1G=1#2L5GHymoqbo4HELtk%1 zv@Q;JC4*f;XROOMHRfM*I-MiS)A3}YXE7ZQ#+Nd2`?95La3M1|veZ4`^u?2w_V}=M z(VFsxhuvoLa9?yP;2G#ndBmmYSjXIj*lZwz&K>Nvp<9#Py>qGY)gFImcqM9g^~@#a z#)p?LM5aOu;l%hzr?uxj;_h^@oa9uDke>lv36&C2y-a@$`(m! z$O!NIBFXK?Lcu?3HTlPEZvVL5?f2NT{+R)je|FIA_YG$K3xg&sdfcJqv0!LrEE{Tb zxJ5Y}maY|t zX=KW}WU(d<=GLlxwq2FXXJFeG`!d%Rp{*+%`Vc(_tDH%;}+Vi(s}*I&2F|1E$G% zEWTuEk1VI{6QZ+o*&15O40JDz#nVGx>+nptBfF9{<{W{sa5m%>tmDIN){d}cEaVvp z&PB)CbDq(eIZ!B}R9|Y*lk{1~JEo?h!IALjWKS?KH|WW(Ot1D2k1ZH+SBqG_<$|%c zmEk$hk|jB73-x;a!-L{ttZlA$aiq=C<2D6{B10p6Lccp{5uY z_B+J5pM8>L6Ym)aXYTvN>jXM+0+9z&R&zRMw>WbHmOyUE(w}o!ow-qKf7_VN+2*tb z+T6DOwh24f8hg6SYwz!x9B_6`52U+h2Ku|^1_kq?!)T5U3-=#Bdc5%dL zPmQ|lnbC|RJ8E>SjAb0FV@51Bgs~2=BArg-SdS|+*5`JO_q&C0qdPNhavLYi2yVnRSU5OrDIG^(?1? zo|RN~x+~+J?#X1Qdo!l#zO38VpAGtq+3bQj=U%YpvO)W@J2_nqbsIG=W1|qyv@Bh(H4w*+OqMq>&yN^Rm*OqJW4+~UL=mtjFVxpP=^HV3&YI(0W??Zr)!x_d^P9UzXNJ9FRYGcQXxk$xZDozA{<$n2n8k(8R>t(73ICsNI)}8Qo*6vn#V> z>4as{l$s4qEH8(|*kIZ+F>3P1gWVIOU8}2B`_SA#$GE+{Yc%1S4)$33vt#~Y%b+P@ zSsqFB1*X!o@fA-x+q06HywE!^8jM}=t}cw)T?6n}-9G3Xvdv-R^n9Ds z+1Bn1v~@VsZJo~kt}d6etJ@Xm>T#vJdR_gPU;6tksA%lrJgGqYDy=Yt+UvhO!M>9r$++_?Wf`b<>WCznC3<^85VzARB(xe&hHpvs9 zHt9WpsYR>eVeEmi@jlNuvFX}^VS85ziqf{YU>KIg8C}z!p3V_cb{R~qSbUM5j+wSZ zdbZ7Xp}%cz&exeW1=7iEYB=YOEV_a->E3kQG3pwgo$XIU>2uL(O^>^x7s8p5k-;`V z<*CKcQp_=A848U#0>*If>X0Xr3w8MV2b@z=vmSpYY4^q!mjXS#38Qs7IhzZnjT1fA zq%|Z=MlW=mT`R$^Ze!nYYGQI^z|kX&k1j!VrQ7P5uv;dDrP1X<-)Pe8wXVb_9G-|d zwQ8Oiw$6H%BXfh3<0H1wae(f)J3bJebh{uEok+~tItQ{-bJ5t;(2~8wWgqL0O!c-8 zPT_=Qa58BQ^^Z?GyG@JBMn^Oi=?|~AUFez`a!uQeVf#RD+ls$^+%C5Jy2jfE+B}`Y zuq`;6$@Y1>#_a<$fy|t}U0gImR2u3DuUf(VxAi%VGhH@w#@G{`^mya`?wlQJI=!9# zC69NiZ+t3|S?+Z9^-ZiSUDwUU(m^_=5q&xJ#z$~@1H({uH5+GOi3? zRufYLe}#E>WgGaMK2OG{^jq?2Cbcmbi3${@kF`_YVQzNmQz_jMv+|YC^P6fxfn3|1 zx=Jc9;7j|8_Z*3zg~vSuoCm=lAGz*jpI-~}B@XKh$~zC0JE5nG1qW0V#;PkT%h0m0 zg26(OhkWq`d^}{Fd zv-`&5t(R)o>mRv(%)pMGe1>+P_~OW;+{ED8k#m-{V`S9t&^eY7+S`fdvemqad_tSCP2i*m?xA2-!SW2%S&%8PO#qr0l z*1-ddXRh#iWc~Q!rQy$-k6s$RxkGSgU{hNA;)H>Q5D(>iyt}PwE|NTXUK>@vOEGR`R!tU(1;MX*UXp zTXZS%(g;T5OWB7iZqTb&;hvnm$Yt-1TxcsIe~N!fmykEfGKaSG1+uOoOGt{+f@u&b z{>N;wuNE6~AG?H)!K|O2BU2=}WQ5fg^=%GOCL~ks1)}!?d*}beZI!vx zqpz`Q_jFMA{OhXSLtR7vzQh|y-BZ=QcgZ4@S;#(FJ=b>*S3iCci*#kD=k>7Xtf^{^ zTwJm7$3xpZMWvS3h0N9ycEhj+Em}gCa+YE!i96FY?65zw9Szhn-v~R&_^Nai&RgqN z|9P>;xd|qFW#L7PJnPb8p?JE|N>2{8i!dN~oRU2wLV?JOVX_FsiWqikZ0YWUp0f?s*}6D zje0m1Ns(pU#?w5g2`oXp_OW^Ign4$}VRbnxYndw@|V2u{A zG~V;kp6XuRTN+=OU)<;MN~SW%$6_ru?fX&V$+gClzqRynWBb*>k9x+|dd3Ppv&`8e zxp{>B*E7#vf_2uZ>j#fr8pUMr8;##@{L!(NwPP(;j~0%#TsziZv>5y4m)?Bo?Q`pm ztv3$#6`K04Hy^kh`MCLs8wWcJO`V_ZJ#?u_J%Sd82_7S-`kQlEcT2i z48Miwzy%m?CdmKqLLw`}?D(y~5&T<6i=ngG($bJZSp>J`!its17Qc!sXfa+o&!-{D zXD(kMkHNbR!4Aylu!Jt+{n9mTbSk@~TA5{#M;;tGj*(AQ6e%C(&8X7MA{3ypq*SDY zmDH%KEWcsl^yyNCRUlBYKnYlteWko373*CzvPyw8X7lEwg=YBG##BzsinKnGIujEK z@8SxBZswmz3h3)Q_}t5?oRiD>6guRaD9o7Q^r}VM-_ve^294N;t41K*4iyKO-C*Veqdj3 zJbC>bY>|zZ#?~G&e(~rxE{&02%ce&^JM_fIhb&k6uz4qq&DC#SYWQs5Aqvg;w*5-) z)#D$X$LcMuv*|B4ehClNc0FP@ojlDD5n?#q&*_fSe02BB4`?OPBe`ZMz6QnVfjP&m zoc!qE>OMt}`N`YpH>*w#$JgqQe6H9O&^q?TB->Sb|St>h%0sLE=~U!G4vY3@M$gj?jS7T*!U z{C2)4Ete6o$C|IZi!$ooSA_13KMBI~i92pbt+EUdtG6zp=(>h=G~2)jVDUbfZ@+rq z@8Ll4U7Ac{c$QXJv{HxH56(pqg;ze9%d?(>WuzJ6&zsW@<}YT;9j1b zLNYFkuaN(Wb~osP|C&;IqUYwY3wXm&2cxGxp;P69yZEQbl%lm84NUmsIE1cW-LDv4 zc&M1~(D?F)$P6U%cumv3LgOPhjvoJB?ycP0>EHO~_rLk0C)(GZX#b#l{iylU(2b^} zZ`WUW>dJ*5o_?q6A3y)@^H*2ajOO(w%k`d@F4-u!^V2g*;9f4g^bpEQvh!X_SZ;Q#(V{)qnm z;$^>b)l4xf&{s8IzK?#uz^Je0QnM6Q{bD^lbT#Dbr2t~P({wHSt2T7ycasl!{wJ@z zFE-{I@{IuKO zKm*dd(*(`fU!d{*ruU?NV3M1I`CZ@9=Xb>q=lA6IGx^NEKm$z_EWI~>Ksv_cE|d=H zFDkvt>GB7arRNU?8Uqc1X8hNPx{8vWi-+@v1G|~*rs(%gY7%~UoAY3y^KjW7)R#&u zrQY8wOP%1OtSJA1dsXRKq)*7@W#GQ1SX&iOX!#w1eeds=-vLZP$MQQ6h)r(aW>*|2 zT~W;Ygj{Fo7ZdHlv_akv94h%kd;hSE#(>`B+NzbH4;)dHaP&4MJT2E%`VAbDdj&Ps ziGQ6wEuRb2rCa56erMn~y+d+d`Tp=d4dbmsk5uzlmOp~4@V?7e(Y-95mCG#sLMnND z6`aNUC*+*$T|Rp8SpI1GoScu?I`}E5WUkk?WRH^?q@4Wy-`|<(`J=p)Cdl3EeL~Tu+`ok#S zXX!VuSaNN8-*?@Ut&jK~$Dp#CO=Z~FxJaJJgp&;N5XA_9C@r>6o&j1zG-5C`z?;Np zB0_OG5i`J9Zx}MPgor53gi=91i!$B^i#Y_CCy8v&plC)rAOTGR_#fo}w%7zhkdn(b z<{mB;P2?z?4~MPnB7&}wAeLCE2;9Y?d@HmVC}aS^M{1SwdZoY881W+MFv5t1!Ym_L zOZF>E5>6uWLrOS#&VWz@23Yu$a2Ti;uv<|oZU(KP>d*;v6XeMb2c=-*l8ZPxn8-kg z5sAfwKm_Ya+yw=3t-Kh)pvhM&2ofk%B2Sh=BShhS&)^_ed+?hKa?orvk%)%U9n)>XX|fo?!wrJK zELnpiW)W%#4^I7NNvdZS#xAIgOLX@-xAi~i1~YeJl8OD;lv`vDF*lqu?xZ&GNg0UlxMI;O9|W&KcUE(h-5fDE28C+Ob#m zaaA;7vqB9m!Dzy#q`Y`fK-9v9#maV!O2_4Kh)b{OIY>Rd`J>pZ$gL7@imqUO7)cD2 zB9MpIl?!_?V3lsW3a3_CLNT)##T3C}RXN3PV%fnkRwRn$+n-x7QH6f}`}BAA8_eI~ z>aMec6K40&SuY~oUI9=Ne@L6(qz$P)D6|{$*llg#2bi+LUr;8dtiXa4F;xbp)WGx^ zejRIA2sr*FW%^^<&=ML4m?i~XiZlajJpJe2z-e)T^6U^vEGw>Ivr)SM!7^k^tS&tj zL)u^BzvI{c5Ww-z&(Jk`e$D%I;SSs?*R&v^SnCPVhz{APCqZ5gQ7uIZDYbE`8j(0= zo|zwYIPLRrB{t|C5`Ud~GERNSd_aFD_A}#L$Yrg5DM1qRl^}66q0a)JtP_ zYNMXMP|&j>5ph!xDkwHjox9PD@q>=eQ(#i$iusmV5^N}oibP?L=a-z$zK~M1D2_AB@rWG6vf9-p5%D{*KiYMc%Spbzd?9Eho=F&-&S+z zk?+0u){9pTT|4;9rTXg!4`Z|c_)lu|4bNOM-#Gl(_s+j{{!07$GmdMAhc69WZ#wk$ z&MSw$-wd~rZw}q8LoVoP9DL;M&bKX>&tBT~*|8^nqxt*IR|40L8Q<~2kL9K28wZbE z&VBFVTNkf*uN{5%+Ck%``Y*_T<@0M#KY#7%7uV`fUTV4=y>a-=rQO#Jr>;!A({=Ui zn(^her@wLexl0XS96WXe-%x|=n+gRjx{z`X9#PBiVQGlf&VZ!Lci{b+XWrK!TKzYq}CW`k=l1qjiNcIUM>i$~dEcmDE@coY%7!H0-^!0;={$^(|}lE$_5moh!6{<3q=X&lTKrAAPf6 zdF7{6`+)vN*Esl#hSs0f=o&n_FBBjQzp(l(71;p6Kw2x7&Z2 zVC34t)7KB3;E@fljISR${pq3OHycsbO@x9!{Da1i_ntzT-)nlS>DTsLf5H6W?8h%S z*N^rU_RSW&v)F$6=*a?zs7Ec5d)B>&*fr2+`a$YS_dA_GeE!-KrmOp}TCN@Mg{Rm3 zk6$(`>U-zl52x1;oxT3lv;Sb^ha-i)p^vO*iln0VnQ|5boV0)*f{$XA9=Z8&J<2$zufUSGJQi=TleUfO^?>~-FyMjg|4?g zk2il(=g?m_*gmor=3e{B4yUeeLPs%;5PylKZ@#XtX+D5pLX8wIh;0r${>I347R;yl z;CBZ2ZPCq?saK)XII9RKUnYwuogb*ia}VzLEs0Jb8?W{KT@2@J@p96gNri>fNfyC4&7~q9Rwl?sStbrUqmGUc=yi!@&DrKSJEONHG zq*88WNs_KlaUN?ypd7^HZZ()m`HrGToJm+yb0UT(iq^=zZgLoo`) z-^1%s+lhCbf*?S&d8`JbclOH6I~T5uT^;(sclE`>Df4=xrBG{O?~@-NP4N#k@mDE~ z1QFEY6D7$VLLcCb;eVl;kS;)KVR~s_Px}-N3WU=RnFd4%km412Tv0s_Ud3;t5v&v3 zkvL)bc(JRY2${v(Mi>ztO7I$-N!pM?{BDLNDY_E0%(*9i1(czePKGtU5d6J^p5V}v z)k8FbggWuOL;)_z+1rg*+J!Gb%tatxkuIRT(yK2)f1*S1d61iYVB<7OCzgW)IFp|R zTbJxSm?4M!+7wj{>D55(_;l!NlTWi7LY~vG4MCNF^;9am2}qz!MVKZP?Zu^3N?3qd zGYAL7e_|ArFN)4#Y)-LtcmX-cg>u0XrGmIMs+wBQ;yuZo;G>wg=v`=aGVMriPr|#5 zUU&kIAv_J+w!kZh=wb92+IBk4GP8VKF@`r!E>c-7 z(HbB(NQF_^!c>?ZVR>gD0t1C3SA<+hp=*iV!;8c(Fa$_j2~F@}Y>$Uv$-zcf9$tVe zk%7y@n}g015WkeamULid( zres?rhLXON6gZB~@kvE~Tucv!^(N6?{PhV6zH~;E`iV(-tJMng3ABx~HS&wa8;7V1 zrN0N(xUyQy8do_Hl^Tbch>b4AF+(x@P+t{COKD8uPoi?#DV4|jmgQp84}`&N(y3)X z;s}7C_+6lO@$X@Sspu@Eg-{EkDB|qo#!mhclrmLDO4xxRO8kAyNe5_7n!s#i2xH_wd`bKL}n~xZ-^$yZ(4j;b?E+NZ$v+!t7EZ`z@@Nh5>#6P4;;R(lmJV?1IbL z%i${ng_p+*uLcT<-1^?-Lj5wI$I!y!A5bix$Nni2W$KBF&^q$mmD;DArP9T6){&L0DoAk{&c0-{}n?;v9!5NjccCEWIRHsHMvm zV07&~;*}$#^aapmQi-I(QBenfoA?K&x>Wu^rO+O)*!l2!9{XOHPYT5Yyc9m*s=w0* z_W3DCq^*n$53FIzaY5a%1q7xGK`?_c6+=Nne9mAg9-+YjPmQQd>5*eDXKw)JSV%-5 zJb~DR-Vn?L0X|n2XFA2hRo9`KjW!#i?sR}cyd_Mpe0nUtzM_HR$&|g_E$oGt2Jg+r zGd`NhFCgFJMudEA{T+Oi@77ft+8DX|ZY|e$WYJ?t>5&b0@78TJDn69bNXH3T8agV+ zyjtpG@eeWRwb7vWbEp;zaYIf0fy>4pq}O*n_5SXw&;McFddt8~ea*CfLI2kn=KM6w zP3S%PU)%Zi{sae4tO&K_e{aRgcIM^x!8#3W+NWU3r#QOh}Tk>JYNVW zk=Lg8vJr2RO01jYBVJH1{!eI-HrTPXprn7ItqirnjuTeZR)$~o!A^dO@7G}WCdRGX z4tBf|;{S%RPuh6qA>Y3df?C45bz_9+aH+jLZszv!=J^YZfz3fY50FI(%_31P6b@@8zOiN!1 zq)>Z(|1EYn%>h3J(EE#VwZ{dY1YKd%L1HJ)NV+^Fii>GSA{+6ZnUoo96Nzu zQKBIUR091%@4%2uq_~<>hB#0*EmkY9XmCfDGDI!0(N34wZh)4`qJjrzE72uv|)L59J;Qb1iWc~EYQ zG2#_uy>zx%D3d+K6JpF4mE;awi?S#iK&^5I(fxCOKmkKgL;aKAy#%pkjwlz7z&H^XlB5tP>FE{Q%DDo@P~quFEd)_e@w5?^ z7iy>cImehv3iL;*xwuG_ZW28QXhF}Ixon^ght?K_^F>5t-bhKQmUl1_9jr&C0?%+k z4tr9PB#BErsH9@cB~g=fub{74$;{;qvXR7(t)pXvSlmt}*+!NYW^3KekeP$ViPD6AAE;m<^LC)r`Rdy`Z_CD~w=D%IChmAp-y)Fgd3nVjQPJJZ?4 zlRtcvRF}&-2wL7Wx-sK)_N?TWjatn{ zD0)1pl^ApeB}q3UiPZ%$1!H>tr1H$nq+dBhtvKIG2kB9j$!AzV?2@zsDMtVUZ6p}M zIDwZ>;+W4FpbA2RCtk)$r(=B5PK{-w5f?aeU2p!%sLPbP0bf0+LmvA&Z%8aGl2BMJ zfvXU{p-pg(=1)V%oOJ@+laaADYQcwV4JTkd3oTcsO@Z^6+!FM5!b?;5BcT2O8d{TXU-{54Rm8!N08ixrX$+I~2aUNP`szn3^f` z>qQ5=kQ{xCUrwAdb<)4Y>Xxg!l9H?Vd!)Lm%*5P*v7A&u*(r9Eou^accfiBq{BTiX z#fm0j7OM_QwoH!2jH@d2Ybv^lmg2OB}J!a*CNLp)!YGgMbekj}&v*T=Q6F%wv5qZ+0?= zFyil$u~jXp-6vRHT0j+9kC5@2R$ocgrUn>~q*Xkd;-q5_h|IEh?XRaGg^4&ti zapb#N`=Pk*@~uC)P%!v$;zq+`g@)D}jfdBdJo`R;1$5ka`q}k1TVZ;3eg4Aw(_-PN z)LPS%U*KTZP~nyH>;BC8)7ipPIXd{{GwWyMgHL7)hFqckvCnFc|G;;p?&`@8Me=s` z%KW+jNocO{*z#KKa-sG(*sfn2C_LI;c%|u?RPOqPO`kkKj z7rceJ^FM8@Ynn%05APu z$yZJOU>05~@&^}5Oj7Yz$^{EJN#W_@LF82;e(9PLvVISDNPpttK;6Ydup%W<3;R>& z3Fu&rdoZpK>@2fAJxDEu-D)#*_znhkTelOIl>fe)k_9AM?A1?V?%{SuC z8*%4NIEn$0|G@_Ju!K4HfA{ay)+jA%L%Mujz8R%7erH#{5vWt@1=tZbDfe1;`?@h; zv1y>Vf**q&|Lx(Ll#4GZr^74Upx>KINER3=z^V3gG>NVl;GJj55Q6qe8Vdyhi`sIi z&}!&7N5*D^1K8@`SD8c7g(+s>v#z0-59@T+WT_AaCdkB&9W7h+(y{rHD^zJ+s(wdUi!%*^y$_40b z$yD@`D!E6MG+AIb;{#rl#$C45L{s^aQ@VM!Xrl#Nj_b^EH#hQyMU5r2^3=q{;Go4q zYgM$AR%Ylpwt6M+tA>+M1oAJP z1FaP-4GBr3{aDzQEj*!y29-9cL+RavDxMGxDw3&N-n{d9UISYM0+!)jxw@MF*A|S;jh)tcs;Mq6)`Q?VhPh2JEF8V?OxSWMdb7 zf^@cY)2uhP;~wd@O823-x$2FsKDCqzkUK*4K&koEXwX5Hb8(KGarWaB#!&P)l#z2(dvji%WB?M42wp(8j2uX-1@TTbn8a zsV9d-ZI>tC2JFyEk+LQJr^hTo!+R2R6M_(l=;hrVZ0*J|d1$nkw0-r*D=Pe!O<7iP!UO zqBOV%SY&6pYLRD4#f}% zJoAR*`u;gC{@gBfsv$uNJ^sL`7)%daQD31^Y}vh-2TP zchF&vevbKZe?@<(@w2n-mm1gWpS|AJd3Eo*2R|IAy=Si1H(qYMbaAcz(KmP8d<+f$ zDg2HdxZHX9>9;*sdp@)kCT9whfsg#_jnP7Fw6M6u6O7Q<*lB@cG(HS6^7kLY1Cjsm zx^Z^n*O5@Fod=FYSUi+p)dln=HUWD;^Vrtr_1MRj0OUp>*kWHZuBEBfT^C$#|bjK-_zyMFu zhgCdbWqyw243MrtvZaJ>>g%iAWSOTyx=ZR(T0vv&$kxKXWRg%Bo6z967V|NnJ z+On0FG|(!B|MCzXtnX9{Jwnap1AR;GOt{sMdy#N6gcYdcY!0*U8AJF*dX>+Hfu$6c zs0&b_6=grdcC+G7p7t1Wf1nV9)wl`9P`6WYLk6Iy7Lq-k;Swk{nDS-P2^L#pp1+vS zF?3BRTY6Dh-H>Dk2v0!;0Lv7p+Dj+tu`4=PU04;U%rBLfvDC*>VSG*4f)`ZaW&i-U zMFRlk7ojeJy`oIqMtBh{gYrqr6i(@Z5~`Dq($@hwE`1g95}`O2yvXgwlvS(Cs&a?i zk`NZ&3o(#4R4q^^CoRZ{C!^5pWL8HDBnYipHhed6n6epeRXaiifeGW`Rix)$MP*r) z$(s>DfJlz9U^{N@AayAKlTtR=GF$iftWaVT-L(4@Emc2;f@zMHM zqUcUDVvfCqsq_lQDp(+TSmHTg1)zGr;aMns0Lp<1fuK~<909!|h~zJXjW|@~l2SCO zZY+C+7#>IF+skj0D#GXMMfNDZTJ^0cM-V(0B_&hN*0815ID&4{@&U`Rl)5{8lhA49l$%2iiMUmu?(ur1dZ zP>!i;U?@Mr2LKAU)GhQ7OULrrY14Bsu>(RcUW<&dKFeSW%X{R4dMm=z@L|_1jsvaGt}O~GxPae zED(ZTqs`L7x)vx;Y{_SXj{zO zwm_Zax2UiN;PBQ%yzX09%W7nG-(9sVq)WvLmhFnwvO9_99Cq94V z)Xh4|{CUSqQo?nfCw{!M=E-w6chN~CyZejDmo2(tdO$Z=+8NWiOFLfOWNBw!7cA{u z(5;kqZ2D1sv9xLZytIQ`se4_|rTH*_F8<+RalCs4i88!<^q%l8A>G{!={7Q?+r%(# zGsD4q80y_J-VGedACge-G2d?z>Q#==d{kkCjWjAfSlCNTTUt8+gq^|4zSZ!6aWLW9 zd4lalfP^Eo=B5({c0v|M6hVJW%SrR-s9}I0F&y2VeD>V4hG$Q_kYAS zK;J)#o;Ye^8{+j-CV0OT8 zBwiks64UcM0qku!LkRgbg5jOL#pH|MU?`d$w(0Dpoe`b0v@@aely=U;V`lOCgf3Uw zvFL{x@@Az?>d#9%1jApGV0h6K8NE@2;lFctFq{O=I~mZ1@;B1;O!(ZugwL|rnMBY{ zOhDbtfce(M&JZ|5>xD`8XfUqC0H6Aq0teF zb+ek`s6vCNrQe#Up7~k+O4?;8o^Dd5b)bprlki(nlDpEJM1K!jRIjlEThbd)!+N3y z?~hQvVg-zM#KSd(lf@p_CWK7W*S2XN%`XU|EA zj!r2tFvSy~EFOOblml{+5`mc*2c90%jh1#MxUv90Gpm~`oq1j7FYSbM;nI%C)d=`C zk{SWuk<TVA?z%r*G8}?V_IDWg5 z<2ZK5ss^M~4~J>k%BuCGY=6(H^<32;fY8j6!ohLh0`VHkF;1;;zzxS_Q)X^UR#Y?P zaS@flSIGSDP7R<6vmlRqXv~9Uda1%qjKHci^FDV>6%~g2OMyshE+}){p<%)UHCG4j z--7jong!W5+k`43o|=3xY%}|?74rny2JTi?0(W7bQ00Er1`1oL`;Hk1sb+aW^xS4v z3X&j~gt%MLmoVJYN};5*uuiHI6%+*H2bj^qop1q_(4TzIy(`%(90VEh?vY9!f>98x z0j$P~R@`d?ZtDnu=}r)AG^fPB0O|1GfOPn>fs+nlS$9HdxxjQMUYB(zkl?x#uv{pb zFj&3ZPT|wn1St_sN{MuaCw{DlH$oWUGn4~+^OQiTmsF1N7)yi=zO4+F^n_*EhHs=@_m zECcris<8~RBZ{wv^Gn6ot+5P0Q&7wFGjAX$sfPM2f|i> z{@0OY;G@$+#W0BfFOa+VZ?U;8-rp%<{eO?l{|Z=N{C9Ne3D6Y&Vpulp6m125sZx%9 zXj3^lNy=-Pqq;igsBR~-13+Li9It0a`LeCRUCYs#Te`!(9DL;8Mqa)p1AXd?+X>25 zO4;gF{Jl#Gs{>Q@(pcupzw&az(hc2>n2`K?JydSf7Rc8SA9CjTL|oL}c#*-CR(Z4~ z$A3jXHe5s@`Tv7L0sPzh;iPK`dIZcHATN=rY2X^>4~?rBlzYT2#`1E+ljJbH+6>ER>rEulEG>-^}6M`=qUEx`|Ql}axXjbQ%)%iVzHc$he`zuu4 z8j?_B5P445oV_ve-!_X=TTq^)V#h}sHPDf0v~3oqR&gfEA(p~3+ZJlRV^ONI-pxP` zKfYBd>SjXJO+}SVU7JZW&y$z8R@!W)Jbf#H>2WeMKfnd16^`VXOqP{ilA5w=@1(L6 zAs+V9m2E`k)UB4lf%p@kqvPEWiT=;X3O(#8E)vx@1(`WH{eIFrieP9+tWCk3oFxKb zDG`nF#HWyO?x0hjLc+-tle1DH5ao%_Pqrhp8uEPJ53g=4VH=bZBQP*$M#9wuVU63bgmnj99HctHHgmi|y`xgL~qS z0kYn`1S!hjYbRu>4{%HP=VO?V5IF5h`EwNTti42LVEb(2x$n( zaKGY+X#z1#Af_Rt?FeYCAtZt=GMv=}V$>VkZC|Jf#NuV@46Kj8;sP;-ki@?NFuAqJ zik9!WQwn^CI8qr{k24gfBBgcbP1`_^CD-vpg9!=1L2=*+dcrvmqL{o;A zs1Qt>M8uw^u-J*DX(53C7cr(D*TPPoF|f0U71o0D2zAUeup9_q1wR+(NW{&Pq+ts` zm67!66np~3q2vL7l$0l-33`~1GS*k+>Hs8J+PWc=24iSZslgau+E-d?Yl0q4&_jZr z+rt>WYef7Tp{$t24XZ2qk$L=#4tlFH8fJY7|~=gnk+_>#b~ma(z=`R+gnrx z(~OhKOocRUHL}CDM+HX6F#ON0r@jV}Cho7c+Ezf!lK3A1V*b_kf*6WPu(^)~9;<+> zlu;zcdojCteVZgPR$tsNL^U9z0hxyn$f#H3niB#+gxYyzNl=(bs6ojc`dz=J^4@?i zni9V5{xj~`?nZN_(0ZSo)XO}+W?jRfgtXP1Dcq&!IL*2yAx2gc@w6|B7)T<*0Y(yW zrQaB}hlVN+honrJGX+RgR^hH){F5En{3dO_TZ_%#qYZhV-IUV$sMuVjP&c>> zZ_y8(uek^Ad_Y4%4@PB6LqP%ZfVgF6b4pK0nwPmV&~R(zI&(->V5PEHUzCvtUMd5X zl_G_rf|CY}G+?Cc0nP0|HFw%u@bz{V-n7+YoCb`(O>pQMA)(s?Bk?~$Msq6!vr$V6 zcd-V+lfLnFg)pye6NIrZYY>LC#%Tqj)P}C2Fs(tDKozX(Pec=W=*!KkEG&gBVsKU}3UeWLhy$D|mCjhs@ zE8?$_%!f7?zOHcP)op?+vqDM}xM*laQ#;F~1VcChL+6x%wq*ZokRnDZw6xS>oWJen zCAUN?BsbKw&S>700!%^-pn(4n5H1@;UHaY6K@aVBmMvhdEOfQ@R9R7G1`GjCA@g;8{#8Z#;KF|k@nxwS%N zi=EJb#`akKXh1_Ab&9_l(9nPey$lZr(9k;*VjXbCwe7_jWN^Q^IX)SwG~~C(9DloX zxQ2viQbQUV(s=lghT6(Jl@$Duhg6eFEvKSm|2DL(42>9&cmRIRmB*;^>(2yS%6Dsk-xph z`2U`a@o7`ri$rx}{9Vu-gXv7omw$xK_iFM@-_hrr;&u6E{5HpR`I?Id(y*`Le}NN` znt(2#2hQ1%M!EctVIo3Cb$K1OJM(mYSAGY!_31h}*L$Vh4S7OJyBShy%#-7?rhEgo z&H3Hf?#VY|yElIT+kN?FZ1?B)V0$3FQ!Wd82Lp$&JsdcK?a};RY>(ylVS7Bk|5tUt zr1R9YKH|FwTOalrdudR#WazUtgncPkm4XlThkfx7iv$2=nH=H+7;*`5DfQ%&?2_3; zMwI=~7B3NnWYp)!HMvMS4B9l#4S~63KZagkniWrMs(Zx~i6x`L;H1M~6BaU|5EOCf z2Th13LJ0$YBk6OjE=Sz3Le(*<6=x}=0S<7RlemETz{&cy2TII34%JaE!cOq|z%< zsI8tecv#{&j0wJI#BX@kASPmvzAPl70eP6o!~=pDjl@wf>Go~A*EJ1dI^xMp8bYst zyn;^gkzOG-OC&4Z7pd`amDQmp5K{=c6ie%*N{LXBPZNmA(>H!gg2DUIEou~qBW$&y zK}`6@NVD-gZ%8aG!hacmf4PehH8#}zy=ng5;(Sdl764g9cxI~+*C@3;POATein>ml zMJo9jKrE5KST%2Ot+nEBQO@JQdEz8;ZtQn^2Ip;d%jDpoePVvpHRx(R$lLkHQ9YW5R0o z+HJepz7mxKpJv!fH%%^|@XiFz@l2Aj!B$|YVp*ZiuC{H7#C#!PJ{XA#v>YeqnH@36 zM+^}{*McY*KpyyHE`a4x)TA!uPK)952rnm~2%#2r`nTQLmW%Pn{L1rQ4 zBX$IJ_+p6+s0`eoC32EmrxnQ*Hi z_aX=>(dSPC+MUgT&p%@bzbGbhsk323!c^S9x&X!6kmuv~sCJzwyEbMIlVuW6-8qB7 zL2ga}H-SBUDdyh9?(h!TCpg0-#0)-s2FzC@}MjD^C>L2BAm#A9}s1;+%Lm_Z};QnsznSNjcmAr`rmgZN4^n?JK zc||$mBvoi$^IxL*FVXy$2oM)R{If*N4WQ6D!*n>}50kt{q{XGmznEgSSBL1@qIh1D zM}Ljw(FDC2%>NOk7}jSnpAiTQlUD=l45!~(gj~g8{JVNi5gZ0Z@a_>#1$=VL2Hd)C z*1T5Y4c3WJsPN8M-hdRrTX|Y3|K+?u6PKb|nCw>E11K3IdY}m`#Tzw0UDVYy9r#I2 zZPTRw`%5?3?zSZT+jn=0+h z>0T-A1aZ7H-2a7|Ja zQlP&O5*K#T4EX)9>_1PD*!?_@m?dJ4(NvJg!fTB1TQZ4$xBB63YS zku)tNpjQ~~G3@cBf40`r(w4E~e6LBEIG<)cH zKVX*4#LgwjzXBJksTKtbd_ObVh$dnAKsrlc%V!^0P7HB#GBqEoV zl$wqJ*7#~Q15HPOqJYujvrHdD(-GiSL5y(#>I#rTL<~Cih}*Ct<2JH@Q7pYR4F0pX zRnT+<$UPTXgGsc2QtyiENGRS|HJ-1+8fiKL8V29GLKpZ4Zl5TrYbxG0HB)e(sR<2( z-z5fLNQf{ggB@rf9p;oMOOnaKTAx1ZIl6y%2osT#na@51MeeIW;k&Co(u;FyWh@m zfDHKW&~N~z{4nchM*Jsyze6aWzr|cMy1-WK^Ry_J-e|Rjx^kdWW!FprZbudHj+Q|5 z!)^+op2@a#64WdWG)X>lJfg7(jAZ#Lc|1_#Vp7GGjzW&L?HK#vr!BUZMNsRu0C!fb zV>J^4&BQ=6G5A@S7-+r^qES*fCWkRl5F(Y~p@+-&!TskF?!}nlPsqNY+@OGI4775K zhK)m(Nw3%CocGSU?ei0M^QhM`W`FnSJ()PL_TJjYqDr$;gvM1Q9Y4Sg9rlnlT{;qz zwHJ;6_8R-3^KhJ-Iux}Rf|992Q2$Bq2(cSM{o1RGJRz|gLD|#+32y2T)JvugNN`gJ zB)F*q65P}Q32y2TESWm6q-^TIc4Sir?8v4LEXhqBSW-51U^}v@1KW{J9oUX+>cDmc zU6h$Ru$`Rl+ohdh{RA_0U}w(j1!;#=8G@4C!-JqYl&TEmtFVdrDr{!H3isrR2-(Y2 z9PWkc*tJ*buMpBmpMklw_C*a$`4_Y-{~#sb2oAU`j9>`jb_z87aPtI`TN<1$FAU2t zGC|LfI~HXA2^G1DZVlP>vcm;t3Qi6fXh?%b;$kN5Czn?!8$J)?iTK%tXu`i#GNDKj zn~)+m3MHcp)DnZ*wl@qXLS#D5%1b90EyLU*#>jmkwWX{;_$ACFrJH~mI$eGmSNo!= z1Y}*LkBK&=5^$bo6JiO2TTFyRUo3S7$H;Bs5|xPjBo<4Gi6pG+P_gDn;trfZXoebF zc19twk@r`GqOnIBd!(^PUrm3R8ha!wpL})PWR|V5HTFo-_|rnkam~m3VHcw*pOk%b zw6iq>5RE;0*x93P3MIEiU6cwnl)EEpl>Cu+f}Ca^1`%_6`livAiN#hpIv0=Ok_d4( z`#E>BENiAL>$sbWW!)#e6GYi8>(=}ictYZCmUWVw3M4ppv#gW28zeY)g9O)1L4s?h zATggH6_sW3HfcCRo+((ev$vSE=!Tic3U>Te-BM{MrCXMF>fvvbyi6cdea+)f6q8T4 z6q9Gp7L&a%6_XC#IOA;Cg|F%YrJaN>C+!etv&{WkioZ=y^(C-kf756UC&*EQ4bnFM zDIAgiidri}=*BXwl}B!)wL&f~>zIqnoy^7MF6P{_o&}j`VD>1x8GX~p=$j@+-!wD& zW)E|2xtBS*+{av5?q`lJ4=_iU2brVGL(I|TVRCT^cb7Z>#Zjb>?Cmb@J%&9*Ea!juQwWRksPA_VNi>th?lNA85lIv!0;CgMWPmt=k+PpX znPLbbgJA%4Q%dH#(>^f-ajC3;%=jS~Eh8}4ZS-~cgmI@@JNzm#)h<&qPDdhTQXT zaUsm3??Asjr_{^#LLE?QJL6e4y9COYiKtTLDIl*doMdERy;;2f- z!{G@k?qstIOLszjL~c6OrXgJYNA`wV>R@*K-o2#q$9ac^DHW5-9Eq^f?!?>aW<;0N ztUI90lx-pnhf+^bS^Nf>=EGLJr}F9*{tma~LzQ2(9iCM0yd-}6YMzRhL?1bsxFhO? z()$7PcL2w)81};~m<0=I!3be#I8nUBo0YBB<5R10@mAc6Lf6(y;60&!1$YVf?&Vb~ zXNz`RJonee<7?&38Q^uFz58d_@YIT3+_-X3tYU`63ZYS!d^bY~Lh+v1r+4?3T~fPf zL@t|lc53Ve$RO`KXT9K;6L9Ith4cgy~4WuJkzLQ-m8_}{;+9p@jj?rY^XK3cs_hm?36+BzXrn}dfy=YqnMM5 z@p`iYRLh#AN|%e*^e}03N$**4(7qoOR273OR;@hvqn{tF6oo2e)BTo=!yZHzsaZN+ zD~>a9@%@Q%!|TA@-iB{betxv9K5J;4LydG%ZUv| zwVM^B#v1X&Jj=Y`6U!b1rb)H}jbmP<+Ht-(7T!TaHY;8=iPG0Y{a@AyyrHAgarwSe zFbIUBv6kgCE3Gn9!1}+)_9(S)6kW1e1tkulY+c0VREItdaSp1w)e@2@xXfpt^ zS^O1B{RQ21h05&*xFYowHu9ss)vu)OYLzHv{>6)rL1OZcNMiDfXbc>CFX(Ib9D-x- zJz@P18zDBp?v7MOf^-F>rHtP3y~V z46N5aeZBR0`hDj5W2fl%MDh3JS=xW%`V*(=_tEP{mcQk?e7vQfjz4|<(I@Hm_-Bp# z-x%XQ#gB8*0o&sJFILMF2zG#YZ$W&g zGoXqvA#+&-X|B>l$QyAE)ECkE#GamQXE+6!GqJcKCivnhLwiy7!az6{+*pS4xfFyK zNPVV4OG><$Wij!2fzu}_)Oo77CXd7e81-2t@J5>vMbgVftN4}t>%>YiB}9Wf3>qSS zM-XMa)Lf>HOKdu7lu0+m6so>=T4DnURrP9GMdqLq_^9)2S%`4XFz6VdKvw~S+c`*G z6kXvV*tvIQb^e`>Hl+e=!6hfYR(T!|XCa-LG6Y-cRz%W*#@&lG+ zpAwFfg)LMZ)u8A{b+vF%l}4wl$U&Y{Nke+lM3fn7AP_Nmg z`9>i~;72fQM`?<{l(4RC(8{Y@g0IgnS{ zM@w^#%191Vl7pI^v)&08_iRIgN=B`BAQB|C|tH#Jt`1s1DaA}|Oa0l2|%R#8f(Z2WuxVQuT;Nm(s7YFTS zH5W(P%OIcDUh)0Rxwx+Y{q|@p(Pqc4muR!1#xEWM>GYD$@0b4tHs7nsLpge>1yAm1 z8Xe64@-^wAR`7e$vG?`wNu^xW=k=Z%C)w;v?eH6|H zDl3mVLwdh_2xmcOum<6~m=8#Lf`L3?=)kd962wwG%~=%rv&FoG7~y2F&IH`7+!il% z{|xK}J0nSUz>&z&u=xoNW-;86t_=}PNuM0_NSZ8y5fSoCwg4oNs}wGW=0U1cK-8Qv zxFji}@OHubB_E3U`jOqwJZs>5LY(I}_MF@_ez#{O2|aG#2h}mesE@!BzN{yho^uXL z#fFoK_(=@^X^1Y#R330mG4k^R>gpu+3qM@DOW8tc22@NI?1S~l(_yk{$0D2*!&DS_InyoTt( zO)iny!17D}fA-!5KCYv>AKzWAw0hZkTe2ltPur3#Tejt={FH6^ZTbC5Vk@$*?Rf31 zk}KJcox70*fk;6=qNG3+NI{`#W5^avOR3XRF#PzJl=7o{B_+EEm7hy#X@PKZPa?L?Zf49mC9B!qx8*4L?@A~5uGj5@bt_;k&2r^Jz(HBdk7nLR#ZS#bHz z(L-lP4xJmF;qA@1lj+DT47z9B$#A5XjaDunPFp@+IDd3Ob8yB+d`&gJ{wxEu+C zhwdAlalAL~Kp)`fN!A>Si?w5y=JZqRMik>=p_$@c_|Bjo z5O0q-{Vsn}nx*fs_7Po#lRan5oGhI3BTY0mr5CaBK(s=IPI-#e#u z6>z_jsyTQKa5{XMUFOj)(O(24OD%GBk;uay4ns}Gl9KBxT7utYiJ4>*Gl|7a!k(QZ zYH3xDt|AVx+MzD;CtIkVZlO9&b7;vgQ*VO@bWgL;ogV#7P=3szIQ_|wCHJ2++{@0( zjz^M?IW9YEGuwN9dq?L7Pq+Q%54(O^fim{J#F_cpjD-LFM&VXt81|x4t2CIYSfO{Q zHE2y^t`6VTrn))^bP8@-Hq7hj;zH$O`-KH;2wu2wArANHf^cHkJo+F~VUQxn-)0QO>idx!bv|V& znW%e6{e22;r=MEN?OBRh314lBT7mJ1Ng3)eh3fbj%Y=>Jxh`WLK&MJlcPD_6)Pctk zJed4KKM#}O(F#sN@R;RDEe(3AgEeb!l?>PH4wughrj~|1C8Om_hdoQjv#UqvHU+a* z2UAy%SFa4ZS6)R(*@M@Qk7leM&&mzv)r@4-Uf(yIwJ=<| z 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

?XuLh=-!YO*dqYyOB3_W5vijPpVYwZgIf8)j95b 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�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%0A)F)k@*XI|0$I` zazT{K)6S1y2T>4-T%JfAVRD{(JjN7o`=h1! z-}{$e%eTB_36F8WvFgwZ%l0)G9f{cBbX!{) zFdWX^t-8Da&x5(j>n9~Cv45h zZ)t7QlO}Oa2@gtZ_|9IgCVf^@|D=KW!29UJV@s~aguJ>f<e9!*0aqM3C zVdD`!OB;OBIQGznTRiw0maEyus}pCRn(OftzKWi|(s>k*S^|EfMooEMQ$_GWE30ij z#JMU<-aPcZq$@NFRO0Q0vgFj?a+U@MrO9=%Kavs zE6=hOc(wAZruNSGp)Xg{^N#WE{)4()-_(!XkLn)pjue+43xeN$8i0bvP^u1Gl_v+h?_nYor|6bpZ${%w6q#kMn zH{_m$a=fwwfS;Os0TQOE{V;VjcJKPbiCmN7w)$CP>sNN}1n+Y0_7Vs#(C(gIymu$t zoy5C#&$@f?-f*@%f_H7fF<=34-;LtziR_i@KaxI-WT*6amx0J6%XZ6u8pTyNfZ0GE z3f{qk<9C-IIC7m5 zykiz%9XjU9ZyP?Mm9=->?K)E8LM333ZuLTrAE$r`f#(HQQ00VzpV#<@19F{ z!|z>qkie~Wd~++ukK)%bd^iTxALP+b%m7>iXE!N9qN)&xq~oj)S~B*dAy9@T+`XE+ zzLpC`AXBuQz{*im7Euu=7zqOZ>*aoQc0GW$6RT(&r6kc#S)r+bouT4J1?0PQvjVT| zeg?wh;LM4Kw{q>8+Xe&>w2ae7AA}1E(0n*`bQuta8l|@vo^|%Vec|0oe8`*a_vHei zY+wWL*gWf^AL$?Hak&k5Af~W#LN^(Nya#2dVpSd)$W0+Q+k&95P=EI}y401Rfb2SU zDA1D^%4jX9I($rt8?6YGqtSnR0S3E1I!@PTdkuKc;#qGWeu@8J8=o~pX(tE(Nc9n2 z)~i9JdbCJlK&!RmFpUq1@fkhtxP`B6TS8r|}(Y z)-swkJh+Fa53-uqAgekrNzNR~n!BnvzN*SxRpDwEzT(MV_2R30KwS&eK?Gdltry4i z`Ld4Uf*U#i!GA)xr3@kJpdApEQ#@$r10@7L0_7oewnfn+^>J2skos`F=!D~|IOFi~ z5p|ZM!P(m9^%vP(ymAO`%9eJ#osC1P?MANo=55XMh6`2I&pWHDsy}Kjt8aTl{mw*g z=z4Z&D%Uf8);W+H6lVvoXFDffum7-9c&GkZUCSHS&pLAmZEKzYc_ z^+qcy;$P+EA8u z<+keVBJHp%cd_R?hO@fXHzrT0zz@#6k!9S(2XEm6&I}d)E-X$0t| zCyhfVw1NBOI7gjjX?||R4eqSYlk)*E(MHy{iC+oh%t(d?e*+)p^UY^j3qPknmg0+^ zjMkG?dvpE(z8cN?G5pFl&P-%z@Hg;Rb=?F9zb`uy9bL&#*{H(S_B%DtP|M%x%J*EZ zYZ8r#>U%nT!IA4;#=CC3-tb{p&z%NX=2dmPBL&#JZ0`)-BRT6GIto4rK3d0Z0X&LU z4pNvr(OpbnkM+(|&U*XbR=%seH~z3b$58(K!s8wMW-zx9%57kHEDZ%@`B8kc{07p? z-kWIaqHH1s?%kxo%+M2tV@g#RhJtob4#097#yL}u;<>- z(%Wggy7#QL=Nl?$YhE1(-lig59KKVJq|zz6QxBs=LG_k${qmo>AJ@YQCa3h`mwab~ zj3d`W%A@w&AQH14joj)rd>{zZ#3cr38%zhi%(tiT%Fe&K*aNf8+gI;2e$c~t^CHfl zgXr=|4RPl5qvpp$IR+YAaLXDV+0K~~_}~sckjzvkK{0`WOM^$#*}jqY#_;QlSpi@L zn$BRv95845EO@W=tdDuL`(XFcUdFxw%Rms-JOxI|va%(R;;&&IAcWWlLaeHU!4<|% zSV;F|dWLbn?6EJ`VFr{mLS(;gF0X=x2HYaFFQv}9M0Xm_+PgD7ydNz5WFupDzu)e8 zz3y4p)k3o5Cu_Jnkcp+BQ=~9&LQNeS%AGnwYXDI0?)C3Z}k1n7M{;@4w%F0Q!d14k#%p2DDp( zr5lh~p|}x2X?_6g_fj&|y&qntgC>9;wf4PZd)tw1xpG^3abppdiUl% z(+>halL448?hd}+397o4iGGsL&2v5pp_VoG!+Zh)ZTZsv2c3Pd*PqpN=4!e>=%k~= z_BSqn(0Tdw`oHR6!PwW*bKJtnv@o(QOqj+ll+`wTrTr}crF*;gZo_xh@b+sDMjmx$ z7MI>{vgI7NvJMwsy>e3BdQ#ncQr-EE{B7lt9`6xkss$fZH@0u}zV_ZoMr6(S zFlhd6IRU{YB$lxPC6Y*ul7jNqe4{SYC(BmL;Uq^B{@_-YCd(+o+3E-+yjgopqi1OJ zcL$FLMl%DW#{=TbfcQs)$Jf=F>+0j{i<#@7xz=NoCu8y)o7OU>wOnxHI2g|a<5}7^ z)RKfL9Cij+B0!(i*wFR{Wd-frfEojrR2Aw9*y$@=XvT?D#L(G(g{BJn=>|nx1&PZP zT@@tO=&A@N2Qx#GZ1pVSp7PC$Z(jUnKi= zo2&Mrd==kpc(WnXFUVF4;qq6 z+6UuE52SZIYiWNIEjJzs;UVVz7Tay@vzD%R6z{ULy;tx1VR>X)%G~q;j}gEp1jeta zDQ8u+0M7N0@e|eiRr<54nlCQhx$zF;Z6-YS^j?I8V^1{MtD|3eZ%~g`0mENg$Emt)cE2ue$$5s&=Mq`pU)Kl=m=+* z2!O^u8ZL<~0*-;TfC)*XfXeX~+s08L4RF!aI zskEb=7qB8At#+*vCbgO%Y$=yQmGI_yt1^nNrz>Ys7ip>tRlkNc`y!lB+Kp)2W~#ca z12o#kraKnEa;#(I>X;|h4R6Wsc77-MgALreoLLP+QAPetOLxTjLG=&QIZra{NkMb8a8JYfMN4r~P6Xng*l2#-H;rVPMzT$U%tZmT18*G6R5OmNuVt#Q{orD*TKvJq`rkGy zU|t?qwr48a-^7kAu*+3)pwipQTxG{eUDIvdZ+;o6E2EA7=CpC_H^1yGYvlhXTd#;Q z;LXmz8mA^3YX5aVHQ7RaJlK-#yYP6dE!j!^SzQ$z|L0D$g%>l$AAB*$gGKooUj&N+ z>@aw5oc|&7PxOO$?eJ|Q|MQjKKZlS2pd9>&j<8ywSBF}Xzk*Q?FNFUqw2n%c?Y9+* zm+a#0yz_Viw;D=fS+addv$nizU(N@SoC+WP91A`pxM2_zGAeqD0;p>be)gyks z@*;@N{Vvj}iJ)&zSB2PQzT)0@9-9}NgqET&Dz5ya%SJA!5H&_A^Gf-OQg|fd3Wf?Ci zd+y}qV|;4aH7Gkol-f2=UM9ISa{z9!9D9L

=zSzAK+vEALZusR%C65tou2 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 z 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�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%0A$YCIc#Rs+{) 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 kkfj^!7J08Rh$+`}IX?ThxoY2+inLlo*Tn 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�FF%2ude5s9*y=(5Tpe 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 xsk#M;$=QkNsURhATlC}OGxIV_;^XxSDsOSvA zXXNLm>ZhfqBg`k0)AHibT=UV7{oyaOhAqU5EshO5RHVsxi&5(qM|^y4VrE`^yq_j>6n8*naAs~nPO5vTCrBnQF*h|n{uT>J z#Y%=EHlQvr@hjfhDkiizwWt_O#yA!fxFnV&#`xqXC+5Ti6y>KECFT~#1XPw}?m%-GapA?8Nj`kP^6s`Y@O16;$5hu*uC&Da}c>1G%)A14wW%a4>N( Hvit`CRX#@& literal 0 HcmV?d00001 diff --git a/__pycache__/device_conversion.cpython-310.pyc b/__pycache__/device_conversion.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0d5dd2d7c3353bfd49c02886b47435172e41691a GIT binary patch literal 2516 zcma)7&2Jk;6rb5$+Z#7doW^a^q%Ed=6qhtko2CIZX&gccQK=QBNe)J^axzn9R%hUbfKdrCK=jQvKFosWr04itOgP_CKA_-LPE5N*6Xa$B9fvFW2@LJ+A$_YO6~Tnl1*5^Bfx* z56N_L3=|NQg4dV>q_E$}OIptGuu0*Zqpnt5Osv3Ny0p$@3~P5Q*#&>u&0cavF?(TR zaymOz6rMl1;48oE%{v#XbAc-_73W z$*XF?FFWHi6ItP2_Hc6EFJE?L;Q8g=%GJYfJqCi0~C;8vu3U}4**9iNVqz1pF$8^ zu{FS5W5VoU-Aq`W>@%KXt6Uk%RF;Z#uoUzvsv;={O^oI>j+GeZ5oM-WCp1LRM(G=? zhO%php#4TSyT(_|nkk}-EI5NPvS`Wks!7CDyoR+7ChQId+0=4V2Xvg(DDd&Tq&o11 zS{d7HLrhB_z4QA|U-ul#ZQi>FcPYv%?dPQQWx5Ww^2(+3^zhwiTKVbx@ZD^0I-d>} z{OXcO&$;QhJ+kez>nUvnRBci)tY>-7A&Qnw>iL zN@z?CfcinFKqo+_L(?m(FjA2;n1PZA9G}LD3i(XP^AE)(OwjF|X=lt)zLP(QYX{9> zU3`cq@us=OWg3eAM2d1%r}zql8dJbnaNx@oqNWVsiwJGS193n!44Q4lVuuF1DH>J^ z`2ksr9AtGKw4`5zEUK++dRs-}taU99~*o94WmVl)n1) z$G#CAC7Hll#+E2_CMgN!eqvPBl2TsoBi05MnoE9Z-I7m`;xMs8#0Zw%fXfqbV^3p8 zK#AVWU*m@fv}Z8c9ke&GdLJ|ar^!_X0Li@u3=tH8s2zmiDs1cD*;gBTv z9tI#;&zy5tlvBsx7&d7PdXP981JXQz0reItbDcP^LQquX@T`W^Kr!+f${od+#Au=z zk0|_6l(|)mD0j$Q7bA+9icuJJMyEk3{>$f;;kjH+7oSdwM^xa%ummVfCc!e6Jb)pz zrcg|>i`3nuHbOp8PXS8uy5AJrutmE(;Vh5pYUzVcclbu7AneDXd%$JN%kAF*Sw%O4 z!vft$n4R=fu=0{NltApgPufOHT?gn{AJLXG{IOTj&@Yb;;;io6NiKUK?|OwhRNaj$ zq{zIPFWvs~hx3E)-x=BXd;O1}FU(EWEwA%1QpKM^Jv#C;{j>e`$j_d^H}8-SXzTrt zvo5n(C5sz>k)?k|Bw<+p{)uf#qpksO)qu|o%x)PvOM6Zc8vxtY$!#+?S5n`M-|Wi$ zKQn_3Go#yPPD9GNRON??}w^7{|B-Mq^6dfxK xnRZB$xgBWV2f`kz|8UPzIt4vowqaS8VWHJ*y+&i!V%QPewxf7swq={m=D)3H=js3e literal 0 HcmV?d00001 diff --git a/_device_main.py b/_device_main.py new file mode 100644 index 0000000..b290ce9 --- /dev/null +++ b/_device_main.py @@ -0,0 +1,469 @@ +from PySimpleGUI import TIMEOUT_KEY, WIN_CLOSED +import json +import math +import socket +import subprocess + +import device_interaction as dev + +import gui + +use_client = False + +sending_param = {} + +#### ---- Constants + +GUI_TIMEOUT_INTERVAL = 5#505 - dev.WAIT_AFTER_SEND*1000 # GUI refresh time in milliseconds + +SAVE_POINTS_NUMBER = 1000 # Number of most recent data points kept in memory + +INITIAL_TEMPERATURE_1 = 22.40 # Set initial temperature for Laser 1 in Celsius: from -1 to 45 C ?? +INITIAL_TEMPERATURE_2 = 16.70 # Set initial temperature for Laser 2 in Celsius: from -1 to 45 C ?? +INITIAL_CURRENT_1 = 32.0 # 64.0879 max # Set initial current for Laser 1, in mA +INITIAL_CURRENT_2 = 32.0 # 64.0879 max # Set initial current for Laser 2, in mA + +#### ---- Functions + +def start_task(prt): + global sending_param + dev.send_task_command(prt, sending_param) + +def stop_task(prt): + global sending_param + sending_param = {} + dev.reset_port_settings(prt) + dev.send_control_parameters(prt, params) + +def get_float(values, strId): + value = 0.0 + try: + value = float(values[strId]) + except: + value = float("nan") + window['-StartCycle-'].update(disabled = True) + return value + +def shorten(i): + return "{:.2f}".format(round(i, 2)) + + +def set_initial_params(): + params = {} + params['Temp_1'] = INITIAL_TEMPERATURE_1 # Initial temperature for Laser 1 + params['Temp_2'] = INITIAL_TEMPERATURE_2 # Initial temperature for Laser 2 + params['ProportionalCoeff_1'] = int(10*256) # Proportional coefficient for temperature stabilizatoin for Laser 1 <-- ToDo (why int?) + params['ProportionalCoeff_2'] = int(10*256) # Proportional coefficient for temperature stabilizatoin for Laser 2 <-- ToDo (why int?) + params['IntegralCoeff_1'] = int(0.5*256) # Integral coefficient for temperature stabilizatoin for Laser 1 <-- ToDo (why int?) + params['IntegralCoeff_2'] = int(0.5*256) # Integral coefficient for temperature stabilizatoin for Laser 2 <-- ToDo (why int?) + params['Message_ID'] = "00FF" # Send Message ID (hex format) + params['Iset_1'] = INITIAL_CURRENT_1 # Currency value array for Laser 1, in mA + params['Iset_2'] = INITIAL_CURRENT_2 # Currency value array for Laser 2, in mA + params['Min_Temp_1'] = INITIAL_TEMPERATURE_1 + params['Max_Temp_1'] = 28 + params['Min_Current_1'] = INITIAL_CURRENT_1 + params['Max_Current_1'] = 50.0 + params['Delta_Temp_1'] = 0.05 + params['Delta_Current_1'] = 0.05 + params['Min_Temp_2'] = INITIAL_TEMPERATURE_2 + params['Max_Temp_2'] = 28 + params['Min_Current_2'] = INITIAL_CURRENT_2 + params['Max_Current_2'] = 50.0 + params['Delta_Temp_2'] = 0.05 + params['Delta_Current_2'] = 0.05 + params['Delta_Time'] = 50 + params['Tau'] = 3 + return params + +def update_data_lists(): + saved_data.append(data) + if len(saved_data)>SAVE_POINTS_NUMBER: + saved_data.pop(0) + + draw_data.append(data) + if len(draw_data)>gui.GRAPH_POINTS_NUMBER: + draw_data.pop(0) + + + +######## ---- Main program + +if __name__ == "__main__": + saved_data = [] + draw_data = [] + + params = set_initial_params() + + prt = dev.create_port_connection() + if prt is None: + print('Can\'t create connection. Closing program...') + exit(1) + + # dev.request_state(prt) + dev.send_control_parameters(prt, params) + saved_data.append(dev.request_data(prt)) + draw_data.append(saved_data[0]) + + window = gui.setup_gui(params) + axes_signs = gui.sign_axes(window) + + current_and_temperature_settings_available = True + disableStartButton = False + + if use_client: + p = subprocess.Popen("path/to/oscilloscope.exe") + sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sck.bind(("127.0.0.1", 9090)) + sck.listen() + conn, _ = sck.accept() + + while True: + event, values = window.read(timeout=GUI_TIMEOUT_INTERVAL) + + enable_manual_settings = window['-EnableManualSettings-'].get() + if current_and_temperature_settings_available: + window['-EnableT1-'].update(disabled = enable_manual_settings) + window['-EnableT2-'].update(disabled = enable_manual_settings) + window['-EnableC1-'].update(disabled = enable_manual_settings) + window['-EnableC2-'].update(disabled = enable_manual_settings) + + window['-InputMinT1-'].update(disabled = enable_manual_settings) + window['-InputMaxT1-'].update(disabled = enable_manual_settings) + window['-InputDeltaT1-'].update(disabled = enable_manual_settings) + window['-InputMinT2-'].update(disabled = enable_manual_settings) + window['-InputMaxT2-'].update(disabled = enable_manual_settings) + window['-InputDeltaT2-'].update(disabled = enable_manual_settings) + window['-InputMinC1-'].update(disabled = enable_manual_settings) + window['-InputMaxC1-'].update(disabled = enable_manual_settings) + window['-InputDeltaC1-'].update(disabled = enable_manual_settings) + window['-InputMinC2-'].update(disabled = enable_manual_settings) + window['-InputMaxC2-'].update(disabled = enable_manual_settings) + window['-InputDeltaC2-'].update(disabled = enable_manual_settings) + + window['-InputT1-'].update(disabled = not enable_manual_settings) + window['-InputT2-'].update(disabled = not enable_manual_settings) + window['-InputI1-'].update(disabled = not enable_manual_settings) + window['-InputI2-'].update(disabled = not enable_manual_settings) + + window['-StartCycle-'].update(disabled = not enable_manual_settings) + + if current_and_temperature_settings_available and not enable_manual_settings: + enable_t1 = window['-EnableT1-'].get() + enable_t2 = window['-EnableT2-'].get() + enable_c1 = window['-EnableC1-'].get() + enable_c2 = window['-EnableC2-'].get() + + sending_param['ProportionalCoeff_1'] = params['ProportionalCoeff_1'] + sending_param['IntegralCoeff_1'] = params['IntegralCoeff_1'] + sending_param['ProportionalCoeff_2'] = params['ProportionalCoeff_2'] + sending_param['IntegralCoeff_2'] = params['IntegralCoeff_2'] + + if enable_t1 and \ + not enable_t2 and \ + not enable_c1 and \ + not enable_c2: + sending_param['TaskType'] = dev.cmd.TaskType.ChangeTemperatureLD1 + sending_param['MinT1'] = get_float(values, '-InputMinT1-') + sending_param['MaxT1'] = get_float(values, '-InputMaxT1-') + sending_param['DeltaT1'] = get_float(values, '-InputDeltaT1-') + sending_param['I1'] = get_float(values, '-InputI1-') + sending_param['I2'] = get_float(values, '-InputI2-') + sending_param['T2'] = get_float(values, '-InputT2-') + sending_param['Dt'] = get_float(values ,'-InputDeltaTime-') + sending_param['Tau'] = get_float(values ,'-InputTau-') + + disableStartButton = math.isnan(sending_param['MinT1']) or \ + math.isnan(sending_param['MaxT1']) or \ + math.isnan(sending_param['DeltaT1']) or \ + math.isnan(sending_param['I1']) or \ + math.isnan(sending_param['I2']) or \ + math.isnan(sending_param['T2']) or \ + math.isnan(sending_param['Dt']) or \ + math.isnan(sending_param['Tau']) + + window['-EnableT2-'].update(disabled = enable_t1) + window['-EnableC1-'].update(disabled = enable_t1) + window['-EnableC2-'].update(disabled = enable_t1) + enable_t2 = window['-EnableT2-'].get() + enable_c1 = window['-EnableC1-'].get() + enable_c2 = window['-EnableC2-'].get() + window['-InputMinT1-'].update(disabled = not enable_t1) + window['-InputMaxT1-'].update(disabled = not enable_t1) + window['-InputDeltaT1-'].update(disabled = not enable_t1) + window['-InputI1-'].update(disabled = not enable_t1) + window['-InputI2-'].update(disabled = not enable_t1) + window['-InputT2-'].update(disabled = not enable_t1) + window['-InputMinT2-'].update(disabled = enable_t1) + window['-InputMaxT2-'].update(disabled = enable_t1) + window['-InputDeltaT2-'].update(disabled = enable_t1) + window['-InputMinC1-'].update(disabled = enable_t1) + window['-InputMaxC1-'].update(disabled = enable_t1) + window['-InputDeltaC1-'].update(disabled = enable_t1) + window['-InputMinC2-'].update(disabled = enable_t1) + window['-InputMaxC2-'].update(disabled = enable_t1) + window['-InputDeltaC2-'].update(disabled = enable_t1) + window['-EnableManualSettings-'].update(disabled = True) + elif enable_t2 and \ + not enable_t1 and \ + not enable_c1 and \ + not enable_c2: + sending_param['TaskType'] = dev.cmd.TaskType.ChangeTemperatureLD2 + sending_param['MinT2'] = get_float(values, '-InputMinT2-') + sending_param['MaxT2'] = get_float(values, '-InputMaxT2-') + sending_param['DeltaT2'] = get_float(values, '-InputDeltaT2-') + sending_param['I1'] = get_float(values, '-InputI1-') + sending_param['I2'] = get_float(values, '-InputI2-') + sending_param['T1'] = get_float(values, '-InputT1-') + sending_param['Dt'] = get_float(values ,'-InputDeltaTime-') + sending_param['Tau'] = get_float(values ,'-InputTau-') + disableStartButton = math.isnan(sending_param['MinT2']) or \ + math.isnan(sending_param['MaxT2']) or \ + math.isnan(sending_param['DeltaT2']) or \ + math.isnan(sending_param['I1']) or \ + math.isnan(sending_param['I2']) or \ + math.isnan(sending_param['T1']) or \ + math.isnan(sending_param['Dt']) or \ + math.isnan(sending_param['Tau']) + + window['-EnableT1-'].update(disabled = enable_t2) + window['-EnableC1-'].update(disabled = enable_t2) + window['-EnableC2-'].update(disabled = enable_t2) + enable_t1 = window['-EnableT1-'].get() + enable_c1 = window['-EnableC1-'].get() + enable_c2 = window['-EnableC2-'].get() + window['-InputMinT1-'].update(disabled = enable_t2) + window['-InputMaxT1-'].update(disabled = enable_t2) + window['-InputDeltaT1-'].update(disabled = enable_t2) + window['-InputT1-'].update(disabled = not enable_t2) + window['-InputI1-'].update(disabled = not enable_t2) + window['-InputI2-'].update(disabled = not enable_t2) + window['-InputMinT2-'].update(disabled = not enable_t2) + window['-InputMaxT2-'].update(disabled = not enable_t2) + window['-InputDeltaT2-'].update(disabled = not enable_t2) + window['-InputMinC1-'].update(disabled = enable_t2) + window['-InputMaxC1-'].update(disabled = enable_t2) + window['-InputDeltaC1-'].update(disabled = enable_t2) + window['-InputMinC2-'].update(disabled = enable_t2) + window['-InputMaxC2-'].update(disabled = enable_t2) + window['-InputDeltaC2-'].update(disabled = enable_t2) + window['-EnableManualSettings-'].update(disabled = True) + elif enable_c1 and \ + not enable_c2 and \ + not enable_t1 and \ + not enable_t2: + sending_param['TaskType'] = dev.cmd.TaskType.ChangeCurrentLD1 + sending_param['MinC1'] = get_float(values, '-InputMinC1-') + sending_param['MaxC1'] = get_float(values, '-InputMaxC1-') + sending_param['DeltaC1'] = get_float(values, '-InputDeltaC1-') + sending_param['T1'] = get_float(values, '-InputT1-') + sending_param['T2'] = get_float(values, '-InputT2-') + sending_param['I2'] = get_float(values, '-InputI2-') + sending_param['Dt'] = get_float(values ,'-InputDeltaTime-') + sending_param['Tau'] = get_float(values ,'-InputTau-') + disableStartButton = math.isnan(sending_param['MinC1']) or \ + math.isnan(sending_param['MaxC1']) or \ + math.isnan(sending_param['DeltaC1']) or \ + math.isnan(sending_param['T1']) or \ + math.isnan(sending_param['T2']) or \ + math.isnan(sending_param['I2']) or \ + math.isnan(sending_param['Dt']) or \ + math.isnan(sending_param['Tau']) + + window['-EnableT1-'].update(disabled = enable_c1) + window['-EnableT2-'].update(disabled = enable_c1) + window['-EnableC2-'].update(disabled = enable_c1) + enable_t1 = window['-EnableT1-'].get() + enable_t2 = window['-EnableT2-'].get() + enable_c2 = window['-EnableC2-'].get() + window['-InputMinT1-'].update(disabled = enable_c1) + window['-InputMaxT1-'].update(disabled = enable_c1) + window['-InputDeltaT1-'].update(disabled = enable_c1) + window['-InputT1-'].update(disabled = not enable_c1) + window['-InputT2-'].update(disabled = not enable_c1) + window['-InputI2-'].update(disabled = not enable_c1) + window['-InputMinT2-'].update(disabled = enable_c1) + window['-InputMaxT2-'].update(disabled = enable_c1) + window['-InputDeltaT2-'].update(disabled = enable_c1) + window['-InputMinC1-'].update(disabled = not enable_c1) + window['-InputMaxC1-'].update(disabled = not enable_c1) + window['-InputDeltaC1-'].update(disabled = not enable_c1) + window['-InputMinC2-'].update(disabled = enable_c1) + window['-InputMaxC2-'].update(disabled = enable_c1) + window['-InputDeltaC2-'].update(disabled = enable_c1) + window['-EnableManualSettings-'].update(disabled = True) + elif enable_c2 and \ + not enable_c1 and \ + not enable_t1 and \ + not enable_t2: + sending_param['TaskType'] = dev.cmd.TaskType.ChangeCurrentLD2 + sending_param['MinC2'] = get_float(values, '-InputMinC2-') + sending_param['MaxC2'] = get_float(values, '-InputMaxC2-') + sending_param['DeltaC2'] = get_float(values, '-InputDeltaC2-') + sending_param['T1'] = get_float(values, '-InputT1-') + sending_param['T2'] = get_float(values, '-InputT2-') + sending_param['I1'] = get_float(values, '-InputI1-') + sending_param['Dt'] = get_float(values ,'-InputDeltaTime-') + sending_param['Tau'] = get_float(values ,'-InputTau-') + disableStartButton = math.isnan(sending_param['MinC2']) or \ + math.isnan(sending_param['MaxC2']) or \ + math.isnan(sending_param['DeltaC2']) or \ + math.isnan(sending_param['T1']) or \ + math.isnan(sending_param['T2']) or \ + math.isnan(sending_param['I1']) or \ + math.isnan(sending_param['Dt']) or \ + math.isnan(sending_param['Tau']) + + window['-EnableT1-'].update(disabled = enable_c2) + window['-EnableT2-'].update(disabled = enable_c2) + window['-EnableC1-'].update(disabled = enable_c2) + enable_t1 = window['-EnableT1-'].get() + enable_t2 = window['-EnableT2-'].get() + enable_c1 = window['-EnableC1-'].get() + window['-InputMinT1-'].update(disabled = enable_c2) + window['-InputMaxT1-'].update(disabled = enable_c2) + window['-InputDeltaT1-'].update(disabled = enable_c2) + window['-InputI1-'].update(disabled = not enable_c2) + window['-InputT1-'].update(disabled = not enable_c2) + window['-InputT2-'].update(disabled = not enable_c2) + window['-InputMinT2-'].update(disabled = enable_c2) + window['-InputMaxT2-'].update(disabled = enable_c2) + window['-InputDeltaT2-'].update(disabled = enable_c2) + window['-InputMinC1-'].update(disabled = enable_c2) + window['-InputMaxC1-'].update(disabled = enable_c2) + window['-InputDeltaC1-'].update(disabled = enable_c2) + window['-InputMinC2-'].update(disabled = not enable_c2) + window['-InputMaxC2-'].update(disabled = not enable_c2) + window['-InputDeltaC2-'].update(disabled = not enable_c2) + window['-EnableManualSettings-'].update(disabled = True) + elif not enable_t1 and \ + not enable_t2 and \ + not enable_c1 and \ + not enable_c2: + sending_param = {} + + window['-EnableT1-'].update(disabled = False) + window['-EnableT2-'].update(disabled = False) + window['-EnableC1-'].update(disabled = False) + window['-EnableC2-'].update(disabled = False) + window['-InputMinT1-'].update(disabled = True) + window['-InputMaxT1-'].update(disabled = True) + window['-InputDeltaT1-'].update(disabled = True) + window['-InputMinT2-'].update(disabled = True) + window['-InputMaxT2-'].update(disabled = True) + window['-InputDeltaT2-'].update(disabled = True) + window['-InputMinC1-'].update(disabled = True) + window['-InputMaxC1-'].update(disabled = True) + window['-InputDeltaC1-'].update(disabled = True) + window['-InputMinC2-'].update(disabled = True) + window['-InputMaxC2-'].update(disabled = True) + window['-InputDeltaC2-'].update(disabled = True) + window['-InputT1-'].update(disabled = True) + window['-InputT2-'].update(disabled = True) + window['-InputI1-'].update(disabled = True) + window['-InputI2-'].update(disabled = True) + window['-EnableManualSettings-'].update(disabled = False) + + window['-InputDeltaTime-'].update(disabled = not enable_c1 and not enable_t1 and not enable_c2 and not enable_t2) + window['-InputTau-'].update(disabled = not enable_c1 and not enable_t1 and not enable_c2 and not enable_t2) + + window['-StartCycle-'].update(disabled = not enable_c1 and not enable_t1 and not enable_c2 and not enable_t2 or disableStartButton) + + if event == WIN_CLOSED or event == '-EXIT-': + if use_client: + p.terminate() + conn.close() + sck.close() + dev.reset_port_settings(prt) + break + + elif event == '-StartCycle-': + if not enable_manual_settings: + window['-StopCycle-'].update(disabled = False) + window['-StartCycle-'].update(disabled = True) + window['-EnableT1-'].update(disabled = True) + window['-EnableC1-'].update(disabled = True) + window['-EnableT1-'].update(False) + window['-EnableC1-'].update(False) + window['-EnableT2-'].update(disabled = True) + window['-EnableC2-'].update(disabled = True) + window['-EnableT2-'].update(False) + window['-EnableC2-'].update(False) + window['-InputMinT1-'].update(disabled = True) + window['-InputMaxT1-'].update(disabled = True) + window['-InputDeltaT1-'].update(disabled = True) + window['-InputMinT2-'].update(disabled = True) + window['-InputMaxT2-'].update(disabled = True) + window['-InputDeltaT2-'].update(disabled = True) + window['-InputMinC1-'].update(disabled = True) + window['-InputMaxC1-'].update(disabled = True) + window['-InputDeltaC1-'].update(disabled = True) + window['-InputMinC2-'].update(disabled = True) + window['-InputMaxC2-'].update(disabled = True) + window['-InputDeltaC2-'].update(disabled = True) + window['-InputDeltaTime-'].update(disabled = True) + window['-InputTau-'].update(disabled = True) + window['-InputT1-'].update(disabled = True) + window['-InputT2-'].update(disabled = True) + window['-InputI1-'].update(disabled = True) + window['-InputI2-'].update(disabled = True) + current_and_temperature_settings_available = False + # TODO get task parameters from gui and put its to params + + if use_client: + jsondoc_str = json.dumps(sending_param) + jsondoc = bytearray() + jsondoc.extend(jsondoc_str.encode()) + conn.sendall(jsondoc) + + start_task(prt) + else: + params['Temp_1'] = float(values['-InputT1-']) + params['Temp_2'] = float(values['-InputT2-']) + params['Iset_1'] = float(values['-InputI1-']) + params['Iset_2'] = float(values['-InputI2-']) + dev.send_control_parameters(prt, params) + #print(sending_param) + elif event == '-StopCycle-': + window['-StopCycle-'].update(disabled = True) + current_and_temperature_settings_available = True + stop_task(prt) + elif event == TIMEOUT_KEY: + data = dev.request_data(prt) + + update_data_lists() + + window['-TOUT_1-'].update(gui.READ_TEMPERATURE_TEXT+' 1: '+shorten(data['Temp_1'])+' C') + window['-TOUT_2-'].update(gui.READ_TEMPERATURE_TEXT+' 2: '+shorten(data['Temp_2'])+' C') + window['-IOUT_1-'].update(gui.READ_CURRENT_TEXT+' 1: '+shorten(data['I1'])+' мА') + window['-IOUT_2-'].update(gui.READ_CURRENT_TEXT+' 2: '+shorten(data['I2'])+' мА') + window['-DateTime-'].update(data['datetime'].strftime('%d-%m-%Y %H:%M:%S:%f')[:-3]) + window['-TTerm1-'].update('T терм 1: '+shorten(data['Temp_Ext_1'])+' C') + window['-TTerm2-'].update('T терм 2: '+shorten(data['Temp_Ext_2'])+' C') + window['-3V3-'].update('3V3: '+shorten(data['MON_3V3'])+' В') + window['-5V1-'].update('5V1: '+shorten(data['MON_5V1'])+' В') + window['-5V2-'].update('5V2: '+shorten(data['MON_5V2'])+' В') + window['-7V0-'].update('7V0: '+shorten(data['MON_7V0'])+' В') + + window['-GraphT1-'].draw_line((len(draw_data)-1, draw_data[-2]['Temp_1']), (len(draw_data), draw_data[-1]['Temp_1']), color='yellow') + window['-GraphT2-'].draw_line((len(draw_data)-1, draw_data[-2]['Temp_2']), (len(draw_data), draw_data[-1]['Temp_2']), color='yellow') + window['-GraphI1-'].draw_line((len(draw_data)-1, draw_data[-2]['I1']), (len(draw_data), draw_data[-1]['I1']), color='yellow') + window['-GraphI2-'].draw_line((len(draw_data)-1, draw_data[-2]['I2']), (len(draw_data), draw_data[-1]['I2']), color='yellow') + + # When graphs reach end of X scale, start scrolling + if len(draw_data)>=gui.GRAPH_POINTS_NUMBER: + # Scroll graphs + window['-GraphT1-'].move(-1, 0) + window['-GraphT2-'].move(-1, 0) + window['-GraphI1-'].move(-1, 0) + window['-GraphI2-'].move(-1, 0) + + # Scroll back graphs' labels + for key, sgn in axes_signs.items(): + window[key].MoveFigure(sgn[0], 1, 0) + window[key].MoveFigure(sgn[1], 1, 0) + + window.close() + + dev.close_connection(prt) + + diff --git a/device_commands.py b/device_commands.py new file mode 100644 index 0000000..e839576 --- /dev/null +++ b/device_commands.py @@ -0,0 +1,346 @@ +from enum import IntEnum +from serial import Serial +from serial.tools import list_ports +import device_conversion as cnv +from datetime import datetime + +#### ---- Constants + +GET_DATA_TOTAL_LENGTH = 30 # Total number of bytes when getting DATA +SEND_PARAMS_TOTAL_LENGTH = 30 # Total number of bytes when sending parameters +TASK_ENABLE_COMMAND_LENGTH = 32 # Total number of bytes when sending TASK_ENABLE command + +class TaskType(IntEnum): + Manual = 0x00 + ChangeCurrentLD1 = 0x01 + ChangeCurrentLD2 = 0x02 + ChangeTemperatureLD1 = 0x03 + ChangeTemperatureLD2 = 0x04 +#### ---- Auxiliary functions + +def int_to_hex(inp): + if inp<0 or inp>65535: + print("Error. Input should be within [0, 65535]. Returning N=0.") + return "0000" + return f"{inp:#0{6}x}"[2:] + +def crc(lst): + crc=int("0x"+lst[0],16) + for i in range(1,len(lst)): + crc=crc^int("0x"+lst[i],16) + return int_to_hex(crc) + +def show_hex_string(string): + return "".join("\\x{}".format(char.encode()) for char in (string[i:i+2] for i in range(0, len(string), 2))) + + +def flipfour(s): + ''' Changes "abcd" to "cdba" + ''' + if len(s) != 4: + print("Error. Trying to flip string with length not equal to 4.") + return None + return s[2:4]+s[0:2] + + +#### ---- Port Operations + + +def setup_port_connection(baudrate: int, port: str, timeout_sec: float): + prt = Serial() + prt.baudrate = baudrate + prt.port = port + prt.timeout = timeout_sec + return prt + + +def open_port(prt): + prt.open() + + if prt.is_open: + print("Connection succesful. Port is opened.") + print("Port parameters:", prt) + print("") + else: + print("Can't open port. Exiting program.") + exit() + + +def close_port(prt): + prt.close() + print("") + if prt.is_open: + print("Can't close port. Exiting program.") + exit() + else: + print("Port is closed. Exiting program.") + exit() + + +#### ---- Interacting with device: low-level + +# ---- Sending commands + +def send_TASK_ENABLE(prt, bytestring): + ''' Set task parameters (x7777 + ...). + Expected device answer: STATE. + ''' + if len(bytestring) != TASK_ENABLE_COMMAND_LENGTH: + print("Error. Wrong parameter string for TASK_ENABLE.") + return None + prt.write(bytestring) + print("Sent: Set control parameters (TASK_ENABLE).") + +def send_DECODE_ENABLE(prt, bytestring): + ''' Set control parameters (x1111 + ...). + Expected device answer: STATE. + ''' + if len(bytestring) != SEND_PARAMS_TOTAL_LENGTH: + print("Error. Wrong parameter string for DECODE_ENABLE.") + return None + prt.write(bytestring) + print("Sent: Set control parameters (DECODE_ENABLE).") + + +def send_DEFAULT_ENABLE(prt): + ''' Reset the device (x2222). + Expected device answer: STATE. + ''' + input = bytearray.fromhex(flipfour("2222")) + prt.write(input) + print("Sent: Reset device (DEFAULT_ENABLE).") + + +def send_TRANSS_ENABLE(prt): + ''' Request all saved data (x3333). + Expected device answer: SAVED_DATA. + ''' + # TODO later. + pass + + +def send_TRANS_ENABLE(prt): + ''' Request last piece of data (x4444). + Expected device answer: DATA. + ''' + input = bytearray.fromhex(flipfour("4444")) + prt.write(input) + print("Sent: Request last data (TRANS_ENABLE).") + + +def send_REMOVE_FILE(prt): + ''' Delete saved data (x5555). + Expected device answer: STATE. + ''' + input = bytearray.fromhex(flipfour("5555")) + prt.write(input) + print("Sent: Delete saved data (REMOVE_FILE).") + pass + + +def send_STATE(prt): + ''' Request state (x6666). + Expected device answer: STATE. + ''' + input = bytearray.fromhex(flipfour("6666")) + prt.write(input) + print("Sent: Request state (STATE).") + pass + + +# ---- Getting data + + +def get_STATE(prt): + ''' Get decoded state of the device in byte format (2 bytes). + ''' + + print("Received "+str(prt.inWaiting())+" bytes.") + if prt.inWaiting()!=2: + print("Error. Couldn't get STATE data. prt.inWaiting():", prt.inWaiting()) + print("Flushing input data:", prt.read(prt.inWaiting())) + # print("Flushing input data:", prt.read(2), prt.read(2)) + return None + + out_bytes = prt.read(2) + return out_bytes + + +def get_DATA(prt): + ''' Get decoded state of the device in byte format (426 bytes). + ''' + + print("Received "+str(prt.inWaiting())+" bytes.\n") + if prt.inWaiting()!=GET_DATA_TOTAL_LENGTH: + print("Error. Couldn't get DATA data.") + return None + + out_bytes = prt.read(GET_DATA_TOTAL_LENGTH) + return out_bytes + + +#### ---- Interacting with device: decode/encode messages + +# ---- Encoding functions +def CalculateCRC(data): + CRC_input = [] + for i in range(1,int(len(data)/4)): + CRC_input.append(data[4*i:4*i+4]) + return crc(CRC_input) + +def encode_Setup(): + bits=['0']*16 + + bits[15] = "1" # enable work + bits[14] = "1" # enable 5v1 + bits[13] = "1" # enable 5v2 + bits[12] = "1" # enable LD1 + bits[11] = "1" # enable LD2 + bits[10] = "1" # enable REF1 + bits[9] = "1" # enable REF2 + bits[8] = "1" # enable TEC1 + bits[7] = "1" # enable TEC2 + bits[6] = "1" # enable temp stab 1 + bits[5] = "1" # enable temp stab 2 + bits[4] = "0" # enable sd save + bits[3] = "1" # enable PI1 coef read + bits[2] = "1" # enable PI2 coef read + bits[1] = "0" # reserved + bits[0] = "0" # reserved + + s="".join([str(i) for i in bits]) + return hex(int(s,2))[2:] + +def create_TaskEnableCommand(sending_param): + data = flipfour("7777") # Word 0 + data += flipfour(encode_Setup()) # Word 1 + data += flipfour(int_to_hex(sending_param['TaskType'])) # Word 2 + match sending_param['TaskType']: + case TaskType.ChangeCurrentLD1.value: + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['MinC1']))) # Word 3 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['MaxC1']))) # Word 4 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['DeltaC1']))) # Word 5 + data += flipfour(int_to_hex(int(sending_param['Dt']*100))) # Word 6 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(sending_param['T1']))) # Word 7 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['I2']))) # Word 8 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(sending_param['T2']))) # Word 9 + case TaskType.ChangeCurrentLD2.value: + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['MinC2']))) # Word 3 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['MaxC2']))) # Word 4 + data += flipfour(int_to_hex(int(sending_param['DeltaC2']*100))) # Word 5 + data += flipfour(int_to_hex(int(sending_param['Dt']*100))) # Word 6 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(sending_param['T2']))) # Word 7 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['I1']))) # Word 8 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(sending_param['T1']))) # Word 9 + case TaskType.ChangeTemperatureLD1: + raise Exception("Temperature changing is not implemented yet") + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['MinT1']))) # Word 3 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['MaxT1']))) # Word 4 + data += flipfour(int_to_hex(sending_param['DeltaT1']*100)) # Word 5 + data += flipfour(int_to_hex(sending_param['Dt']*100)) # Word 6 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(sending_param['I1']))) # Word 7 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['I2']))) # Word 8 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(sending_param['T2']))) # Word 9 + case TaskType.ChangeTemperatureLD2: + raise Exception("Temperature changing is not implemented yet") + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['MinT2']))) # Word 3 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['MaxT2']))) # Word 4 + data += flipfour(int_to_hex(sending_param['DeltaT2']*100)) # Word 5 + data += flipfour(int_to_hex(sending_param['Dt']*100)) # Word 6 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(sending_param['I2']))) # Word 7 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['I1']))) # Word 8 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(sending_param['T1']))) # Word 9 + case _: + raise Exception(f"Undefined TaskType:{sending_param['TaskType']}") + data += flipfour(int_to_hex(int(sending_param['Tau']))) # Word 10 + data += flipfour(int_to_hex(sending_param['ProportionalCoeff_1'])) # Word 11 + data += flipfour(int_to_hex(sending_param['IntegralCoeff_1'])) # Word 12 + data += flipfour(int_to_hex(sending_param['ProportionalCoeff_2'])) # Word 13 + data += flipfour(int_to_hex(sending_param['IntegralCoeff_2'])) # Word 14 + data += CalculateCRC(data) # Word 15 + + return bytearray.fromhex(data) + +def encode_Input(params): + + if params is None: + return bytearray.fromhex("1111"+"00"*14) + + data = flipfour("1111") # Word 0 + data += flipfour(encode_Setup()) # Word 1 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(params['Temp_1']))) # Word 2 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(params['Temp_2']))) # Word 3 + data += flipfour("0000")*3 # Words 4-6 + data += flipfour(int_to_hex(params['ProportionalCoeff_1'])) # Word 7 + data += flipfour(int_to_hex(params['IntegralCoeff_1'])) # Word 8 + data += flipfour(int_to_hex(params['ProportionalCoeff_2'])) # Word 9 + data += flipfour(int_to_hex(params['IntegralCoeff_2'])) # Word 10 + data += flipfour(params['Message_ID']) # Word 11 + + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(params['Iset_1']))) # Word 12 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(params['Iset_2']))) # Word 13 + + CRC_input = [] + for i in range(1,int(len(data)/4)): + CRC_input.append(data[4*i:4*i+4]) + + CRC = crc(CRC_input) + data += CRC # Word 14 + + return bytearray.fromhex(data) + + +# ---- Decoding functions + +def decode_STATE(state): + st = flipfour(state) + if st == '0000': + status = "All ok." + elif st == '0001': + status = "SD Card reading/writing error (SD_ERR)." + elif st == '0002': + status = "Command error (UART_ERR)." + elif st == '0004': + status = "Wrong parameter value error (UART_DECODE_ERR)." + elif st == '0008': + status = "Laser 1: TEC driver overheat (TEC1_ERR)." + elif st == '0010': + status = "Laser 2: TEC driver overheat (TEC2_ERR)." + elif st == '0020': + status = "Resetting system error (DEFAULT_ERR)." + elif st == '0040': + status = "File deletion error (REMOVE_ERR)." + else: + status = "Unknown or reserved error." + return status + + +def decode_DATA(dh): + def get_word(s,num): + return flipfour(s[num*2*2:num*2*2+4]) + def get_int_word(s,num): + return int(get_word(s,num),16) + + data = {} + data['datetime'] = datetime.now() + data['Header'] = get_word(dh, 0) + data['I1'] = cnv.conv_I_N_to_mA(get_int_word(dh, 1)) + data['I2'] = cnv.conv_I_N_to_mA(get_int_word(dh, 2)) + data['TO_LSB'] = get_int_word(dh, 3) + data['TO_MSB'] = get_int_word(dh, 4) + data['Temp_1'] = cnv.conv_T_N_to_C(get_int_word(dh, 5)) + data['Temp_2'] = cnv.conv_T_N_to_C(get_int_word(dh, 6)) + data['Temp_Ext_1'] = cnv.conv_TExt_N_to_C(get_int_word(dh, 7)) + data['Temp_Ext_2'] = cnv.conv_TExt_N_to_C(get_int_word(dh, 8)) + data['MON_3V3'] = cnv.conv_U3V3_N_to_V(get_int_word(dh, 9)) + data['MON_5V1'] = cnv.conv_U5V_N_to_V(get_int_word(dh, 10)) + data['MON_5V2'] = cnv.conv_U5V_N_to_V(get_int_word(dh, 11)) + data['MON_7V0'] = cnv.conv_U7V_N_to_V(get_int_word(dh, 12)) + data['Message_ID'] = get_word(dh, 13) # Last received command + data['CRC'] = get_word(dh, 14) + + return data + + + + diff --git a/device_conversion.py b/device_conversion.py new file mode 100644 index 0000000..25e582b --- /dev/null +++ b/device_conversion.py @@ -0,0 +1,68 @@ + + +import math + +# ---- Conversion functions + +VREF = 2.5 # Volts + +R1 = 10000 # Ohm +R2 = 2200 # Ohm +R3 = 27000 # Ohm +R4 = 30000 # Ohm +R5 = 27000 # Ohm +R6 = 56000 # Ohm + +RREF = 28.7 # Ohm (current-setting resistor) @1550 nm - 28.7 Ohm; @840 nm - 10 Ohm + +R7 = 22000 # Ohm +R8 = 22000 # Ohm +R9 = 5100 # Ohm +R10 = 180000 # Ohm + +class Task: + def __init__(self): + self.task_type = 0 + # Here should be fields, contained task parameters + +def conv_T_C_to_N(T): + Rt = 10000 * math.exp( 3900/(T+273) - 3900/298 ) + U = VREF/(R5*(R3+R4)) * ( R1*R4*(R5+R6) - Rt*(R3*R6-R4*R5) ) / (Rt+R1) + N = int(U * 65535 / VREF) + if N<0 or N>65535: + print("Error converting T=" + str(T) + " to N=" + str(N) + ". N should be within [0, 65535]. Returning N=0.") + return N + +def conv_T_N_to_C(N): + U = N*VREF/65535 # Volts + Rt = R1 * (VREF*R4*(R5+R6) - U*R5*(R3+R4)) / (U*R5*(R3+R4) + VREF*R3*R6 - VREF*R4*R5) # Ohm + T = 1 / (1/298 + 1/3900 * math.log(Rt/10000)) - 273 # In Celsius + return T + +def conv_TExt_N_to_C(N): + U = N*VREF/4095*1/(1+100000/R10) + VREF*R9/(R8+R9) # Volts + Rt = R7*U/(VREF-U) # Ohm + T = 1 / (1/298 + 1/3455 * math.log(Rt/10000)) - 273 # In Celsius + return T + +def conv_I_mA_to_N(I): + N = int(65535/2000 * RREF * I) # I in mA + if N<0 or N>65535: + print("Error converting I=" + str(I) + " to N=" + str(N) + ". N should be within [0, 65535]. Returning N=0.") + N=0 + return N + +def conv_I_N_to_mA(N): + return N*2.5/(65535*4.4) - 1/20.4 # I in mA + + +def conv_U3V3_N_to_V(u_int): + return u_int * 1.221 * 0.001 # Volts + +def conv_U5V_N_to_V(u_int): + return u_int * 1.8315 * 0.001 # Volts + +def conv_U7V_N_to_V(u_int): + return u_int * 6.72 * 0.001 # Volts + + diff --git a/device_interaction.py b/device_interaction.py new file mode 100644 index 0000000..dc013b4 --- /dev/null +++ b/device_interaction.py @@ -0,0 +1,110 @@ + + +import time + +from datetime import datetime +import device_commands as cmd + + +#### ---- Constants + +WAIT_AFTER_SEND = 0.15 # Wait after sending command, before requesting input (in seconds). + + +#### ---- High-level port commands + +def create_port_connection(): + prt = None + for port, _, _ in sorted(cmd.list_ports.comports()): + try: + prt = cmd.setup_port_connection(port=port, baudrate=115200, timeout_sec=1) + cmd.open_port(prt) + reset_port_settings(prt) + except: + prt.close() + continue + break + return prt + +# def setup_connection(): +# prt = cmd.setup_port_connection() +# cmd.open_port(prt) +# return prt + + +def reset_port_settings(prt): + # Reset port settings and check status + cmd.send_DEFAULT_ENABLE(prt) + time.sleep(WAIT_AFTER_SEND) + status = cmd.get_STATE(prt).hex() + if status is not None: + print("Received: STATE. State status:", cmd.decode_STATE(status), "("+cmd.flipfour(status)+")") + print("") + + +def request_state(prt): + # Request data + cmd.send_STATE(prt) + time.sleep(WAIT_AFTER_SEND) + status = cmd.get_STATE(prt).hex() + if status is not None: + print("Received: STATE. State status:", cmd.decode_STATE(status), "("+cmd.flipfour(status)+")") + print("") + + +def send_control_parameters(prt, params): + # Send control parameters + hexstring = cmd.encode_Input(params) + cmd.send_DECODE_ENABLE(prt,hexstring) + time.sleep(WAIT_AFTER_SEND) + status = cmd.get_STATE(prt).hex() + if status is not None: + print("Received: STATE. State status:", cmd.decode_STATE(status), "("+cmd.flipfour(status)+")") + print("") + else: + print("") + +def send_task_command(prt, sending_param): + # Send task command (TASK_ENABLE state in firmware) + hexstring = cmd.create_TaskEnableCommand(sending_param) + cmd.send_TASK_ENABLE(prt,hexstring) + time.sleep(WAIT_AFTER_SEND) + status = cmd.get_STATE(prt).hex() + if status is not None: + print("Received: STATE. State status:", cmd.decode_STATE(status), "("+cmd.flipfour(status)+")") + print("") + else: + print("") + +def request_data(prt): + # Request data + cmd.send_TRANS_ENABLE(prt) + time.sleep(WAIT_AFTER_SEND) + data = cmd.get_DATA(prt).hex() + data_dict = [] + if data is not None: + data_dict = cmd.decode_DATA(data) + return data_dict + + +def print_data(data): + def shorten(i): + return str(round(i, 2)) + + print("Data from device (time: "+datetime.now().strftime("%H:%M:%S:%f")+"):") + print("Message Header:", data['Header'], " Message ID:", data['Message_ID']) + print("Photodiode Current 1 ("+str(len(data['I1']))+" values):", \ + shorten(data['I1']), shorten(data['I1'][1]), "...", \ + shorten(data['I1']), shorten(data['I1'][-1]), "mA") + print("Photodiode Current 2 ("+str(len(data['I2']))+" values):", \ + shorten(data['I2']), shorten(data['I2'][1]), "...", \ + shorten(data['I2']), shorten(data['I2'][-1]), "mA") + print("Laser Temperature 1:", shorten(data['Temp_1']), "C") + print("Laser Temperature 2:", shorten(data['Temp_2']), "C") + print("Temperature of external thermistor 1:", shorten(data['Temp_Ext_1']), "C") + print("Temperature of external thermistor 2:", shorten(data['Temp_Ext_2']), "C") + print("Voltages 3V3: "+shorten(data['MON_3V3'])+"V 5V1: "+shorten(data['MON_5V1'])+ \ + "V 5V2: "+shorten(data['MON_5V2'])+"V 7V0: "+shorten(data['MON_7V0'])+"V.") + +def close_connection(prt): + cmd.close_port(prt) \ No newline at end of file diff --git a/gui.py b/gui.py new file mode 100644 index 0000000..e26693b --- /dev/null +++ b/gui.py @@ -0,0 +1,201 @@ + +import PySimpleGUI as sg + +#### ---- GUI Constants + +WINDOW_TITLE = 'Модуль управления лазерной схемой оптического смесителя (Отдел радиофотоники МФТИ)' +WINDOW_SIZE = [0, 0] + +SET_BUTTON_TEXT = 'Задать' + +SET_TEMPERATURE_TEXT_1 = 'Установка температуры лазера 1 (C):' +SET_TEMPERATURE_TEXT_2 = 'Установка температуры лазера 2 (C):' +SET_CURRENT_TEXT_1 = 'Управляющий ток лазера 1 (15-60 мА):' +SET_CURRENT_TEXT_2 = 'Управляющий ток лазера 2 (15-60 мА):' +SET_MANUAL_MODE_TEXT = 'Ручной режим ввода' +SET_TEXT_WIDTH = 34 +SET_INPUT_WIDTH = 5 + +SET_MIN_TEMPERATURE_TEXT_1 = 'Минимальная температура лазера 1 (C):' +SET_MAX_TEMPERATURE_TEXT_1 = 'Максимальная температура лазера 1 (C):' +SET_DELTA_TEMPERATURE_TEXT_1 = 'Шаг дискретизации температуры лазера 1 (0.05-1 С):' +SET_MIN_CURRENT_TEXT_1 = 'Мнимальный ток лазера 1 (мА):' +SET_MAX_CURRENT_TEXT_1 = 'Максимальный ток лазера 1 (мА):' +SET_DELTA_CURRENT_TEXT_1 = 'Шаг дискретизации тока лазера 1 (0.002-0.5 мА):' +SET_MIN_TEMPERATURE_TEXT_2 = 'Минимальная температура лазера 2 (C):' +SET_MAX_TEMPERATURE_TEXT_2 = 'Максимальная температура лазера 2 (C):' +SET_DELTA_TEMPERATURE_TEXT_2 = 'Шаг дискретизации температуры лазера 2 (0.05-1 С):' +SET_MIN_CURRENT_TEXT_2 = 'Мнимальный ток лазера 2 (мА):' +SET_MAX_CURRENT_TEXT_2 = 'Максимальный ток лазера 2 (мА):' +SET_DELTA_CURRENT_TEXT_2 = 'Шаг дискретизации тока лазера 2 (0.002-0.5 мА):' +SET_DELTA_T_TEXT = 'Шаг дискретизации времени (1-100 мкс):' +SET_TAU_T_TEXT = 'Время задержки (3-10мс):' +SET_TEXT_WIDTH_NEW = 40 + +SET_START_BUTTON_TEXT = 'Пуск' +SET_STOP_BUTTON_TEXT = 'Стоп' + + +GRAPH_POINTS_NUMBER = 100 # Number of most recent data points shown on charts +GRAPH_CANVAS_SIZE = (0, 0) +GRAPH_BG_COLOR = '#303030' +GRAPH_SIGN_AXES_COLOR = 'orange' + +GRAPH_T_MIN = 0 # Celsius +GRAPH_T_MAX = 50 # Celsius +GRAPH_I_MIN = 0.0 # mA +GRAPH_I_MAX = 1.0 # mA + + +READ_TEMPERATURE_TEXT = 'Температура лазера' +READ_CURRENT_TEXT = 'Ток фотодиода' + +VOLTAGE_TEXT_WIDTH = 15 + + +#### ---- Setting GUI + +def get_screen_size(): + window = sg.Window('Test') + global WINDOW_SIZE + WINDOW_SIZE = window.get_screen_size() + window.close() + global GRAPH_CANVAS_SIZE + GRAPH_CANVAS_SIZE = (int(WINDOW_SIZE[0]/3.5), int(WINDOW_SIZE[0]/(3*2.75))) + return WINDOW_SIZE + +def setup_gui(params): + + sg.theme("DarkBlue12") + + screen_size = get_screen_size() + + layout_input_col1 = [[sg.Text(SET_TEMPERATURE_TEXT_1), sg.Push(), + sg.Input(params['Temp_1'], disabled_readonly_background_color="Gray", size=(SET_INPUT_WIDTH,1), key='-InputT1-', disabled = True)], + + [sg.Text(SET_CURRENT_TEXT_1), sg.Push(), + sg.Input(params['Iset_1'], disabled_readonly_background_color="Gray", size=(SET_INPUT_WIDTH,1), key='-InputI1-', disabled = True)], + + [sg.HSeparator(pad=(1,20))], + + [sg.Push(), sg.Text(READ_TEMPERATURE_TEXT+' 1: ', key='-TOUT_1-')], + + [sg.Graph(canvas_size=GRAPH_CANVAS_SIZE, graph_bottom_left=(0, GRAPH_T_MIN), graph_top_right=(GRAPH_POINTS_NUMBER, GRAPH_T_MAX), + background_color=GRAPH_BG_COLOR, enable_events=False, drag_submits=False, key='-GraphT1-')], + + # [sg.HSeparator(pad=(10,15), color=sg.theme_background_color())], + + [sg.Push(), sg.Text(READ_CURRENT_TEXT+' 1: ', pad=(5, (20,5)), key='-IOUT_1-')], + + [sg.Graph(canvas_size=GRAPH_CANVAS_SIZE, graph_bottom_left=(0, GRAPH_I_MIN), graph_top_right=(GRAPH_POINTS_NUMBER, GRAPH_I_MAX), + background_color=GRAPH_BG_COLOR, enable_events=False, drag_submits=False, key='-GraphI1-')]] + + + layout_input_col2 = [[sg.Text(SET_TEMPERATURE_TEXT_2), sg.Push(), + sg.Input(params['Temp_2'], disabled_readonly_background_color="Gray", size=(SET_INPUT_WIDTH,1), key='-InputT2-', disabled = True)], + + [sg.Text(SET_CURRENT_TEXT_2), sg.Push(), + sg.Input(params['Iset_2'], disabled_readonly_background_color="Gray", size=(SET_INPUT_WIDTH,1), key='-InputI2-', disabled = True)], + + [sg.HSeparator(pad=(1,20))], + + [sg.Push(), sg.Text(READ_TEMPERATURE_TEXT+' 2: ', key='-TOUT_2-')], + + [sg.Graph(canvas_size=GRAPH_CANVAS_SIZE, graph_bottom_left=(0, GRAPH_T_MIN), graph_top_right=(GRAPH_POINTS_NUMBER, GRAPH_T_MAX), + background_color=GRAPH_BG_COLOR, enable_events=False, drag_submits=False, key='-GraphT2-')], + + # [sg.HSeparator(pad=(10,15), color=sg.theme_background_color())], + + [sg.Push(), sg.Text(READ_CURRENT_TEXT+' 2: ', pad=(5, (20,5)), key='-IOUT_2-')], + + [sg.Graph(canvas_size=GRAPH_CANVAS_SIZE, graph_bottom_left=(0, GRAPH_I_MIN), graph_top_right=(GRAPH_POINTS_NUMBER, GRAPH_I_MAX), + background_color=GRAPH_BG_COLOR, enable_events=False, drag_submits=False, key='-GraphI2-')]] + + layout_input_col3 = [ + [sg.Text(SET_MANUAL_MODE_TEXT), sg.Checkbox('', default=False, key='-EnableManualSettings-')], + + [sg.Text(SET_MIN_TEMPERATURE_TEXT_1, size=(SET_TEXT_WIDTH_NEW,1)), + sg.Input(params['Min_Temp_1'], size=(SET_INPUT_WIDTH,1), key='-InputMinT1-', disabled=True, disabled_readonly_background_color="Gray"), sg.Checkbox('', default=False, key='-EnableT1-')], + + [sg.Text(SET_MAX_TEMPERATURE_TEXT_1, size=(SET_TEXT_WIDTH_NEW,1)), + sg.Input(params['Max_Temp_1'], size=(SET_INPUT_WIDTH,1), key='-InputMaxT1-', disabled=True, disabled_readonly_background_color="Gray")], + + [sg.Text(SET_MIN_CURRENT_TEXT_1, size=(SET_TEXT_WIDTH_NEW,1)), + sg.Input(params['Min_Current_1'], size=(SET_INPUT_WIDTH,1), key='-InputMinC1-', disabled=True, disabled_readonly_background_color="Gray"), sg.Checkbox('', default=False, key='-EnableC1-')], + + [sg.Text(SET_MAX_CURRENT_TEXT_1, size=(SET_TEXT_WIDTH_NEW,1)), + sg.Input(params['Max_Current_1'], size=(SET_INPUT_WIDTH,1), key='-InputMaxC1-', disabled=True, disabled_readonly_background_color="Gray")], + + [sg.Text(SET_DELTA_TEMPERATURE_TEXT_1, size=(SET_TEXT_WIDTH_NEW,1)), + sg.Input(params['Delta_Temp_1'], size=(SET_INPUT_WIDTH,1), key='-InputDeltaT1-', disabled=True, disabled_readonly_background_color="Gray")], + + [sg.Text(SET_DELTA_CURRENT_TEXT_1, size=(SET_TEXT_WIDTH_NEW,1)), + sg.Input(params['Delta_Current_1'], size=(SET_INPUT_WIDTH,1), key='-InputDeltaC1-', disabled=True, disabled_readonly_background_color="Gray")], + + [sg.HSeparator(pad=(1,20))], + + [sg.Text(SET_MIN_TEMPERATURE_TEXT_2, size=(SET_TEXT_WIDTH_NEW,1)), + sg.Input(params['Min_Temp_2'], size=(SET_INPUT_WIDTH,1), key='-InputMinT2-', disabled=True, disabled_readonly_background_color="Gray"), sg.Checkbox('', default=False, key='-EnableT2-')], + + [sg.Text(SET_MAX_TEMPERATURE_TEXT_2, size=(SET_TEXT_WIDTH_NEW,1)), + sg.Input(params['Max_Temp_2'], size=(SET_INPUT_WIDTH,1), key='-InputMaxT2-', disabled=True, disabled_readonly_background_color="Gray")], + + [sg.Text(SET_MIN_CURRENT_TEXT_2, size=(SET_TEXT_WIDTH_NEW,1)), + sg.Input(params['Min_Current_2'], size=(SET_INPUT_WIDTH,1), key='-InputMinC2-', disabled=True, disabled_readonly_background_color="Gray"), sg.Checkbox('', default=False, key='-EnableC2-')], + + [sg.Text(SET_MAX_CURRENT_TEXT_2, size=(SET_TEXT_WIDTH_NEW,1)), + sg.Input(params['Max_Current_2'], size=(SET_INPUT_WIDTH,1), key='-InputMaxC2-', disabled=True, disabled_readonly_background_color="Gray")], + + [sg.Text(SET_DELTA_TEMPERATURE_TEXT_2, size=(SET_TEXT_WIDTH_NEW,1)), + sg.Input(params['Delta_Temp_2'], size=(SET_INPUT_WIDTH,1), key='-InputDeltaT2-', disabled=True, disabled_readonly_background_color="Gray")], + + [sg.Text(SET_DELTA_CURRENT_TEXT_2, size=(SET_TEXT_WIDTH_NEW,1)), + sg.Input(params['Delta_Current_2'], size=(SET_INPUT_WIDTH,1), key='-InputDeltaC2-', disabled=True, disabled_readonly_background_color="Gray")], + + [sg.HSeparator(pad=(1,20))], + + [sg.Text(SET_DELTA_T_TEXT, size=(SET_TEXT_WIDTH_NEW,1)), + sg.Input(params['Delta_Time'], size=(SET_INPUT_WIDTH,1), key='-InputDeltaTime-', disabled=True, disabled_readonly_background_color="Gray")], + + [sg.Text(SET_TAU_T_TEXT, size=(SET_TEXT_WIDTH_NEW,1)), + sg.Input(params['Tau'], size=(SET_INPUT_WIDTH,1), key='-InputTau-', disabled=True, disabled_readonly_background_color="Gray")], + + [sg.HSeparator(pad=(1,20))], + + [sg.Button(SET_START_BUTTON_TEXT, key='-StartCycle-', disabled_button_color=("Gray22", "Blue"), disabled=True), sg.Button(SET_STOP_BUTTON_TEXT, disabled_button_color=("Gray22", "Blue"), key='-StopCycle-', disabled=True)]] + + + layout = [[sg.Column(layout_input_col1), sg.VSeparator(), sg.Column(layout_input_col2), sg.VSeparator(), sg.Column(layout_input_col3)], + + [sg.HSeparator(pad=(25,10))], + + [sg.Text('', size=(7,1)), + sg.Text('T терм 1:', size=(VOLTAGE_TEXT_WIDTH,1), key='-TTerm1-'), sg.Text('T терм 2:', size=(VOLTAGE_TEXT_WIDTH,1), key='-TTerm2-'), + sg.Text('3V3:', size=(VOLTAGE_TEXT_WIDTH,1), key='-3V3-'), sg.Text('5V1:', size=(VOLTAGE_TEXT_WIDTH,1), key='-5V1-'), + sg.Text('5V2:', size=(VOLTAGE_TEXT_WIDTH,1), key='-5V2-'), sg.Text('7V0:', size=(VOLTAGE_TEXT_WIDTH,1), key='-7V0-'), + sg.Push(), sg.Text('', key='-DateTime-', pad=(1,10)), + sg.Text('', size=(10,1))], + + [sg.Exit('Выход', pad=(1,5), size=(10,1), key='-EXIT-')]] + + window = sg.Window(WINDOW_TITLE, layout, finalize=True, element_justification='c', size=screen_size) + window.bind('', '-EXIT-') + return window + + +def sign_axes(window): + signs_dict = {} + signs_dict['-GraphT1-'] = \ + (window['-GraphT1-'].draw_text(text=str(GRAPH_T_MIN)+' C', location=(3, GRAPH_T_MIN+(GRAPH_T_MAX-GRAPH_T_MIN)*0.05), color=GRAPH_SIGN_AXES_COLOR), + window['-GraphT1-'].draw_text(text=str(GRAPH_T_MAX)+' C', location=(3, GRAPH_T_MAX-(GRAPH_T_MAX-GRAPH_T_MIN)*0.05), color=GRAPH_SIGN_AXES_COLOR)) + signs_dict['-GraphI1-'] = \ + (window['-GraphI1-'].draw_text(text=str(GRAPH_I_MIN)+' мА', location=(4, GRAPH_I_MIN+(GRAPH_I_MAX-GRAPH_I_MIN)*0.05), color=GRAPH_SIGN_AXES_COLOR), + window['-GraphI1-'].draw_text(text=str(GRAPH_I_MAX)+' мА', location=(4, GRAPH_I_MAX-(GRAPH_I_MAX-GRAPH_I_MIN)*0.05), color=GRAPH_SIGN_AXES_COLOR)) + signs_dict['-GraphT2-'] = \ + (window['-GraphT2-'].draw_text(text=str(GRAPH_T_MIN)+' C', location=(3, GRAPH_T_MIN+(GRAPH_T_MAX-GRAPH_T_MIN)*0.05), color=GRAPH_SIGN_AXES_COLOR), + window['-GraphT2-'].draw_text(text=str(GRAPH_T_MAX)+' C', location=(3, GRAPH_T_MAX-(GRAPH_T_MAX-GRAPH_T_MIN)*0.05), color=GRAPH_SIGN_AXES_COLOR)) + signs_dict['-GraphI2-'] = \ + (window['-GraphI2-'].draw_text(text=str(GRAPH_I_MIN)+' мА', location=(4, GRAPH_I_MIN+(GRAPH_I_MAX-GRAPH_I_MIN)*0.05), color=GRAPH_SIGN_AXES_COLOR), + window['-GraphI2-'].draw_text(text=str(GRAPH_I_MAX)+' мА', location=(4, GRAPH_I_MAX-(GRAPH_I_MAX-GRAPH_I_MIN)*0.05), color=GRAPH_SIGN_AXES_COLOR)) + return signs_dict +

RoJQqF?qKTgZ=8v=9uuI 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