pax_global_header00006660000000000000000000000064147740351000014513gustar00rootroot0000000000000052 comment=ef11999a7994579f1a559766a6614d4170774af9 awf-extended-2.9.0/000077500000000000000000000000001477403510000140765ustar00rootroot00000000000000awf-extended-2.9.0/.gitignore000066400000000000000000000002441477403510000160660ustar00rootroot00000000000000# autoreconf -if /build-aux/ /configure /aclocal.m4 /autom4te.cache/ Makefile.in # ./configure /config.log /config.status Makefile .deps/ # make /src/awf-gtk? *.oawf-extended-2.9.0/LICENSE000066400000000000000000001045131477403510000151070ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . awf-extended-2.9.0/Makefile.am000066400000000000000000000000421477403510000161260ustar00rootroot00000000000000MAKEFLAGS = --silent SUBDIRS = srcawf-extended-2.9.0/README.md000066400000000000000000000154701477403510000153640ustar00rootroot00000000000000# AWF - A widget factory (extended) A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. ## Screenshots GTK 2.24 (Pango 1.56)\ [Preview with GTK 2 - Main window](images/gtk2.png?raw=true) [Preview with GTK 2 - Menu](images/gtk2-menu.png?raw=true) [Preview with GTK 2 - RTL - Main window](images/gtk2-rtl.png?raw=true) GTK 3.24 (Pango 1.56)\ [Preview with GTK 3 - Main window](images/gtk3.png?raw=true) [Preview with GTK 3 - Menu](images/gtk3-menu.png?raw=true) [Preview with GTK 3 - RTL - Main window](images/gtk3-rtl.png?raw=true) [Preview with GTK 3 - Plus button](images/gtk3-plus.png?raw=true) GTK 4.12..4.18 (Pango 1.56)\ [Preview with GTK 4 - Main window](images/gtk4.png?raw=true) [Preview with GTK 4 - Menu](images/gtk4-menu.png?raw=true) [Preview with GTK 4 - RTL - Main window](images/gtk4-rtl.png?raw=true) GTK 5.0 (Pango 1.56)\ _GtkWindow will be probably deprecated... lol_ Theme used for the screenshots is available [here](https://github.com/luigifab/human-theme). ## Tricks * Some options are available from command line (read `-h`, `--help` or man page). * Options menu allow to display some standard dialogs. * System and user themes menu allow to set current theme. * Text direction menu allow to change text direction (LTR/RTL). * Info toolbar button allow to display a notification. * Plus/minus toolbar buttons allow to show or hide: notebooks arrows, marks on progress bars and scales... * Refresh toolbar button and refresh menu item allow to reload the current theme (like `SIGHUP` signal). * Menu keyboard shortcuts can be updated on hover (GTK 2.24 and 3.x, *gtk-can-change-accels*). * Notebooks tabs are scrollable (GTK 3.x and 4.x, *gtk-scroll-tabs*, like with GTK 2.24). * With Ubuntu, menu keyboard shortcuts can also be updated on hover with: `UBUNTU_MENUPROXY= awf-gtk3` ## Installation It require **GTK 2.24** or **GTK 3.0+** *(including 3.24)* or **GTK 4.0+** *(including 4.18)*, *GLIB 2.28+*, *libnotify 0.7+*. #### Installation for Debian, Devuan, Ubuntu, Trisquel, Linux Mint, MX Linux * `sudo apt install awf-gtk2 awf-gtk3 awf-gtk4` #### Installation for Fedora, OpenMandriva * `sudo dnf install awf-gtk2 awf-gtk3 awf-gtk4` #### Installation for openSUSE * `sudo zypper install awf-gtk2 awf-gtk3 awf-gtk4` #### Installation for Mageia * `sudo urpmi awf-extended-gtk2 awf-extended-gtk3 awf-extended-gtk4` #### Building from source * To compile the program with all available major versions of GTK run: `build.sh` * To compile the program and create DEB packages for Debian & Ubuntu run: `scripts/debian[-gtkx]/deb.sh` * To compile the program and create RPM packages for Fedora run: `scripts/fedora/rpm-gtkx.sh` * To compile the program and create RPM packages for Mageia run: `scripts/mageia/rpm-gtkx.sh` * To compile the program and create RPM packages for openSUSE run: `scripts/opensuse/rpm-gtkx.sh` * To compile the program and create RPM packages for OpenMandriva run: `scripts/openmandriva/rpm-gtkx.sh` #### Alternative installation for Debian, Devuan, Ubuntu, Trisquel, Linux Mint, MX Linux ```bash # PPA: https://launchpad.net/~luigifab/+archive/ubuntu/packages # with Debian 12+ you can use mantic+ instead of focal (https://unix.stackexchange.com/a/669008/364800) # for Debian you can use bionic for buster, focal for bullseye, oracular or plucky for bookworm and trixie # for Devuan you can use bionic for beowulf, focal for chimaera, noble for daedalus # for Trisquel you can use focal for nabia, jammy for aramo # for Linux Mint you can use focal for 20.x and 5, jammy for 21.x, noble for 22.x and 6 # for MX Linux you can use focal for 19.x and 21.x, noble for 23.x # for Kali Linux you can use oracular or plucky sudo add-apt-repository ppa:luigifab/packages sudo apt update sudo apt install awf-gtk2 awf-gtk3 awf-gtk4 # or sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys FFE5BD439356DF7D echo "deb http://ppa.launchpad.net/luigifab/packages/ubuntu focal main" | sudo tee -a /etc/apt/sources.list sudo apt update sudo apt install awf-gtk2 awf-gtk3 awf-gtk4 # or sudo wget -O /etc/apt/trusted.gpg.d/luigifab.gpg https://www.luigifab.fr/apt.gpg echo "deb http://ppa.launchpad.net/luigifab/packages/ubuntu focal main" | sudo tee -a /etc/apt/sources.list sudo apt update sudo apt install awf-gtk2 awf-gtk3 awf-gtk4 # or wget -qO - https://www.luigifab.fr/apt.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/luigifab.gpg echo "deb http://ppa.launchpad.net/luigifab/packages/ubuntu focal main" | sudo tee -a /etc/apt/sources.list sudo apt update sudo apt install awf-gtk2 awf-gtk3 awf-gtk4 # sha256sum /etc/apt/trusted.gpg.d/luigifab.gpg 578c89a677048e38007462d543686b53587efba9f93814601169253c45ff9213 # apt-key list /etc/apt/trusted.gpg.d/luigifab.gpg pub rsa4096 2020-10-31 [SC] 458B 0C46 D024 FD8C B8BC 99CD FFE5 BD43 9356 DF7D ``` ## Blurry text with GTK 4 If font rendering is bad, try to add in `~/.config/gtk-4.0/settings.ini`: ``` [Settings] gtk-font-rendering=manual gtk-hint-font-metrics=1 gtk-xft-hintstyle=hintfull gtk-xft-antialias=0 gtk-xft-hinting=1 ``` ## Dev To reload theme when source files change, you can use [Entr](https://github.com/eradman/entr) with the `SIGHUP` signal: ``` sudo apt install entr or sudo dnf install entr or sudo zypper install entr or ... ls ~/.themes/yourtheme/gtk-3*/*.css | entr killall -s SIGHUP awf-gtk3 ``` ## Copyright - Current version: 2.9.0 (04/04/2025) - Compatibility: GTK 2.24 / 3.0..3.24 / 4.0..4.18 - Links: [luigifab.fr](https://www.luigifab.fr/gtk/awf-extended) - [github.com](https://github.com/luigifab/awf-extended) - [ppa/dpa](https://launchpad.net/~luigifab/+archive/ubuntu/packages) This program is provided under the terms of the **GNU GPLv3+** license.\ If you like, take some of your time to improve the translations, go to https://bit.ly/2HyCCEc. ## Packages in official distros repositories [![Packages status](https://repology.org/badge/vertical-allrepos/awf-widget-factory.svg?header=awf-gtk&minversion=2.0.0&columns=3)](https://repology.org/project/awf-widget-factory/versions) ## Credits Forked from [awf](https://github.com/valr/awf) by Valère Monseur (valr). awf-extended-2.9.0/build.sh000066400000000000000000000013521477403510000155320ustar00rootroot00000000000000#!/bin/bash # Debian: sudo apt install build-essential dh-make dh-autoreconf intltool libgtk2.0-dev libgtk-3-dev libgtk-4-dev # Fedora: sudo dnf install autoconf automake gtk2-devel gtk3-devel gtk4-devel desktop-file-utils # openSUSE: sudo zypper install autoconf automake gtk2-devel gtk3-devel gtk4-devel desktop-file-utils # remove old builds rm -f awf-gtk2 awf-gtk3 awf-gtk4 # copy to a tmp directory mkdir builder builder/src cp /usr/share/common-licenses/GPL*3 builder/LICENSE cp configure.ac builder/ cp Makefile.am builder/ cp src/Makefile.am builder/src/ cp src/awf-gtk*.c builder/src/ # build cd builder/ autoreconf -fi ./configure make -s # final cp src/awf-gtk* .. cd .. ls -altrh awf-gtk4 awf-gtk3 awf-gtk2 rm -rf builder/awf-extended-2.9.0/configure.ac000066400000000000000000000015321477403510000163650ustar00rootroot00000000000000AC_INIT([A widget factory], [2.9.0]) AC_CONFIG_SRCDIR([src/]) AC_CONFIG_AUX_DIR([build-aux]) AM_INIT_AUTOMAKE([foreign]) AC_PROG_CC AM_PROG_CC_C_O PKG_CHECK_MODULES([LIBNOTIFY], [libnotify >= 0.7.0]) AC_SUBST(LIBNOTIFY_CFLAGS) AC_SUBST(LIBNOTIFY_LIBS) PKG_CHECK_MODULES(GTK4, gtk4, GTK4_SUFFIX=4, GTK4_SUFFIX=0) AM_CONDITIONAL([GTK4], [test "$GTK4_SUFFIX" -eq 4]) AC_SUBST(GTK4_CFLAGS) AC_SUBST(GTK4_LIBS) AC_SUBST(GTK4_SUFFIX) PKG_CHECK_MODULES(GTK3, gtk+-3.0, GTK3_SUFFIX=3, GTK3_SUFFIX=0) AM_CONDITIONAL([GTK3], [test "$GTK3_SUFFIX" -eq 3]) AC_SUBST(GTK3_CFLAGS) AC_SUBST(GTK3_LIBS) AC_SUBST(GTK3_SUFFIX) PKG_CHECK_MODULES(GTK2, gtk+-2.0 >= 2.24, GTK2_SUFFIX=2, GTK2_SUFFIX=0) AM_CONDITIONAL([GTK2], [test "$GTK2_SUFFIX" -eq 2]) AC_SUBST(GTK2_CFLAGS) AC_SUBST(GTK2_LIBS) AC_SUBST(GTK2_SUFFIX) AC_CONFIG_FILES([ Makefile src/Makefile ]) AC_OUTPUTawf-extended-2.9.0/data/000077500000000000000000000000001477403510000150075ustar00rootroot00000000000000awf-extended-2.9.0/data/awf-gtk2.1000066400000000000000000000016501477403510000165150ustar00rootroot00000000000000.Dd 01/01/22 .Dt AWF 1 .Os Linux .Sh NAME .Nm awf-gtk2 .Nd Theme preview application for GTK 2. .Sh SYNOPSIS .Nm .Op Fl h .Op Fl v .Op Fl l .Op Fl n .Op Fl t Ar theme .Op Fl s Ar filename .Op Fl -ltr .Op Fl -rtl .Sh DESCRIPTION A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. .Bl -tag -width "-s filename" .It Fl h Show help. .It Fl v Show version number. .It Fl l List available themes. .It Fl n Don't start spinners. .It Fl t Ar theme Run with the specified theme. .It Fl s Ar filename Run and save a png screenshot on SIGHUP. .It Fl -ltr Start with text from left to right (Left-To-Right). .It Fl -rtl Start with text from right to left (Right-To-Left). .El .Sh FILES .Bl -tag -width "/home/user/.awf-gtk-accels" -compact .It Pa /home/user/.awf-gtk-accels Configuration of keyboard shortcuts. .Elawf-extended-2.9.0/data/awf-gtk2.desktop000066400000000000000000000004561477403510000200310ustar00rootroot00000000000000[Desktop Entry] Name=AWF GTK 2 Comment=A widget factory is a theme preview application for GTK. Comment[fr]=La fabrique à widgets est une application d'aperçu de thème pour GTK. Exec=awf-gtk2 Icon=awf-gtk2 Terminal=false Type=Application Keywords=gtk; Categories=GTK;Development; StartupNotify=true awf-extended-2.9.0/data/awf-gtk2.fr.1000066400000000000000000000020311477403510000171150ustar00rootroot00000000000000.Dd 01/01/22 .Dt AWF 1 .Os Linux .Sh NAME .Nm awf-gtk2 .Nd Application d'aperçu de thème pour GTK 2. .Sh SYNOPSIS .Nm .Op Fl h .Op Fl v .Op Fl l .Op Fl n .Op Fl t Ar theme .Op Fl s Ar filename .Op Fl -ltr .Op Fl -rtl .Sh DESCRIPTION La fabrique à widgets est une application d'aperçu de thème pour GTK. Elle affiche les différents types de widgets fournis par GTK dans une seule fenêtre permettant de voir l'effet visuel du thème appliqué. .Bl -tag -width "-s filename" .It Fl h Affiche l'aide. .It Fl v Affiche le numéro de version. .It Fl l Liste les thèmes disponibles. .It Fl n Ne démarre pas les spinners. .It Fl t Ar theme Démarre avec le thème spécifié. .It Fl s Ar filename Démarre et enregistre une capture d'écran png lors du SIGHUP. .It Fl -ltr Démarre avec le texte de gauche à droite (Left-To-Right). .It Fl -rtl Démarre avec le texte de droite à gauche (Right-To-Left). .El .Sh FILES .Bl -tag -width "/home/user/.awf-gtk-accels" -compact .It Pa /home/user/.awf-gtk-accels Configuration des raccourcis clavier. .Elawf-extended-2.9.0/data/awf-gtk3.1000066400000000000000000000016501477403510000165160ustar00rootroot00000000000000.Dd 01/01/22 .Dt AWF 1 .Os Linux .Sh NAME .Nm awf-gtk3 .Nd Theme preview application for GTK 3. .Sh SYNOPSIS .Nm .Op Fl h .Op Fl v .Op Fl l .Op Fl n .Op Fl t Ar theme .Op Fl s Ar filename .Op Fl -ltr .Op Fl -rtl .Sh DESCRIPTION A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. .Bl -tag -width "-s filename" .It Fl h Show help. .It Fl v Show version number. .It Fl l List available themes. .It Fl n Don't start spinners. .It Fl t Ar theme Run with the specified theme. .It Fl s Ar filename Run and save a png screenshot on SIGHUP. .It Fl -ltr Start with text from left to right (Left-To-Right). .It Fl -rtl Start with text from right to left (Right-To-Left). .El .Sh FILES .Bl -tag -width "/home/user/.awf-gtk-accels" -compact .It Pa /home/user/.awf-gtk-accels Configuration of keyboard shortcuts. .Elawf-extended-2.9.0/data/awf-gtk3.desktop000066400000000000000000000004561477403510000200320ustar00rootroot00000000000000[Desktop Entry] Name=AWF GTK 3 Comment=A widget factory is a theme preview application for GTK. Comment[fr]=La fabrique à widgets est une application d'aperçu de thème pour GTK. Exec=awf-gtk3 Icon=awf-gtk3 Terminal=false Type=Application Keywords=gtk; Categories=GTK;Development; StartupNotify=true awf-extended-2.9.0/data/awf-gtk3.fr.1000066400000000000000000000020311477403510000171160ustar00rootroot00000000000000.Dd 01/01/22 .Dt AWF 1 .Os Linux .Sh NAME .Nm awf-gtk3 .Nd Application d'aperçu de thème pour GTK 3. .Sh SYNOPSIS .Nm .Op Fl h .Op Fl v .Op Fl l .Op Fl n .Op Fl t Ar theme .Op Fl s Ar filename .Op Fl -ltr .Op Fl -rtl .Sh DESCRIPTION La fabrique à widgets est une application d'aperçu de thème pour GTK. Elle affiche les différents types de widgets fournis par GTK dans une seule fenêtre permettant de voir l'effet visuel du thème appliqué. .Bl -tag -width "-s filename" .It Fl h Affiche l'aide. .It Fl v Affiche le numéro de version. .It Fl l Liste les thèmes disponibles. .It Fl n Ne démarre pas les spinners. .It Fl t Ar theme Démarre avec le thème spécifié. .It Fl s Ar filename Démarre et enregistre une capture d'écran png lors du SIGHUP. .It Fl -ltr Démarre avec le texte de gauche à droite (Left-To-Right). .It Fl -rtl Démarre avec le texte de droite à gauche (Right-To-Left). .El .Sh FILES .Bl -tag -width "/home/user/.awf-gtk-accels" -compact .It Pa /home/user/.awf-gtk-accels Configuration des raccourcis clavier. .Elawf-extended-2.9.0/data/awf-gtk4.1000066400000000000000000000016501477403510000165170ustar00rootroot00000000000000.Dd 01/01/22 .Dt AWF 1 .Os Linux .Sh NAME .Nm awf-gtk4 .Nd Theme preview application for GTK 4. .Sh SYNOPSIS .Nm .Op Fl h .Op Fl v .Op Fl l .Op Fl n .Op Fl t Ar theme .Op Fl s Ar filename .Op Fl -ltr .Op Fl -rtl .Sh DESCRIPTION A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. .Bl -tag -width "-s filename" .It Fl h Show help. .It Fl v Show version number. .It Fl l List available themes. .It Fl n Don't start spinners. .It Fl t Ar theme Run with the specified theme. .It Fl s Ar filename Run and save a png screenshot on SIGHUP. .It Fl -ltr Start with text from left to right (Left-To-Right). .It Fl -rtl Start with text from right to left (Right-To-Left). .El .Sh FILES .Bl -tag -width "/home/user/.awf-gtk-accels" -compact .It Pa /home/user/.awf-gtk-accels Configuration of keyboard shortcuts. .Elawf-extended-2.9.0/data/awf-gtk4.desktop000066400000000000000000000004561477403510000200330ustar00rootroot00000000000000[Desktop Entry] Name=AWF GTK 4 Comment=A widget factory is a theme preview application for GTK. Comment[fr]=La fabrique à widgets est une application d'aperçu de thème pour GTK. Exec=awf-gtk4 Icon=awf-gtk4 Terminal=false Type=Application Keywords=gtk; Categories=GTK;Development; StartupNotify=true awf-extended-2.9.0/data/awf-gtk4.fr.1000066400000000000000000000020311477403510000171170ustar00rootroot00000000000000.Dd 01/01/22 .Dt AWF 1 .Os Linux .Sh NAME .Nm awf-gtk4 .Nd Application d'aperçu de thème pour GTK 4. .Sh SYNOPSIS .Nm .Op Fl h .Op Fl v .Op Fl l .Op Fl n .Op Fl t Ar theme .Op Fl s Ar filename .Op Fl -ltr .Op Fl -rtl .Sh DESCRIPTION La fabrique à widgets est une application d'aperçu de thème pour GTK. Elle affiche les différents types de widgets fournis par GTK dans une seule fenêtre permettant de voir l'effet visuel du thème appliqué. .Bl -tag -width "-s filename" .It Fl h Affiche l'aide. .It Fl v Affiche le numéro de version. .It Fl l Liste les thèmes disponibles. .It Fl n Ne démarre pas les spinners. .It Fl t Ar theme Démarre avec le thème spécifié. .It Fl s Ar filename Démarre et enregistre une capture d'écran png lors du SIGHUP. .It Fl -ltr Démarre avec le texte de gauche à droite (Left-To-Right). .It Fl -rtl Démarre avec le texte de droite à gauche (Right-To-Left). .El .Sh FILES .Bl -tag -width "/home/user/.awf-gtk-accels" -compact .It Pa /home/user/.awf-gtk-accels Configuration des raccourcis clavier. .Elawf-extended-2.9.0/data/icons/000077500000000000000000000000001477403510000161225ustar00rootroot00000000000000awf-extended-2.9.0/data/icons/128x128/000077500000000000000000000000001477403510000170575ustar00rootroot00000000000000awf-extended-2.9.0/data/icons/128x128/apps/000077500000000000000000000000001477403510000200225ustar00rootroot00000000000000awf-extended-2.9.0/data/icons/128x128/apps/awf.png000066400000000000000000000036621477403510000213140ustar00rootroot00000000000000PNG  IHDRPLTEGpL+UU$II3+9K^s7PZ%tu7PY6MYW$x6NX"v!s7MYu!xz6NY5OY7NY5NZ7NX6NXz{6MY7NY}7NY6NY}6NX6NY6MY6NY6NY7NX6NY⃧6NY6NY6NY|6NY6NY6NY6NY剿{ZjSp gq@y 7N[8Ra9Wh%a$c:]s?< 956{jiD\k=d }?q]w"+0)>;BPzsy葽7P[c,[u"dgqimIasBg|v?ky>l|-'1;An9GEJJLS\ZaeZ삡injhsp}ꌺ둸PRZtRNS "%),,/114CESU\^cflsvxy~xIDATxuXA5PN0QTnQ@Vօ;۝ytw{r044ZҤ۴z\U0nQ?K#,BǫǑI2t06j'hWde}&A"-Wc WY1 q±R.JvSl ޥre{B,AO*{1UE]UģKW{jzI3'~6ṳ.d,:d׃8{h٧po,'Do~&nq 2}Vܓ0bL景,.d L ̗ֈ- H-Un"Ʋlj_Bw CazCPAM_ x%; }Ƽq3uOUS0@ V ]@Z>`Ԙ<υEy8@<_= Y5sh7}E]X;D]̲4~,|t \]y 8D `y%]|3p2mO6BIc/zH2"S9CPT&pGePNI\~ѹ u39!s,\|s ٲC>`t~n:9|*R+#B|z,WQ\x!!H|A@+ P0,?,$,}޹+,@ȩLO&9i5OkS5}So0&5TzB4Bg#Z z*/I޼TVymܵ]P`((1nlVjE8";S+9I.UJ%\ 8Z(U z,`r|HdJZIENDB`awf-extended-2.9.0/data/icons/16x16/000077500000000000000000000000001477403510000167075ustar00rootroot00000000000000awf-extended-2.9.0/data/icons/16x16/apps/000077500000000000000000000000001477403510000176525ustar00rootroot00000000000000awf-extended-2.9.0/data/icons/16x16/apps/awf.png000066400000000000000000000006031477403510000211340ustar00rootroot00000000000000PNG  IHDR(-SPLTEGpL#y pR6OZ6NY7NY o6NY([&퀟?q@u0Xt )S4Exah|LtRNSg]\L~IDATx]0X*ήa{h ܌U,)BِYf gfJ4<X 0[D]vx}=]if]V `K$`x Ұ7IrBIENDB`awf-extended-2.9.0/data/icons/22x22/000077500000000000000000000000001477403510000167015ustar00rootroot00000000000000awf-extended-2.9.0/data/icons/22x22/apps/000077500000000000000000000000001477403510000176445ustar00rootroot00000000000000awf-extended-2.9.0/data/icons/22x22/apps/awf.png000066400000000000000000000011001477403510000211170ustar00rootroot00000000000000PNG  IHDRj PLTEGpL$u6NX5MYzB6NY6NY@w隺6NY6NY6NY)6NYkU;YnBZi@awl=e!lXs   5->KJf^lossxatRNS:;?@Dhjqyz8IDATxڍk[0qJ Ѐ$nj^^j,1EWoٳ 8 n83% r Z*ԥ8׭IENDB`awf-extended-2.9.0/data/icons/32x32/000077500000000000000000000000001477403510000167035ustar00rootroot00000000000000awf-extended-2.9.0/data/icons/32x32/apps/000077500000000000000000000000001477403510000176465ustar00rootroot00000000000000awf-extended-2.9.0/data/icons/32x32/apps/awf.png000066400000000000000000000012631477403510000211330ustar00rootroot00000000000000PNG  IHDR D;PLTEGpL6NY6NY6NY7LZ6NY5NZ6NY!owqՎI_~#v7NY6NY6NY6NY6NY6NY6NYmMa?@y;7N[?q8R`o\R")t4,>mstDqOi}e}7C]Ek)^}mG=us R]7 tRNSL%ḴI.KzAסϝjMDIDAT8˵rPDQea_(_REOTsj k抆jMkktYEV'^V @>2( ,`hzrVץG;yiX/w7:խzCL$s H2IF D@`8@Qdcz@r|^Dd3ۋWBC /{a67%j~qxތIENDB`awf-extended-2.9.0/data/icons/48x48/000077500000000000000000000000001477403510000167215ustar00rootroot00000000000000awf-extended-2.9.0/data/icons/48x48/apps/000077500000000000000000000000001477403510000176645ustar00rootroot00000000000000awf-extended-2.9.0/data/icons/48x48/apps/awf.png000066400000000000000000000020031477403510000211420ustar00rootroot00000000000000PNG  IHDR00` PLTEGpL@#tq6LW8MW7NY6OZ6M[8NX"wx y7NX7NZ5NY}7NZ6NY6NY6NYB6NY6NY6NY5NY6NY6NX6MY6NY 6NY6NY6NY6NY6NYnI5af7OZ7P[7P^f>ivx!t~Ct@yZt ? < 9 20!+400H2r/KQSBGGUUZcZ^beyh~plz}ZH9tRNS"#/2EGLNZbfgvwy} .YIDATxZ@ݡ;L(IRh&iKw'|qv~:8s(s[@(;m4K|$굟3:%IHuoEr;hJ@2(0;,~cn8@E'Y+յ*1Q<0(T+kV}[=*j[ Th.ddP<gk[hqt Ň arIENDB`awf-extended-2.9.0/data/icons/64x64/000077500000000000000000000000001477403510000167155ustar00rootroot00000000000000awf-extended-2.9.0/data/icons/64x64/apps/000077500000000000000000000000001477403510000176605ustar00rootroot00000000000000awf-extended-2.9.0/data/icons/64x64/apps/awf.png000066400000000000000000000024041477403510000211430ustar00rootroot00000000000000PNG  IHDR@@RPLTEGpL6NY6NY7NY7OX3PW6NY6NY6NY6NX6OY7NX6OY6LW5NY6NX6OY!z6NY7NY6MZ)u6NX6NYuϓ{~@рՋ 3!uu+Ձ6NY[4zLw5?<7P[W"@y;[o!7P^4?q=a{39VfAYg=ec}9@\) B璷#eBl i$}pd.Yq+\x*\z%a'^+\y3bpm pdC >tRNSuן#Xdb/<Z@?>W}vw%0偮 FH D#IDATXWA&wDEb;{6$"V`bGEEiv{/0;<<$e峦M)Ϙ )I6:[43FMG @w4x%Ĭ;y<Ps%-XR՝Ӡz>?}`% s,@ov̩[еcX4<J# ;jz9sl%p+cؾa  oΕ~l/~f>d_TU(st:R7,0']a@޾cϣ(S@!$6cœ\w8o^G|rxj$ ܺ}l7E@\. n+:$ T@ܵtX$ B"n=xJ@<{ڽO@l,|J/7o/|AM`\HX~T awf-extended-2.9.0/images/000077500000000000000000000000001477403510000153435ustar00rootroot00000000000000awf-extended-2.9.0/images/gtk2-menu.png000066400000000000000000001330041477403510000176630ustar00rootroot00000000000000PNG  IHDRcZPLTEGpL¶ΛdL]IZH[HocX]IݴɹͿ_J̿µމ\H۴bL˿ɾߝeMّ_Iȹ]E;ŵ^IۙcLiL?aKw~cLaKeMbKmPF71לdLfM̽ijgJ>ZD:ԀXFifdYG#""gMǼ}0/.(''Ʒ̾988eL,+*JHGŹ333ʻſ?>=PNL`Jۂ}¾UTR]HXXVECB}{xőĢrqnùbKćԹ{UDM<4_\Zwtrcb`omjkigǮeH7}xtaJrQ@ዋ򣤣wcaI>ycV6NYw\H嬃q}i]c2dNEţvamYiRGnYO@sϱ-*尞 P _B޿n1 M10\0Ԣu'z/V*Zδ/-3w~HEƫ$hb'tRNS@fIDATxO+4M!RyiD/*grSɓȮd{!2y`eU`LDtNRRad%P}nH<5"X[Dj)rw>Nے=s9O߻ُ1^CdyL#EdQ3BGiU[ W, ȚQ_Y'L=PAMh S1Ӡ}A#j78j6_Z8wOH۷w[DJÍGŝqeܵe[cA1BJRtDd+K=E5AUU1OT"zhJj2G J:%YHv׮l9۷că5+.Feme8̱/`ϒxYC]$y  !ˢk$S0)&w!%?ٸ8U(@1Ve 怺,FI1!%'.d^"IHe-yX@Ă&\JMV!CdC̱:XY5d,'36͒C4:CEʒ8lX:}3SD+дC(з#OF+ݪ%bMNK9[c+Qx3aY |ed':;sE9֭޾w]HUsz.-8]ˉc8ɳ39G:: 4E" ;TUReU+Y̓*jwu~՟&Q6$%$>9o1[Y~uB',_YZ昏r:&hC|$IY2Ж ڑX3'%ଷ"JRbwL-Te@τ!r,'zOmd{%[eI2h;rDR2ĜNI>*3e)VFV֮eU:vz7U'mϐ҉Irȼi&U_Wlɫ˼d!PD1UtΒAzקuxת1i([%ÅdAaL- *Lf3nlL@rYj9)̱{cN =gīa-^ߏR ~իU?9bDR 8,vcYhǀT!݆cn+Z? d^d14lH5" LFhfd^L”Ům6%;ϟ&. l_ctWGW'/giğ+ʢc+Ő:dNz)lzrT #<W|c]'54* tU"h7EZPyD11$)%QioDŪ&\O-Y17Vnd+O,/ЋJR f\&`mY7sA9oV D㉼x`ERieh J&\[Cٱgq2&cvAj09!6c$A}#_Adx;BdA(> Hc3xTw쩙*᧍U< Hcxʽ @7e^myfAcƬz`kle3: pPCҾh`W/± vbG{;mNoZ Bi C;c}v]X ݱԱ0cD⳥v/+fz^,}c;5F?9? U/Xm.k# J9˝>tH ozeccNgz1iԝ/ukOb-#O`&.,ûcuݣlVѺ'uV2Suu+JZz%*Xi W{[ :^tWawJN^B ]?.XRGr>,wT,Ӌ/@vtW~nl^RNՍ.K]݇'woG4N N;r%XϦfUwL+09eӜa۩1`VN_ӏyXC[o[8X[jo_zı-bh'9L{z:Щc>?OL\IӴ.Rh__?ݐնDeUb+$]ECE,' )+MНlO?䡦1 hnn> GLDK3_%\$  -M7=B{fJ=TXWq}c0'ʤ6\Bz1~vAkkַ@7L5,z%`E+CnpKW_D0zK440^Zj . R@wlCQ4kܽJVcQ0*ptC=4E{:SA+e]? Fw2cqr?tcnnݏ cM&<l3X֫}Xҙ;g-+% HUIm 􏏎(0 E5zhesTh1y1;棎r{=K9N&l1Y+J8fv!ROB>0Bd==x@fFݱ!5pA6K=l^BM;#t~ xStGMccb7:VcO!Hō3ILb<$FGr5RLh1{kd) RgJc8,MX-555YSqK><؄ ka|:VcQtʲhAoR#q*Sl4>!p?lDܱtz$> Q HD? ʞm'upm#G18VJ,u&"s [ w$D!q]!l1s~XAfW<;X psܚ4mІ%(^/[D/{,wMFc/mbB ?O:fH!;J4 5?G|zC|/a#=mL.53`b]1C2T gi4h^sbS8K4fg3^@_.'ÂҾ!lPhBA-o8\n2 1LTZJ>e {Ч 5|9M,vizް8qSBzB }mС{;v9J; Z؂t_>16E?SWK]/* `),f %*c*P TkIA$`je7&X~ FM֎VTYV?q?{NwOO3 0~fgf=c `' \/ßޟEǩ~ĪV-=:ԅ=l5T>x YF_X퍨oMB/7l~C^ҍ# ^ٟ||ժ37;lpdvXXL2vǟ=y򨿇cXn#>ߑ>-(ڣj"H6dz<ʷCv98{p!8&>:Ď |k蓯!A80<"+vl2 ؏Oژ'E7nGG/V{z`&4=WD!il3/V?oBm|Ŷ}8=͊k;R}z؊;C1CG~=}}kAmoϛa6e+5NYޢ)/|-iQ.I~ᣩձ! ##/mgG6E[XLXb1xѣۯ[ϣ7F+uu|.vW_WڮRҮ2oyW9ny}Ee괤fgɫk xZ "URԭN!^h%-fK˻xBoYjާ48b|RoItw{Ϯ~E$/n$ԱXvAݿ_cD˖ryq(@/CV)y)IJa">4XJʤB/ ~KH06K:^A->y×Z,pc#.03r}ZXp܅cGO96%M[O1Q/,`/X9)|m8eY0JN@i B%|}GH.tǘ}Z?$t,ad  H]_ka1c XnqJqcCCxwpJ8)+±O`܁|eGQ4`J!dUd vR t Hc\1+hfdO>q8ࣙ#|kP_qq rɱiddfSRlm=?l"t*[5;\<ǰ'b8BQi@JC1^MM: ҜҬ{Ɲ\ ^GqxxXUF|) wᘅ o`~Wщ)~HIbR]^dFWP\2^Ftp[CP'@.O-,fXg_gO&I 0Cw־X|1˱g}"˱Yc9R'z^ج\XpXN ~YYG"D3sslc٣)Ցa1\hFxLĬQuD.O4#ǮPbB؉o?ꑺkVL 21Yh`9R'cugD4øk흗'Nq! Nic.1Z(Xf54=@쏈5y#6(8& -,BDc4),2B_DZ˙ -^e[G'zewd&Ϯ?&Ni@1t Ph!_8n;Z9\hcKp˜yEؽ{Ǹ?9cvL.1s:1B!={ %Yo+_p}lKYnʣsGkk0 η[![N+3 +BTR 9 ^ ٫C }0m}?6+vA3pl /y\ZbvLZ(UL[~8?E^ %\F*j:PBXۙs:1[Q#As,Q4S_@u nd1viՈPC7d~rҰX"& әڸ5x12c k.s#oC:& 8QU `B B3ꮒŬ. c96'Oy&-[¤T*sW Auu]K Cuz1P"J]^%j>re#@37D4 \؜ I39b?U pN٦cE&VAma Reœe9eMI2iscRXrgA2{R 2rܸU:tKeYR< cpl -*ccR2flS;t0#JIOdI(/+JZ̛' eTʧ-IOEƐGQvLcccc Lꡙ󍛇c!-rZ@1BWLuL+E1闤\U#Y fUwI-gyr t8/B9FcXD>|NA2uXp! jWuB'PVsvL(O;-BBZ$0 ^ϷUiFўBh锃v 6ʅH7nҳ1t+=b{6ndN NtoΦȱ "gP߮dl>κ@h&lquWEC=߾/48YQ~XHHkdE{ɶE 8e[q"GY1a{Ф2oT%*ޚhU1M1lsé؞KkK_Dv6GmY ̙bJ0LLAAIv*)̈́eR2KAL쿊Za}үlՁukU#9c obF|"g@`Ƶ1O™%c&s,7/FHJJMXZ{e`oe[ -jlD{g5po2SiLϬY( ~їSNk֬VH:E}aյ r^dicǔZ5csBZ;9V @[9q WDHn}3h"a4L!&cI J$&"JVc:@Kp9L #E=X2J:CP'rԩgaz=<`jث9h t{TdEe$')Cͅm72e#:/qj)b{59#0Udy튧*=͹ͳ$g!R҆М&2Z!Q0kDFzI&:K( SĤUUدXpxdD0">zdRrҟ.9&7J(/ OǢÕ"31(9ȱa84q@6tJ!SG%:H}4QE١X\Vr;Oj] +_.*k*t6W,G5J*iOL +-Xȸ*yBŪb K6(?cIIL-8`b?+r~cIew9oT8_H*{\֫[2C%ت~/TR. WU]liKE7tX0V{KO\FTH2%#++kҥ ;mRYW(/5UT4Tt*)d O\a \ .2vL| v$:-q$4+h;&2+ws,:> M<;oEbreaOy:waqp29eFGǓ"e/vXkvºpWzh&"A0l;js^i~`t*`p,7,fM£/{)55uC[<ю-w (a" P좝;Ere0"zeт?wlT \#;^)r$8TD Hwίc;¢эE"cCA00"vDSU!SQ]ڮ;Uo:.PT;ݼ'w?url.umR$O. .RDr^5Pd됃 N'q J؝$>C) ؉#eǂ}Bt<$A,~V %! C?U;Ya2زxq8T" Ré`Xt,WՁJ3ma9vgX Ǐ߾dpJ> \@o V( ̱w'Plδ}9cmh&$D /p8` 8:)$p, vɌI`˖IC"Q/?Άac@TЌkՀ;g@V@A2cPP$J%zU0ϛ/X3L"L\M\?diW/m9{.r|Y7NQˈK-`Tdž. 3lN`bIZVpKK {aQ 2 F!lYlB7",dXX KzTcbhUY^^ǎMo:tY7qWfa] 'hƮ]7(A$nY]kvu %Z; 9;&xQxriׄ!M@kc[CǺ;̗ukF-d8v6c -Sє 5i%4Z>^07$KfIP&*dSs=!s% 1_M1̂?1I,vz$ i,qlKfs:(䎭_>hk}tjn66 ެѳ l C+`HO'8V̴ i`Asۣ%F O ]yAaV\fuwLܱWzm޿467O!/HzZ]kjcZ[-BBZ:~> xH۴̵+G(߮Aa 2^jW c6eb@zZϯݸNstcGo;ۊc!"~䌇Ѳe!Ћ>h&>zyĉ<à0]LaP*(t˓5ܱs] 2ݍ"S [oYٞItc8yЊc" q`&Оɥ]zLߠ0tPR)hyߠ0jD+E+˾&qLo@"ln?Zv{csFЉR,0" dcgv"Ƒmo,σc.yAc2Ͱr%ڠ0@ BVL4l tn=@9Qw,s۶9K%ʇ=Ą0##L̀Tx|:q9I_kzA`Vc]+B:R2m[)S?諏~*1GHyq  T.2z[)+4!O1WrSDy{xde%\,țE/zPzmv^mթ}>5z%+.5ikj9ɱE^ڒ Qb ~!Rr1];rs-*BBvM7U4$oK1j1wcD"%11# m.. rrDwߏ q; ߏ~]C1yſkv_yt}r `ՎX 7:WR YQes,"]4K:N,g#aژ$>q#ߛ1ҵL}ѱ^.. n8VNIz'af 5S,XٖV;[%cMʽHq/s)Qqvű3C'Ɇ͞ckn*a-j*Gn~ߘm~t 2yoL%WcAAu5*-kb8GOLO'n=^aj HXV{QQ[^evv&A\-$1j,I4")&J_YD\w";:F2^X]^8{ocNކo^utڪ'$Đ/j8( 3F~f]Ů0adQ YJJS%G[#p^x`zV1$cXmGbZ>}9f^Iǎ տc;k7&1oʋW.a!9VAe /,4]Jvǩwo|_Ԑ7IF޽plo8)@:O "D(!X!820JSc B>X\%d Y뗟[ uv^tDw]1$k Xy l^oefphD ̠XՍʸ ,-J &ãu#1\1"g8mEHv_+pYp:q&x~" ?-iJCNYnmr0i8S7||^(H83ɅB+e؀K02X}ѥs٤Hxs,~."όmEuP`~Xf(Jؔ30 . 6x$ΘÄ\*#nQAr. AXz[6ɱ'y')s#ǘcS!.ܰ!mCYB2^$6&$lpQcBڝ@;f`^,^$-9s)ˬ +_DcKA j1Bmqɭ-rSU"Xq1ı< Yc{α`MKp@+ g!Šmv0L_o-Yr̟gq f xx ϯVQ"8A+cqPQn^&֌޼iۛ7oZir,K9& P0FBhauxD-b=MZm+|g;Jg}-Wߓ'}ǒ2 2Bq7@ H$CA B)U1cm/q$3i<[#*hRJ?C$)X1騾銍cw^1V+ssl˖!T°TcrsvKXJ,mLԡQy;*)|XD||±pLVN=S ß|KVUrqͱ; v>vV_eM?~>DM8)ms:^qH1uulsv?&86RgRkF9=<33#TJtwl䥶.y4ͱs?;ؒ`H-+gOCCذ9<=l\ 4,;z`:_vŬK;Pض]b-U 9?c?7ux>< 5 c4f㊲;[^j螊tB4bړbWTo~)riU@阉8<{{WՕј|l|dѷqsuȱ[L1lH:Dǐ2B阖3%}[R;]tYR.U߳b3, 籃"y}ޥR#O&EB8}\uMReHuBeٓc]ƿ0&wi}_BջT~ Hߔ >?qԉ;*1l1=}3+L,)KW2o[8Ts8*ȨTC:p֗cxO]Ra_mPL˲SS7$1urto5^rL n!kT+ҥ"{5I516( Y15G]W F:c֭YY[b oYsE:I}cbjG(#ǶK}}ZP8|,O0˙o<OF?E&s[ S8OnҴ:V$Iף5 WXbNZP<_sto<q-%e-tR6BZg1[b}8$3#1 _bڎ8 9LGSXSXh%؁v"!.K5>.Q7׭y}}'zkֽzreP8\mFrq9,u`4ݚV<]A^+%o[7++>^?M0 γp> 9+IZWq/M3GqE{7=\;o[z:X 1~koG%)̱Aw!+q 3yGM)-Dc]$ĝq_Xy 1?(&Ϸ-!d]VL NA`/*g\q8h$ϲy{Ա7b`9'L%'8sՆc[ -[isʕ֛i_'>KotQ>c~ BlHteE/=E]/0~ʼ䑡gW1bh>ǀ+ DZ][v9qr%+B+&i]\0[-.$P//WXVx/q4OWGHO{GK*@b3Kͳű̂pL&bv{Y7rlO10VUiPVt \ xث:zw+x0J$YMӋc)P8=!R4z^ɛcC~~/b;׮] {/{{)d/z|TrL Gkjh5^8WU]tjGjR<#;rs1eq^tO/?\mn.ñxhr9$nj666oֱFTh1Z7¢ln/R匲?pLzy]YP)ys̽ț'#Nw~EiK9w͛cck?kOy8e ͱkW~R׫⸢?Yt_j,"/^?k.o ],2SC ɱ21~S R {1*{^AbC[Scccϲ.c㊷[m C709MCW~`ibCuz=S1-P A2(y~{u;'j PӪc h<dyHH/+~ j/1Ȩ;oHJ![:oIMa`q;kpz+K-irlč11~rcƏqIF1~sw?&U:}ȱ%&`c Bc0Ulv~_\,䘪ljkyCuF-c?7`mE%O!qpKCTbH->W ๑|'8IzL缚}(}<̪'*> ๑|ǐ ނ; b0cHMX|۽V,XiYщX>+..Ķ+n@1ՀcXDFv}:{N}67R< خ3yاO \3VP`' *.L=FiiXޫߢ*͍*/3oK3>ڳ7IA`>hucP,ZOBm\,0%ed BcId8^c9[TeTŢ/ױj8j,W,VJt<ԟO>,1 xV$(odɲaمNc߮sag {i ,f).eE3NG@[%8ImNzuĒ_[aۘCߣvT?Sݱ_Nfsl%X,@mLXX?-FsDF7{i 0ءS~I;JH!qx_ s֨S΍rl:;(k2' ~nrME~njK܎,b68tT,Ӏ5\rB4B,+3%(ðZ,2na\tRpK\oHLMc%)m?-|&uf33ә13BMO{F^j{풻KgDzw18Foe,ܱwζr[ jGBE$aܡC6Ҍp5,%Ѩ5X*чhyn$bw|86lrO;?:*+,ͦK8V:^NŻ4Ԁ9XL,'JB_,]sho]B- ڸC h+-i~@$x_t}1Cq̧yn$rub.RZM'NJ$fut3 pGRkYX{R) Z;Ӡ?qL+ܱ;shڭ"cƑ77f[ȩ<[31@H` "W"A`e/H䒉nW:PǤ>z`:_6MTH.ဘ˱ Yu)&yhZ;cTbXvns"+c69hB~ᅡcԂ4&BR3Fd!7D|Q:v'ArrWa/:`\QqgkSCS(ǐ3'֒O'X5sJܫKLؾ N( 3F~f]8ṔeHB8)`ժ!سr<ť1ipcYٟW0Zvl__WEDԫB-S\:lZ`h8C2jX &mw,Ĥ[K;2D8M/;@(P -űWTNJ1ipw0ԥmVQTHw)۷mKLܶ O(:D<p(?dQEH8jŁrLJ<%¸|:Jn2Z;<W k-/%>Q{%-)C2$~p~o,  yrt-`:vp V kF2XQ׮]ecn<$$sL7 j8@%*3?X(|%oHNNv%''mIZ7~AR钐10dh 6 `#xO8BDmA$/BDZ; <Lj7X`>pT(gR)dNoRy(K"l=<>v$c+c4l[d P , oW >!UoF^9sc'92|B1&@jfc&d~q?%D c.՝|ϡW91ȥb oF tc%dmyt=gbb"cNG'N8qb]!t, VNsq춊rB- ה-Tx!u,(`jqQPvHlBH:ba0n'뭯xֺc|wb*CiT>Avu9eғ,oǘ781*pi޺L:AV]^<BKįcg7Fػ\6c T8!#*W4}IPǦxc7L:Cȼ YxLq y%#r7t\虷5 ǮrBn>;(7n{T'Tv [SJd<oP0*&;GUyE1~ț pv rfxvehfc)LQR !ݒt)~dpldYUݼH~+c.wcNfoYMOlWeu,Abw>U 8F$s&?*,|8vo"Jc|8۶e:)Зcb|z/T*WwL*ǸE6䍦9(0^=]quQx;6$K*yyc=qFb&XMcgj\"u] SݩtJ?{a=gI<\COCY w"uL!l0CE 싸t^`m޼y鎥dX}3  pOM?,Ca'1l53S7xBǠaH1r Qg?xX@1]6SWԙ=s̼sa߁} ת+\{`ȼc N:\i=Jc9F_*" ʎv;7(&b_xsz#Ǫ몭7l"#;\[})7z٩gOcFgCTǏzLK*#SbXe3bT7|5-LVtk95[1:3Qh|hߐᗫLة6 :v-ړkէ8#:Oe4~]lju| lUuU.*1⫎t& J}#E3<:V0tNJ;;?p4S1!PhZF\.α%}mcsp 5fsl3<8XuLW1& Nz3< ^oHA 3dz=Yձ>W#~cJaJvteMY#Jox3w/ :W̼C]?Q7pyX v썥Qh/ḻ:x̅}EGbtEǐ.?ll=yhȘ!6+Ien`q+.,d_]cqG̘599O;?;ec%s>ؼ>xEժ#ulĄ([0!RǞ/]vKW<Ǯ_o¹BWUYzdN#Y6V[KUA0-tlzft g5c*@]Ǚrc$KMiplM 08'DyA>zڎ<>"yH8 !1iF)- v4M @˪eڪ>mfFpA׷Y۱{/IM:Ա_dT+t٤v1_Ǹ7-6r-aKikֱ\+b{Uԧٱ??FP3*S {i؛1ӆm0FpL[ph?ul&]E z+^ ҁXc]=/䌅eE6saoԱHqh͠ bu4c釾QqLjij8VX:z?5vs&Vv {TJdWl YIwqL϶۱@yL7֍;ϴqoaoJ\KC*Gǜo/c̚A{<\&LUsl {cUZ>jcӕHpS ޱP0 \bޞIEA5`)IGZg`XmFz`ah\ZPdXs Ze$t]s*&kǂ]Ǹ7ȦCvA79]9ѰWo" uroc١zl}dQǐ4eC""H9M+Y {Yת}t=<_0,(#8[D !8~b>։_u P*(Vo *o#!ܹsmͭڥ|T-K4}9U֎8`ϴxjޏc(`|;uO9e}e:wN$X̱e9UHOʳc^ƨKm7T~Ӂc&0M FsӂԱ/qKu_=?d%HjK9;TRT=?R\Td_6ǨxX83ؠQɠACi:sn?LkJc/ s^_wշc(V,ͥrǿ%/t f Lidg½R:R4)D7 h蠷c}QA)C<2$/z4{</ ? :ͽgb&lfoQ^T# X,@!\dHlȸ#>sޞcK{ZzcՏ{ޞ>_fj4.?GqLڋ 3tj}plaijvSK1=Ns70* Izm Ӹ\-詇;X,!r L)WEsnUK!F>;&ꎹ~Ҵi̺M XOõ6_S;&,uL.QṋcMuiD:5^8c b"RP-z3\ĒI1io88zįGhTűWZܿwT%ݝc뱚K?Jz'bnV0J ҫZ =]8#-lqFK5K'uK)\{˱3_73QA,1=emɆ:ٹy z~p`( qUnI um^7NX[;xepM"l!dpLխ*299&6tݙ`96cDZ|d> [?w‘Hc*q,N;(dl08+HAߎLƊc֙nkIٍ/W>;&NRcG; cE:!,a7Z'űйw,v}bjuL 1Y3UXhcL0J;YpXTTOӾ >rg٪Ut$3:ȟ(s_QW`0" 8ƒ9@B߽crq $xwLlz&;Â^imݹtEU8Msue TM7̰;F5P.uJJgeL3kb``XQ4;|wKRt A b!<ͱ@ectx`GwĢ:xFNJMK^8V7[~ˌX뜃 NJ2c^:}q oX|%2f(g e-|70&p{-.mx0DYjŚI"m h(α(e(/p/ma99F%XikmYhDRxl&.4B6Ll{?u X_>Xo_8 h ~{Ǟc$CĽ߀skN [J ˆ>c|{ 瀞ex$&E9Nsր握h>Y??؎c;QǨd[=ygn[5l1M\p-0ucnr~?d\9c~g0Eɶ=V6|N&v87\(hv ?s?@W\sf$d1(d1(c*cmE9벭sB'@C|ew:(+E~䏡bX|8c 揁cٷ߯9B40t2 m8 #vc:F{wS;c^ܟ}KSc^:k H%XVձoݞa\6rW(_+ٙ,S~Hc)(~HNJ'; Q1 ώ%1ac,˝1EbN3ȯ_l*tl `&Bf.P̱OO`8qCcHUc^- I4rby{m`(&L] [Y^YY>KH]Mbfu揁c̲;h`u9׾uȮdž )hQ̱OtP:R"E) ';*ƒ+XxqcEαG1Z2~s=l^Ƌ =g Ka[t!CW΃P8/$O]8X}[4gpu ~M1w`r9ussaܝQl&öi$vmf34B7h,IsUh/w_΁/ø.#c-]jsy%3Op1GӋ.a4 1"1[TSZ^ek1QR w;K[_>ɹ[Xe﷐m yc7l19~ GǼ90yr}&TKč)&f%o*oc#ޑ'l<6W +UuMaPǼ]{G3Tt`~K1 #Ma8m﷐W yrTw+KKu&sɹ,c0p̧o h#,E;dixO?LVe9S7;DtӤcu@ ޑclm_n_s_ֽͤ1n|[.%ʂDqpcjFb\nxs+ =96xA̧o)>qo-AsL͸sV ǭH#+&;$r+b4 w5:q/edOkwMs,LpذNícL#!Ep%_\69DI&c#:ȑ#qo?-@M% .}GRbO< ;'!31"m}u,׋m;-nژctrhiH]@NW"08@5Mgǎ,~wqdN;b41ÞNS ^6@ ϜxI Fsl`Ɵ(O0t+g&43ozg;w,'---?̭nα֦qX'KrA!L{L_琿yl馑dˀ%_Ǒ::BZͷ2M$(Wrr41_Òeϳ |l@arI3Naxo0"̱$a̚GL7xiIZ=i$)H9AΏ8bNC1U} l$*g.$FU#X9F,COkc#05%.6+>hoI q˗: 9`p̽ D 0`b0 LSS h+vv$(L֤8yJ>LU±^?{a}:D!"jS$7)7JlANFcdOȹ"J6$;SDL!dIx"ձ!eMFgIw;;OgMO'_ĦxH$x%X =O.6u*p _yV+ex;Fq&a LJ>J)KFڻں+֡|ѩ%Ρ韑!Dg+W=_yO~p"e\8*2cc2ߑ=WRMYFcd5Ttu%w/ e%>MtʊOSSZ.DdCpzA xӋ=Zc ,vh(_@ $|DFc2ǫsyܿikkuJ~i{poWOchٿ ,)݄d 7JαJZwy.{2GX !͓1硽>WNH7I!Ozd 膾*CްX1;5hBtlpz^K#ˏl]'1r|Kc q"XGb'zP#FQ.c(G "X`>h}4qKǍt ^Py41b ԱJ%@ sl–LUpdGX)YDLqɉg R.=3Y\Y%lculdv&\BRohM@I* Jб)sʊZ9d1F^coU'<q"c\E6ƪa;,jv 8_?ߕ苟 V&{Cc JE{;|p<oNa#I"m|\E5Ǧ1tl:4ur]{UwE$?dEL}ek tޙӭ/~`mS'9&1 8(^/scC .sd!Dfj`, F?AسpxE2гtoڲv92oAQıxZtL!Qgu,iJ6 ^l I <1ϲqԏ `N,e*Z`HQrYED{D;4UTtla5Q1ärkXν52_쎡b|2y$alG*KiǒNؠe3 &xVKx9{**:FV$1Dq?F=Qz} pQVƥ%Et,3~9Eh-&bY9]2gC,WQӱ)TcyEocOZ{m3k^ć61z'6l58f *zuf1d4Yh쐚RU_NfC,WQ1 ±ݱ1zFv dKnLv^yΙCjo;3Ѡ9v!ⴣU Rڴ8@ű8±#U{m#Ï;jpTCvp̾o7.t`= I8F owDؾƊ$cEŇc*+!0*1*YҜR8gʎsҒ&R;3#  >gcȇƹfS18NJ,W TA= b sXa|Fs^y4>`F5f/a$ajBȺ#>v ~3I`XYbs<!D±:FoEA YgeΞ5i(j<56yRS]-G55.IB1zAI@[!pleAoh4 ܅]>-廎]6&ED|ܗ#>`M@( r=Ku0q,~서3;e ӣBdBuv]O\]6lNa\bgUUA4{YǚiQ\gYԹcdLgT1* ҹQ㫴ɴn2YS̱[mzq,FǔԿOr i#Vh [vZn)8Vbk4cH[9TwLiK$UvvAǾ]GIi*86 5*k,MJqXF`,s,=ȉm7^|AOޙ zuHN2Uǻ3,^ vl!&56M?l뛛c/XcP}"gNSRsle^C7u;6Ǚ ~B(occ ݋}0upn0a$>7@fXc=sf/1v놻(kkTNt@ j.YI[ lNyGܗ!K#Sﻷϩa;)1ǻ;&M{:ZlX/;Xm&;S7'Ǟ`ӺeAm)"0a0&l1Kަn9dM#aecyſXcb+XL6uI](*ߏ{uO4ƿ8ݏخRV>1L zcsM).`qA}&'yF6#ޞEpi`7q|Xv,8☷(w zcsL8˙:X%cގjjq̃)8? kOq^$lUe_ DոE X c/_(33K/c޻j\ r&q?S~ͱhul>;1Í*Һ贾P R:vi?盈#jM Xj.'Kpҥ.,WVNn=`I'wwx_Rryj 2mQ&W7ݹ;v)Ϲ:&VUxځ7֨f?we}2\ղ̸ 7Bgn׫mC=lU1f.c]DZܻrZ8^}sP1}2]JYFǬBj"lmTKLɭm9]tV,;稽WwmםRZ7 't]I) 2rTJmf|Iu;] Ǜcޱ_i^ `8[{N>'1_\b;fTƱ[?ñJXZ|>`w d6\hsJ*R;qPX[DQm+qX{{фE+pI+cҧKv"rr`u՞|-ܟcyb [|'qu+gz|-F,G-RHqxQ+{ Ev̐Ҁ;밁ny?)m10faⱲ9^'NF o՞w!?/U4f5Ar.1$Ƕe17/FH{$XCcOKɵPw~Ƽ@*$&:}'sPҎF3K~beB7FO:S祼TLP:V_,vuW|իCA=KO䌞)#dW2 ~N%M ІkW1BJ13?mnjO3Sc͒XZ.%)| tA3iGx[cqpI)8}anR%'6G\Xbfz&;c]155C2uoX,AtC ]Pj֩thY#FɁ7f%F'l&&U@~} =Z󊸾Sn(3ٱ[c*Q YÐi<in:MHzi4X2pfdv6h,HT2*geIc؅cP{M,h J̹qqinggn duK_N{;8vZ@Ku$X ctkYz '> ;fa9T`;QlFF2cn,4u}ovHMvINJtta:pL5jwlnhn!1lm+HI;3wS |g?:6ЎgnӠcl,+u±:ҤaȺNjZuty⬖a\hZ?1, H}s2v6Ծ_gι/zOaUUeQC.}ʽ3OctWDžA_$ev$zf˩%zcn&00}CuBc~`(LUUgӌQ$[Ğ`36c]]'x},#Sp_1Ob2gb„a8FE}L (Lޜ[\غn\XG*7~k˰{{0u>Ăn^4'~7^ +_SzYܵ7m&x_CѳT:37Zo*g0;s. QmHLK>[1*} S!|Q uxcv;% Cp`g'nrL&?.M;QJ@E=[*_VrqÍzs0&&09!f X[LN%x pzvE %TWx͗\7kǘ35ͅsM~٢Iv Gx[&qd~fXs-gtYuM܋?ƅ`{?[B BgϿ:?Ҳ3|`Y+D-1-nb8&+콤DM*A^MFla@E{=&Xs/uc(JH B6?Ng]&C>X}}>RNcKi+db69&m5TZZկ5p5*~CR5Zo^peB/B+0\2:.RmM,Z19olc{/9QJ\kU+1kڵ߮f zsa5fMpzcM"h+>)1~:59qc2z̶hR&yD˜ynZ+صj~5s~k^vi}ŁW),,m-I^jr&d}EۢI\*mW҂<^o~k['84zM c5UDֻGȬVW<&X뭼ziȪMfU!dKKծ։2A7Zo^mqHTT<,ҌyK24cR30&eiƎ,͘R5cR4cGfLjØ2gYҌY1;*0f)Sc5O3ViƔJ3$LQMS$Jl_iM䴴LzƊh\XS*1 Kir%3ƾJ,`ݻY촔1g Sk4cJ%1f`GC2 +-ؾ[rZʌ?_ό{iT2V" {T4ƘXm-V5LK36Q&2dO% Qg_Epfk*a,IO|gb@wBf x/6n=t,+L!jJ۽t:? gRp.kroS 1~۸iQ;/DYFűkJ2ɌFd}i߱U8lvfL0VLeqe%3/ˋs Ռ5X=Or:*6c4IydyE1_Fp:WT1UjmKeqy LKN'c Ռ5Z{*z_QDdO%3/]#83PXS*#?w*S3PiƔJ=c*15c fL3"S3PiƔJ{[dEe7z A+Ҍ)fH fP0٘iƔJ3985^}8<WѶ6<"͘RIzY c*kۙ:O#tblu4cJU12n,Y`l>=4ƻk dw ^@X@plg ٴKeldeE?%6Tt Ol90>|.`n2aƨӇ[3zKNrșr6vN*c&3(+իgldgjT9Jܱ0҉h .Dڈ/یQT^X2휇̔3vR*c&w2@oT=cFT>`JA*63dQv0k12TՀNZ1F9h\L\ L32ua̘udL@vuf ᑅoA>͉f7z#s4q.&,r,0f"F32>` ݞǰu'8b%`n\oĘh&%LĽ ̯لZwQL.cS8]޺unFuBVs]oF9h\L\I˱Mg?^gdrA2 ;/Nn"o_oM`7z#Em\oĘ>c#fF:0"sza7z#1!ہ1[6&ވ1Geb{?h~ ~ވ1G1<sTQ1_1"Ƥ="l*-bL#b̶1_1"Ƥ="l*-bL#b̶1_1"Ƥ=byx79D +1&UQ_ߠtAV8bLף=ۇ[rd =qC cRX^zbsΌ +1&UQoYvs 2 z7?WZ1ܸY1_zbbG߀1հa?}8KjpO4Z7膬pĘTG0f1X50o1B?kO^ ZWtӍ. GIzcVs^ a7q_,&7yٛSbW1! cRuϘo ~33ᡉplYmbbY1_gbg_?o72{jẏ&(F+&. GIz5cVso>zߐ1_?W|:ly\s7JӍ]*1s=~bbbJoㄿtFWd#Ƥ=wҿxY1_˘/EIzD1&U1f[ĘTGĘmcRcEIzD֕2F򚀱{X/#1 cS$RwkEV$96"KEd0$]&:0FkETcYcYcYcYcYcYcYcYcWX`4vVU+uߐcWX8ۯ=lI 3#bLP^*^l+T7T]K w PE<1/CbcVV%1ӊ}-׮fϪ-3剑}.% HjXˊ$Ɣ†"}1u-r6[^Dc-/1v$݃ ~׸S-o3#t6k iQx(N@ƹۤU@T?6Ryu$ϧ> I)N%ߑuyCc).R ep%0VJgB06K˺S.|Ǡt.k{/߲}iՈ*+X5@Ơyu$`LÐtϘ2(5VԴvNR-8 *)m 7J"RrF+ٸ"}~LyoߡEax=ٲg%ʛAp26YI[cCp-l& >PF5eq[x^y?(yZ0vVʋ ^=K4+[Vӊ(ń"1v=tgt8z+YU=EHn+B6~,ǠD_֨L;[0ϒ"§ B\\:M [G11&dPƿWr6f0@73\7BZrI1[s"1\=K,R[[4>⹶;C(7[9γ jTڛ6  /=k sH@5Թ3ه/nZ:X]9+Ki)JL0׊-ͩE1[cZ1Hm^19J_?ݳBv,4ޅRʪj% 17U1V1g4pg"f5nAqN !c ?ݝǖd6 7b]gL)e__i& 3cU 耋G¨&ϟbz3C35EѶb|R1|vR*.1+W\*9dhx}At*8!`+#QEي'}lkXSWߠsh清'd 7ŭVlVleytRȑۿKEcc ^8 ʹrA(#a@F(!ҭ t)]^B YACkqa#n K^ =7ӧ&1ye~{Ǫ_1 cpL,p 118 cpL,sJ18  186).~FcWozñ"o{GH186~{{r?#Yop p][hA7X9e\*od18&5ؚҟǼ: mdz߼1'o߼ǜfY7od186!~ Fcp^Ku cWWcp 18&8Xcbcp 18&8XN96P8c g)g&`9{BQ|pح%(Jێ)ٴIgnL= \s7>VW2)]6뚱IRp߱ߞK?~smEIYǀ~{op ql`y ,~^{N68Fk1c''β^QTv ~cKV_Cڬ$pp X)eήv y+1@8f%IcNNeݷ_+2oA?/oY!cm$pp 2o\8~qld)=Cp\S~{2v?;closPMp%pq\C~;H9h |cٓg{)1q*ʒ ǀM8 :*y8Xcbc*8ǀXbcp 1 8ǀXbcp [}/)/•N$ :vff␸ 6D"p߱fk~)Vw#a"p pLPѼ*ݠZirl8@a.**gr{3ͽs+yۑc5,TJFcNJNg8Ij׊A<׉4h^ȍNL Ul< =Tdn c(Y% R˾ӑ?#C 7ڷ,H DtziשT0(( 3|O=omN9f)j1XY+aOnx+?(kb&̪l/oySUʙDwt&[,Q|i%}lJK{hCEvzF([-mbЍ(OXQt2j sf126i;bݶ_uW^Hy1=XF #uv>-.wM[ 11`Xcv3t"3(7BT1V{!iX\1ÙcD::鬱j;Lk@fK-f!ګ16QxyS* Ku> #:,JBHb~%@HN+CՋ|C5[*wuU^H%uEUpLN&b$ڽ5Wl1r!brsS#֮%˖d:˝)c L1R4(h5g4=6f7Viɘ/ 4Mg^uKG4WzEUrl}w8&/1"cw>/mqكʂs0 b#"KМ ZBWZMK71#1AZԄP,؃~gLL~(Û;:}uLcpL(cJecBc|c8&8XcbcvqLрc81EGGs9ǸںǸںlߺ7f3ZopL pVmfll~sFMǂpUq7͎74ߜz±ӺTu.Fnܸ1b7GޤptGG}Ei+ȱ{7޿}f7)vHmn7˺:Cؐ[^j9&cz{{t\11DT!mUm4ywt-FoM1蚬woha螝[roij9&c=p4Al<$Ŭ#ZopL pVΔ~sD jyzcbc?~sBMr8&SZSc|c@V㎩^8ƛ*eGCI8ƑV;Fr:\؞c]ǔSֱe5]cı9[׊Q8ƛWhXnnZ1? 8"c3X<;OoN:\ wɱxz)c8.1HF2Bc9ݱL(xsb:Be]]9ݱD$8"c|#U+rc}ɱ#WWX&"O$qln5N*Uj{tlwīTcH{\ızkݏƾFbN:*+cyF_$qL[$9,n4I s"oc_q}~{4-IWl-}^ eU888f?We؀zx:)GjKU߸]j'1>1^~3^o,[7oj#]2q0:'K'w˝oycVMo,Vo;zzUC˦ıaIIpp?co4p9fiX7O_]nU! YôrT:.RuN[7O_zj3olyIl#[ ±aW9pq8\twW!l mc`N%xv*,ܯ~F\X713ƛ{OoC+WU8bb1c1q_h-1~3oly^ѿe[;:  p( mhƕGVr izC9vee*,U8=IajiXxtp ߲~ T؏U8N1 1ǰIk91Dǀ|)8U35Z,1)4Z)Ecj9V*psPu,.kK%rkC#kD q`ra"8F3i׊y*"ݧ;>bQq1;ME΀Xf^%r8 9˿]!l3dܘt&|Hf}; uݎl7ʱvϞflڎ;;q@4rLwncXx$,x&Lf:'iqaY\SyQb_jL6c3\vgӟ *>+צŅe5e[/f̰MxKe6?x<`W8mڐcȟطϟ`A^ek6Ju3 _J6jJsSΞޞg9rLnccpX!c1\kVZco1cXs,\˩l<ұ~bS19a3( =^(kcdQNh8V745\*?.mOcVڴ,)ۂqi؝i;v<;9ܩrl>E1wڱF3 (C8Οvoa=c1 Jk²Қ-~\ump";;*/<>9/Krl{„QNT;<`*yL|Ą,A&䞓yx'<$ 헌˱`#v,/9&c:ҵIXs=oRʚ⡼*\@^D{\}"cl$Վ"c?#9]M|(&*bs/D vFp`#vL^Gr RN-B ŲG-yx q :F9F>(' UAŲG+Q=r V]&Đߥ"j8I OkFȱk6kBȱkӇH|*lsc509kFtwlBU(yc]XFX3c'3NW^ڊܭuL5x!^ ?63,?%|Lf;Y/9?+[ \1g 1d3'ca)sNll? ^\W8E7ϳtq-TiK/-'%c4TݻojX,rJc6_e ~*[trśX>tRǠG:12H]cD۽ɯgN֍a^nYr`s%;Vc%I:Ӌw9ku/٬±1e`yrѱ}p Aǎ 飛N±u,ʔ{c~ٯgN9r4zpAvz~_Ҝz3 nc(3%s½70Lg1wkq}lj7]t_-޾onig}|_ H_`[~&+?K<sѢT9$NE…>w;|!F9^'8WA=Nrc=֙2б{h㘝 4Aݮrr##c!1X$LjCu;&2S6m6o6x!1򨭀'j6ָ'8Wu)s|x[w|8+r?!\XPX_Eڡ2_X48)g͍P:ͼ(wSv 8Jԉw|x|^>ܡPNF<)9l͚+8R:ʇ:ur0c{-yL"!Í@N^QnSMb>N>ᰎ:9F1$ǂzLv ?aFRFX6ȷپ)72R?Esxv3)mMdKM8bcDՍJ9"lT{ٚU;{|ñ_''v\-ǿ*嶶b0ncm_zE=PnT:oyU;6;>Wg-}D1 cA %/r n_A9FNa$v;+ğ9FB!01 wx9CIENDB`awf-extended-2.9.0/images/gtk2-rtl.png000066400000000000000000001501111477403510000175160ustar00rootroot00000000000000PNG  IHDRcZPLTEGpL¶ӫɹͿ̿߉\HocXԼћdL݌]I\Hˍ^IȹڗbLaKwޏ_JµyiZGcL[H]E;~fMʿiL?ij̽ŵؕbKeMmPF71˿ǼɾZD:_IŹւXF;ʻ`J~WEƷ}877100-,+#"")('ǿŽyvsaJüFDBَrpm~|yȃ~JGFVUSԟRPN=<;YXWMLJlifM<4A@?ˎrhda`]ZbJ?ϿsQBɼba`ydV6NY乹iTInYԬ}g|}j]c3{r7'NlQ(9hJu-Zɉyr2CqGRܴ`kP $.SytEqk'^W6h,d@=2ޓc`42PYw%߆gOuI$8=H.lm DmrWɈBXlx1t\j p܀@njag@ur,}i ds-N_pYؓ}slFe2.o>}>Qͱ :ɋ;sϓ;:g-7$< 㢴N/:iT@JBQ+bO&t29st.OKb9d8~.p!CO rHUQͱ̨-&X-:ԱZ$s\0ӎRn7Nq ,Z)=.5"$$hL 7~S(V i`L Yd 2DSmHand;rI^)7Kq{lINsM):Ɂ=m{.G2h=xV/Gk:Utl8\]u(k|䂎.,NsdGqVZ $Ǹd(Ó kJ, I(M&#ss!OXK4q696?8g'@kkJѱ;8V N8A2P _fIeE|DG+ Mw6'Yvqt:'kUIn\2{fQd$GtV[c^FDTqN**3R9K9'ػK;超% rAsԱjyyHp?47&  ȊX6! v"MSY(-3e#¥ˆT' ,RL q=#F'fU{htu+r[6-&Pi~z8zRBLj#s@r$g1y..V1Gmc+w9X޸N$:M#bye61Mjyj8\bm]d(%U.(:8tk;,GQw-i听*hkgwBJP`Gw!hcdV9:@VC؉>%1}coL28t}$߾|yNzB:NFmT*8;VsI4Z7ke:'@̢ 5Q*+EV8xJK1piiD`ii{gU!e2*A_wKg _iK4iirݬ8Ɇ9:@VC n!2.4t@[Jb0yJYRHJ'imT+dc}U=r2 ۀr%uM FǞ@V8xX;1 јL[ / (1ئ X>G-Z T*dǷZNt+itbzt}d} r%yM T A-f',v[Hyif<&@~Hm1: 2nףRsRlJ큏iKtY25P0xhorZyM бv yx핗`\QuL4?M+Dy}nX[BkeP)j`]T*tv {Uf@nztT3c$cp{kT0:gO?u/:V ZWU ,櫎= ,櫎 @ul C:ձ!R TǞC SUKUc+t )ese?')UNn3lҺG_cHxڵO6^߬uez]Hx]pt4'¿)>O~:1W2oűw9訒!Ń8؛2rwe8+Ync`J^f1ظfo?YSj|)9Hh'e^ ?feظ&Ȩjj{T$S?;uImDY|9)pl.ŰMolymʰ2Ml\c{j\,qBgbCYx!v`BQj._):3|D1A3k6/l6sHFۺ rkN Bd qa34}!ıMx`BRj.zBuK/g~sL@!3iC?Pl؛ň][L#'Ml\`\`zHd2 1pX|*lňc/L}!uHXB;9vd ! 2!?4Kr ncİ峟~e 8菙bѩq,nzXlql}gXI(`1PaI/.cȢdL1)c[˷~~ehloFgޛ0oeq4:3%L$aUX%hUѫR!;ߍ,٭36[u >bgxr*=Jw͋M)h8.n25e,>dH5FϝuHXP(2 ‹KzL7FBzbW$xAYSSe/:&SŶ_Ջo/-t,'J5fq c6?vnTFB꿗Yͱ.uot,q&C "+u==("^+&"y۱1!c,۷co͟?ױgO?Kw}/c쎵t);cܔ ;ñ@T UHl3F1>Dj3&v*7δߺu7ooJƴ O4 VjsZz@1}GsLMD*9cXO ?bv1s,;j|vq#[U<)c;ah77n޼q7zj>)5<{_Ų" ip8KRW-] Ա?ccwAQi/'##H`d0Z "EK m)F K/AacԊ2Q(llͺ?sWun{>44Hgf{~韟~;4 Y7`*9\́-o֭YYY5;ve||_vi˿?z1c4ŌSpcFX1c|'&aǢnei8 qm}}7DŽG3J(vAGFROuIN^pm߾]VlX 1외3=0`"/3'/8w{A?b@UFcM~b~UhF .5Is03PŒWʰLq/H8/ߎTWPWW (i}[Ă=`ѣ8plrA1qw =ձ_oIZ$xyW_FGXwFU[U :2 dVet+ffTDzFn}\5Tݐ1c[cyԞCOsD^-;C={6Jdf tugY `WwP)Hn@ 8e #?ZPH18&*6dO i݇y{Q``,otr mwz342hІc~ŋǎGm8v 흯zuE1aQ[+#2~ dtڒ%KU;=:V9eȪ[';q^y\o_S=997ԧw2T#2Cv1W.󠣄Djffe̴n7 H22:^l|]QdP0?0Ipo[#Ygd>~ |OpwrPψ1CRB_Us 5)|ҸE%뛅tHlYֲeh/; 9LVXX uѿпu*Gn?F9LKHVg`?>:J٤8&,2nc95p,uE 1@u,J'XaZZ0B3Z'(cӛLh7s,OԱ(#cMvL !i\d%:%|U􌿔XKģ9(Q8S\?|42D4Ǟ%J8Ph=k0"m"m~tDDEDDEDDEDDEDDEDDEDDEDDEDDEXJV㫁dp#נnKc2ۑ:Hw; k?"V0Z߬мG0M׶c_.dLhY2iK`O_zqucB1dZ)TTBB!`*r1ʹ̱&ܻ6\\coj*c„?!l3'p1A_9{ϙY*9Vb-Yȇab.Tx(aQ0p%+-sgv(.^\c޽{HUk35+A[[YTfK0ǽ|~TbAx&~0bc8& ;b\^\b #Z3lR], #Ixf Ԗ9XzQ)cGV͘2XՆP`}RϔbE8;9'~>X- ^B{MY_JM dD i MB*)\kAbτ@ǐ`O-{u[K˪ף\Ve cH9MҬRғO1>fn9e#g9VA>cXd 8!KPb-C8F kWTedPDul@v ׍ku¸J8&lLP6 nxf)FƠbEc7X2v,..nckggZSz qD-d8ZĪ7 '_D3V $Gw܂d/+T;˹7HM &%.k魚FѪ d̦W-!c A $K,* ߮{iUVvThcǛCd0h +iǠVaSGI>m Vhqh[ȱfK&`6j/,B oM2$SÙ:杒Ŭ +f "LHFBq *#`K5sLw*RsXeOP+\YVie+h~(27a`XNbl CŤăBd, %ajt 4WLBh1롋W֮zYpjHQf2<b8.+}htbt?w.cVAg^U1Xӧ]|<1܃ꋱcA U2l [;pZV]zmQ Ǜ1TŦ9bDR S;xp{ݻ=KTĦZ&22,c&:rWۯ޸} ܊B'0F^79<:𥀾}?-Z.@nwNu|]is4,IKyhK|^gb,5\s;=X-}:]SíqQzƁf ,lY]>Q`s 5?#(piSb',#òB| ohW^tmٌӴ͛ Q@.ڙ]5e,@r Aţn,@4N^xI|yTqhŚa%xzô#*f:V΀N:Fo\XN<3ÇaxO}4ǗϜpH eg?8;޿`xu0YV _߻=O--< y( =znXXL;iTɴ Cq 3 7khy+x#>[bM`_YRNףxyNpw4nǎY{/q<.xcvvpvwۓdqvr.#]+G6*Nj![+K)ɤiVz|6gD#9&iG|D{Δu G%_Cg}vrFԣԱd e tQ2F=tёeG>/+;Ůn՟So/]T^@>Ja:x̉nadl+fPV_D<>" b ct&[y ׾|||PxyX>vs9?;`I-GΝw7i ZWt#$jNqlUK9$4ar糉/)_Č$'9+ȃ1Xyog{(LOcl(;W%3XȎ|=T`3q*$ v& հv;ZJ!`ŀx{\WOuֳkW zOww]³'Q|* QL2y<1~ӧt]bv VeI*Q=QIP[ ,\NT;Qr ʽ1C3Qfw-L&WRT_nR,2cjz)L+rPٱoMecY=%bbc "=*i+Ez;{OqaH$K헜򰖨zd#CE/[8dDR 6qC-\\thY,Q%>v>&/٫h(Ln ssÏu>=87! #v%'ۅ( b9 r5TZIVz"%"Th\'F 7)Xa#\R@!Wy |: ȶùADF.UKP ucpiDZ޲M\#'H0 zbRVcҫyL9~:Y/[dVⱁbY4ޓ%E4BO0 Q21n2, :h>^&- U'N5v #FM盔]u5p@(V/R-̱\) CGvlՉX  5 `a]?vpbAa.R%q p}5 QCXr1`,C\KB=!Y.[dA=scTMutuiqfD;T$@q8b4Kl$%R1w̒(nmlj]yi;V|7lWdjMV0j , . 1)D)dVL:&]tӌIL0&5XLTKVa್4>p` os*,sf/ $ugRE}bV\}x? 2~dEH!HH2"-]_AFձ8M'+Nvbi4A21JaJhCJF3WNIM/8+j89T)r? <]8(c YeԱH!X :%('4"6 ϝmM&#m~f9;۹u[wBUAPǾG*o&|45MMΗGr5 ef1!9ecÇ!R&~ ԊnvxxISׄhOtUc3ca}JV8p-6ܗ5tv~0q<1cylo2qlv2vKvw JGcFft* 43<啺0=c6%$>)z~OMV9(㖃'rFP1zclW1vR0cuJGw_c8>VEhOS )\ ZO|t0̱ԬYǿፗx|b@~㞨ՕAHZ?H6c7ne26%eccS6[ٜj֒2cJkjzRht:&ohitVYHstc&(◷ȋu^f>cP,z5:E8Qbf8;,шc) Xѐ&n%o[k} jkݒ]w6c50wly>k {)W2ׯ/'ݻXEhI#mϑc䱙H[hhqnJo<'g3^p[tעIE)VSV hU㨶&P"]9%1(Fpp{r؜;&@FQDl5R"|-N`@#7CSBg~)p "^j(Nf꽣bέvѫOl6 PW6g7'g/>l9 OUZ CegB1U2%[FI3$ԇ+aX1* :FQ̒~WbŸVddUZ=4-]ґRv~`W.a(B+h'cd=Rp(gcʐu~ /cQ& <+SD,TT6"~"+@yo1n9P/nX cBd " MIsqEA"eXAuP˚ q(SX=A>[UUU51\[esFgRWdxr3Ǣ}ʼn18ƣ]Ḯg_J ^2 cd9ǬR67K%|OP$.65%053wZ/ 8qZ|yN1ze#׉(DQ(4 \ mNE-w/ 1 IG-'j SZ[bf>_W/ F:E27!5NYZ XwxsRu|oc9%C"eHD9V0QOܶ4qǼ^/+1LL5eœ HM6e9P 0NM6l8Vp9 c^6WZȨS; H0Y2p ?ajJird1_z][+[$Ӌ[7!/|yvy"4 Jx޼{7Zs&*Aiӣ퀖d+zE7Xl|"X,իi0{7xT{l|o]ht܄ϓFmDHjC$uh='@Q̲z+p rTNZ+Ў⧲ : rk^:W8Bd7 H371/ VcԡY<)nzvyl3*Fqf]h{S%dE2$|UI }jWDՇT`A4t\?X-@.(H~w\N3rnba[ (gYCAp [H±|O|pg8vÝsNxf d(AO)Гd8" /ei`0"~I&bZݫOɾ yC{#j#yyCԝ6q^IEVsgֱi6pkBhǒH0ƞ\*PMlԲXDwlMm7ex`(;sW{(ɧ-;y "Q"esɳ#aP0-QTZPHBcۄ:=DM`[C4,MX/oBXB4cuz-w1QJe<6N胬'=|Aؽ+sl,R.^]KDJa{SK5~2k2k%æc.3:ѧyn[}}{F1>hMshܛ5|ۊ?ܿ?xy9,%j$>L 2v,ϓLC̸TDZcrctqױy7NwwŃg^zcͅW|]m߆=Y-߳lcٞc5߰q\KAdt_ã3NJZ? ؽ3t`<`<رM!C5fks^oHCDz6=|S?9tyұϴ{ӁXpNX/ ;~߾{|I3We-"gnm,dCYp,xto3ty|m'B~>ֈ?/ q_37 *V<ƆB1|#Y^c\ÙԘ8E״0suK/+;,ߥyt]֣/{ުR-3`PtX)Ȓ!+w-uGTʲ2b_sgZyB}dCFY~4Q$c }9񫣋y,VGԜ pqKcT8~lkv v&syB}/MA5ky,]j?bǠ2l?%K74(ƾ),,q'%ğ-VW#ٙX8$qlSЎY"&9N@!w$]LY,8oߔq,XxM[!xɉ>Ә>x-UMU:iغYXcLD'v;3(.=(rK% T+TyT9K%c S?<.Y6jγ:k3[g-[RU1\#mPaV(J"3xAq(FԃZEmZBr{ o_aB9lF0}CO&[l6fk$Ǯcc1,#*AF}BBAŏ5XQ.t1߰ ݽ eԋ}22oΜ9x tJ2-EF9wryMF?~d+dMp}Lc[ݚ1@W.3Lc0ЉxF$HrI$ \1kiD NXmcΡCTTT)[=}<U~I$h%QURS#G..>sW $v*H8xfcmF;ұBGG$~σ3%QF!#+/,`#Z=xwӂɄfi2-cҰNS`2wϯ<}Ķ1욝Kǘ@Lj$Ǣ6W61i:F(cu+ ӂBJ^;5@$+Vly{#2Ou_cxoRD(l1$ XxYv`w`sTڂ7b;U-Zm7ŹA眊Zzi"6oA8mF8&,Kıq clcUVLdU  *Ew&;m,DJlČ|F-s7>c߃8dB)8 iF/Ζ^' _ ӃbgJPI8 ?nz/5[Z cT: dct^^a$/#98v֭kp |.{?mϛwA39;cc]TF؎wb߶l[6AX1(~R۫vh/GGjJZ"ֿ ~63kv,-Sev=p }fUW'‹o)V~ػ&NA^3]XbAh:~yllYD N+sei/?h2̥R9)ۏ9qcwFufk?hʳhhlnbݒxݮYNEi״?ñ>ՐcFB]۟]oCTB(ƒ pʽǧLaeR4eR;tiwqk잽{O}ᷙzä^l&E#'Ϟ\:+@2m" ol dнHI tUzV^n!2t8^حyѝNxRq"~|ܽbYڍ\O/bb9 m[Xұ͛?#Pr`WsOsU6sLn=2f(ѬNEӹfdGw}}wdLtݽn#|Fg#cepMa[p3wg&k̪Y(Q,4 \ᖤo}rעy=zef?fhxOy0~l>npZv; ڡ=D9ݍ1sefo p ]k\凉\}W~ѻ;qjLc عgc9d3V,-Gzc-J2x Dϴ;g`c)*;$MD80B@ly,]) dQHS0;%"l&@\ 9yo^8hI2 q|㱋Lo#GΜ4 ?i:u7Vݔ"#AvD0ٮr7?`k xn//9O36 P" iTm;7{'g#Oy' zKv;oW*HF1{۾~e\#bYµdOeT<07׌r?$LV4; {n?||<`!]o/MME[o4t'v!No1Zv5&l{W߰qzK?ܱj"uҵXNN{LFԠR'܋ d@+jS >_ϞE@5]b* /|f$SD q AE((e[ʙK^ z|a{mVc ,++3;sU8O'{Rlzr8ej?8ZXX}k8vw;$"A74`7EX8qPƺI88'Ug'I!fZIdؒnqr1=#1ߥ<5\X~RZ(j|K5w,q XG+:Q^۱Cg!L\!v|q!~,SXKgb51clY㖬:68kiiyp/tw-[H߈R9wr3])kUD+,#q)8Q+NߏM}WcK˒%![1^bt,X j \1^"ul1@86Y ^:5 B9qE􈉜ccD5EαIe:?WqfcU_8yLO4ǻ7:67&y[Ž-O>'n?1HFm#4Npys#MǦ:8ofY٪@f-ovn+ VaB8քslI ȜQ΍~c|b^ދwWLXffɦ$˦cmnE-+ÂX|cb1bEWʡjIT踈_>r`cD3Ã)XB{IʣK9L?W#<2=p ^u#_`o5yE( D4S)qpXWOB\VdG588& &!Ytc~tSZfTxsbޖGVE`s#Fq: X{a-4mxx%_4%BOVȒEJ*D+Hp,:qYVyL+#^]J<&2Hwldowcl 5X1(_ƺ6E'Fdeg==ΈILx8vxLn.&AFcuk#W=SO)<4llޓWb d:JSs%`TpWe[2}]羮xؽ3Ocovn|]/W^dUZ=4E%]ܑ]iʅqH0d=RpaI װ,.|nJtmYVͦw|ZN;n tj]]r^+x^;:a8FapoظT|Nҍ'ݗ|}Ǯw*ϟ{C8vp ύ$1{aۗIHh*PGDD"ܸi8i.dƒE8ߏSer*-'ȧf\"׋YZ+_Ԍ =h߅? ?9^/ #M|4C-U~m6~njcqc,* OmK!MYXUqUc(Ǹv ύD{(hSP]J rEAn ¦jtN/g820Ct$`"ϨT^Kцrb7I/p@z=}D+(ɜX#Ä =!(]ɚaUxªN|-Ǯ=d:2VΖU̖U0,x>13W~_C m}EXX+86zbßjq^Z<0A-K΁JQհph:aÁ ϱnx'8~.MtZȨS; H0X2"s fIPR*q1f@.E)rFJ4si>;=JX$qpRD:r gBPxT[)q컫]X#M2Wj q_37&*68'|l_^nk`p;O$VŲzS$ EܪVlmlnI@@6"Z![:䞓t 2\ˇj:p9܈ Tر7+JcԴ&z4X p ̧еqF?I;Xy}ᒦ0ifo{,5!5>z'l[p,0 28`6%.I?)ő "NdPjj>Xv.Y0haC沛L-9&WKyrHtr`RqE **Ztb vpB*3q,Y|' D g_pFf6 TKtm&Yڴ]8`.}8#>eni0xkis~ 8|M \U4G}Q+9}E[k_5ihemGcoj+g=z ;E$g zѮI "8fgؼV&)])*n5aAb2/ 4^S2׿?hUlc] Z*PmgAJnX&GN%L.!يj@F n D Cw-ru%od bb ܍\](`LxDŽ3 9]i(h1=%Ϝ.׻ kD d?oSK[e{M]ȁe]ϱѐ% ǀt#̌SQ:xF46xaxN5 :P:ߛ.,RĊ10Tc( _(R)[g(=bF/㼦c,b @3q,h\4"qStdQ$׷ ~rI6Vtg3o1apdQJxn J2X!R㱼);{}ij=ӣ;35 S3@H5ᆙoʱpmd 8cr"Y`b%<¦{Fk[記&UiynT(--+>~儎/} DN Sea>G-^3>f1aDFcA>w,kܼNb,`8$mbagY,(q2hc:CeOX,َf'B7,c;gG}~iߨ14obX _ ü2ȱ1tp 1d5[ ˝Z;v?[8v gVxFr5X ~GOvƫc}w +c̥W"-XoU86'dr* %(븯8V]S8RiJK1UCA. ؆Ǣv;Ec7[ѱr?L |@VKcgw\55.#R@2#rT O;W9ڱ$]SñQZѱbS"fuX¼Ib%ݕ/Pb8?&+֏/)e,Xޑ'wxP3OFz/W+ʕf"Jd;&nc8&w Ql-T1*X_v19&d)3ŕ*3Kc7a>j"1' j&1#8*b 'cPXiYdnj>þ2c}l8V%?ӚVgZ2y߰cP ;a k[4֭J{ìŲȎS˱ !se$1O39$YdqЌH4̑cY1ySzxJk隸uDX)ca4 s /&+(r1H&jrs)ͤ9E4!vf",8cOÜ\r}s\RY<@hq,57#56ү&wK$[1U9ŠA\RL: 0E#ݪcrS"X|)fe8YƱD;8F9 d$elP,yqB&,%DǸQ?zuH'ChF%vhA\ZHFt_ WshSбRK$ǖ\ɚIπ ђT/le9& yx?Ous*G1݄y"RgL,sdoaqlnǞ񉉉q~y*oЎ|zj-ֈ@4%1]A~_˰ȓ'>V[ǛGH1dj{ysGpþ~.u^}oym'k˕+ov s~BؔqLc4e9s|gˤiմ9泫@k2_:6Ӎcq8^dn)Fޮ)LikŚq ]u+V<:N:@\8Vd`>cpWhJbB;=?u-yYk`=${q,s)t̃o=bɱc#g)Y%ĸEK5"+}\yZU) hMT/efճ݂O_Nk o=4 w?~?1̌a+$c1XƚHdZ;6W$6nۆ"9w~o9O0z(k3u[ҕc\L#'nUc-H?VX* %h 8[&u4 |8H2Rlz96m̎x,q5rMmPyLNJ-Mw Mo,brjmf14pf6>La<w˦qKgҝ쥯V!se$1Z9z:7_Zփv̠K{q4gKdR*M7&kD"59&(Iо6sIwWNs]>u9Tˊ wL͍ՍYƱ71Zt@h&*BGQz; Uj^B?:iӦ9SϷp=H4),J\_ ; 6ҥ4q9Vn縣3>Xɪǂh Ѿ}Z oa5|5 džx,CQ:<񫸸8 zݼRX `,gO1g|y{O}ɶ.hPU41JgcVv"U&.Ǯ5:qM&~+T&t_Ɏmw +bcciXľ`쎱`N[n/z#ÕVy~?:m*bhXPZ(18SmP{R$948c"~}8fo4 X#9ƹ߰pj(O648c/qň4bw@X=xh[u~ uk䈛cxg޼⡎wͻf2C;mF=KRI[˩Ql"rhxt˄"TeA8|ڹBҩpw_aWR( (Y0c~ު֥:p"^cs9ӯXGy\m;JJD0s4ׂU_p }uP]gmn aB0 YFt,"u)OƱ?H]ݱJN ߡr%"cv* tzb Kظ&wp?޾`Uz7XO`Sؠ_2b;u@c%bwiiF)X`RL@4 Z{T]fs3Zr|{-u&;Y\.n;tܷqdϐ5#1W{'v`c:}LSi Z`Q)]r2_* KȬ.n"xuNJ)V.T /QʰD $&8)Ҟ9=<9OO/:c 1gYOr֓4Mp ˆj`ݰrki~l&m):-"ص^8ϝ 6Ij*?l9c1qV3<Gll:Ԓ0u.G/$z2cYE~۟l}8cFc1)pˉb$jn7͠g..URV/ "b?G$a\w<@wLn!}@=6 (c59X7qD:B0D)bkaq"r)vM1a|7 }o81Gtcmܱˈa>u('z'}`Y?+Zawc26`{V1![cdF1c0> D 1m1 юac,ZKsq]g<A˰gL >-cF8&cnx4P`$~Oӯx(dбcSIl'7HeX4mvǀy 0cD^t\Nac%a{*v(uuI8lg0ٯWHLB-uRACv=ǂNpXU\8v;h~Ecg_}˳6oh-Y,pL_Ƕbcn?yϟ|Vaz:ۜ{U8g4A s1ڱV35yyE}cAli$ 9vSڎ!Ϭ9\|3wq)0c ˥ǥr1go57O]>?_2 Gt*߽[880w=8IŲ1سOZ/N9c&&ǯysAbc$%vKŲ1ؓOJk)8C5tYC }=6Ǒ|\;1ir-=`74bO j56[?Hǖrkw:4Z;ka.quCIY)ǁ LL=9_L^OoSa$hBX_KJ 1Ąvrlv|l\r@pv8}:7իws$ڻ( FǏG1.tXg3LkKx21qo{OM0cx_˃W;8̫Wp;9Vt  $;J GIIT:%s12[29v# 䏍1sLLLx3͐ZUc{gm㘳ulPr% IIAKJ'h- M~1T4A~8ZWPPuJK}d3qdMY=ӎ̯7qs3š1ƻg8Տ&=zzu ;,>+gxPxP}QojhhUq_}w ?ݪxE$̬c d͏u[xEC( A㘜y5j9dle:$CǬ}[C#ȿ̬gr+ Age "2^b.7ϗ/Bth1p qVѾh/ZWY=4㘓mNނqё}TiKcJ1{iɃ2)8<(?"r} 1<Őt L5cK{"*_Nq+\KKtc*?fcr\$e_]uf .$:7&nQ{3%bP叽Fb)!@z?X?F@0*h1@ZaPqK5Wh`|AHHcSb+:f?UmQ/`B"7FH e2ǭuL:+߀~}[atL.V$Y?8N=CpDH812CDaXy9>2|~Ղ< EyU)Ǭu?,\n~*D 1_ny2u]M.4QTcSICU:Fg\c0h*93(4"o$03URQTjHٖBeجp|uaz aQNVRӱ-H1-O @ qSҒYؕ?R9c VS 81:eJfcU(_q\ E"DD ?aEXx:BX['}~jf8,AVWk7p:V>]!CAs1m1,489&H"DXBˉLYXeJ@*a,u [B)mc. A(_1JHfeıTswҢWlql;b'~.cA̔)AAǥ? ˆV/|ࡣIp =clF93 |GuaŃ_~?B_;(I涰s,{F 's]\ :Ό9F7r#x+k=sf\1qGv1Ùq1QqȔca7=/%ӛ\Aydž{wkiã?<8r"87UCEq%Wضm>8;R koc.c!?&cq`j?ulH3t꘿gaX*zǂaҟEmR8k75kfר/{[1\tUx(F}lhV}Ac" ˃&_= VߗL=Zq\yAv~xjGqnPcR }Xcb d|1@6o:aT0_K$ 'cF 46tFiڨ?I[NSNdچ05--O9  ؃5\90_"`cbqXf#~l62DŽ^EmA4'Q+I,]fA1ô>,q*W˴c HqbP.f5c˰c)3p;V]ewǒV,]vټf Mr X}%~~Q_< twU*mPfF9o hc8ȱ'IļdNR9=\ zTêz]T@ws r4!||2K3IO= )b$aHB&-]/GcշX?pL~~~M?HgGScRu,5~#hff}q&>rʕD&'nmeeTj^z+*1ن>ӏE ~Gsm@dO"F H$w͢F,$P"(ֺ2a|H*M(0 zhx$]|Ffls~'y-[P$Nْ7*zT-ݗ4T]t:2aeeaL("Y,% 03#:)'Ba_^O%iffef b!xB c6x1LNR+m>tݸql-(q| 2lj*Xol@#23/Л9j vB0A\F<6h4L:PU gx+Rk?`ؕh>VX}zmڲ޺1롘!ñg:tE-a>/ap{ }1PX3, /ATãWl~ Z> _mAu,"7+b7ܬ*&m7QW/uNdR#5@aGd3C 4ahᖩ,(#CG5b@<-L?/&= /e&mv}Vw|Ecxlju,acZ"gD4cA5cɚ(6!"PS:믾&T2xxޭX/Wm1eB(;XQŽ\9DlȞV;g E#wG@,܈o9s-@G[y9"zwoSdYp)í+R sqNJaH&k4M ^4^ċQ&[$CsMMhmzz'OdiKedu4&NyM}Ʉd>?\%ɚP U@ Q7~ Ke5'kr?gNB)v@o9=_KӾ99糕A֎? BOC0e? ScC8}}7 ]Tq|Ekt}cyօ?1腼v'+1& AGѭYwUt`9q@Eza1h>m cU3J z{mBm c۪~co.T.P';{Yѷ- vyG;Cr~xk_yE3@}mvgVsr;%5ˍ3;1YAc<_dآ< x+uz``maLjWJGWHg,xC|xq|\c _F"2IXאL|*:~z,Jھh%D% e%jaHɌA^7t JkUΘt $勱CbŢSCƦx<=Wk('T;&@#2V.XUmD/fD+i1Bu #©͜M7^"4ynwJ%`šv14H`1ycL2kdʼaf=V Ĭ6*ÚʲJ>j9M㓒ҶgP&:RJ:;:_bzΘFt޽:jlxe3n@ s^WB*2>a@L[~Q/<2|kdhșGD,?C,Y7acW|.fle^QD.cACï>$)bqQ:RJ"FcEsd "*`l|ldt1`c(E0! !j+- MYs€޿,]LgJ֌2 凱J]"vgeA $?=YcFWi9 y$`F:2<,{_JvbY1ƌ}O0b-&0Uj7ִFLӣQ8|oQ$ObK*gj]5N[Wb s 1\,?- 鐁1?Y2{?^H>-"Eۊ5iivIʍŌhe=Ɣɚ$Mko6=K!Wl>s9ܬ1?],jh1v3&L6ku%3_"S413ok߿]^.iM?}:=tIZ\v رJc0:O@~pǖ0 5" Ōh% cv1!w =F1-a|ՆujC j⃳44BIu<(U%t (;f' 9t|f̑F+KDޒ\R"cflM2h LWc$㗩am|l~shO+SC̪J9<[^}W8 jH0V2; dJTdV r*ClR݁a%IB( $hk5cJ@ViGA,>@qK/5W2 %[,eZ?"}&W1\urrYβWT8_ѐb\fbY1&v MGB i]5.p\ U*%AP=(Wa7Ƙ(g웲}yf ; {XbqwV @pix!ؐ*]ySYG!1cΞ[֕9IX*.v8D6U"a1:bR.M Śpl8 }E fmY?1=E8h덇צGZ[a)>ԊFvӃS Eby ^lNɪv ΓϺ秕4}ceO' 1 R-a.cm~Ml(K=a%hE0RhI0U ;T:b4{66͏a2ReD iE X&{WmujJ^MYv bc}]\A4s6s0W6φC!t'PpC=ӆRQ3v8yoǣXfPn4Ј5EF@4Zm ?\یfqȢ *?a?}'0"|`cTIsR]l6'p+e֬XiL5VXS 8` ho3fZ1ːϲ2tM!F,"s 1&`!TQ*$ Y33pZf"z\ J] /,s^`lalW&LJO+\3́bXc` Au &0Ҩz9yC1&3fϠ.\A4U&%i(tuܴ[+6GOhEح+&[neŸV21D8[4 c'p]\Fجa=Q4vtHWt@K3^))05W={^ȘK %o?e1#Zـ1.@FBVˆT1.}5UqiXpKeL=|^Maݴek\}s}z(|uoExg}}o#fOCQuoG ϧ H#XNIXU3'gPU1ˬtڠ{1Dn3 ɇ^ZN&`yg|_|]f쟸ڎ]~03ofi37y+FogQVDi[U|EZo}+gDu>77һ+ז4]=p/{RczKyVcޗF#2'Zt/: 1JW~>mk,L^/)yTi5@ν(oocsV>Q~m>~(yEfȘf~̿gޤ{~_Z;"?\sנw]n1#>Gyrc hPFǴq5}e:^}2ܫd~~P[`̐O(#gL,kqUEbk-țR*M^|FIXjƠ/@N~ &{B4??Xd-$C+qw@`7c_VےNV`li-z?pKxAȽ$ הok)q;+qw@Yrlug̗[zyƴ3Ws{RɸFOaUvjlrhu_*Ƙ; nb)obc_c]IXhGu!nϚ`n37anl 6a<7ՊE6ޖcHX*8O:'=z/]7Wpܪ'H둔drBW̛TSըjB9nfyc1 v& Sb&$B)(.+nϔcz1G{1EFĊDW4 f"L2t0gd T [`|}Jcx&أ>n70y<%117aey홲!c,{ԗ2a7\}\ JL` NnfD&/LT dLX3B֞94;_ZRS(.SXXŽ9=p;{1u+\^<ޠ36o$jlxe3n@ s^Wgfx 1F ; 2|kd44W3Y5 10_Qv9 pN06>a6J 2^01"Q B5z,ݙ_*3`kߌH|Y3s +ر cƾ'lo1Uc 5kZjvktf$?8|oQ$aX˜tg1X.3l]'m2@sM~tLO^`'`eGN0=A@b4jCQ,\n̥@sƘ|wccwM;pVXD )Θ&Z]:cȎŧȁTM~vyLO'.3SK ܎0WcvZ_n?F"iL^]aҧw+ jRvr1ۉdK&BUҡʊH5R,5R!ݴ@U(ڤY+MBV*Ѫ@|s?9>~= LOxn a  iۇ1 yh8a@g騿lxcA,4B1Ͼ}].^IdvٿUǯXsC^CGpߩ4R<<`ƼT}lg=5:&H|\8+LO2f1c.P1_ӑ DT[VZK_8cvCJ?<V Riнj"Nr^Ʊl>0il2) b/&UA߼EV[9Pqj#1V]iYĀ[j`lS{w҆5CuL<:_ i5Z6xo7ؘ@R{1qNXC>[ CMr$LzMIU al%Ȁ OG[\[΂K3*3<K %M)3XηT !{oHʜ[#oI6I!Q@F1Y]=a:zy~~̥ 16jמq,{ <%T{5]}W_ ^.q)#qlYQnZJ# Ř0$ KIUI&+^g)2{L>Wjiו9G䥺>yH~^&daUL2U lgig{ET/|yʙF(Ƅ &YX’*$3Jkr$(>Su%c=yKdG^71/ʎ&,,Uԙdc_4Z1GȎTޟKey^*4B6eL`eekUWI&I'cM cT ו9G6e}_VKHZ3M0dW|w𧟫J2DMz֟ IVd̑=!/r Y5Bi}X},[ 6ϴ2X T^厶}w|;%/?qdlƱZpZ"X3{;SKp(4y /gb;¶}O3YCqdl{K5WcSn]I_S0]OLw iIU9Nu'S| jFJY1CfSMK$N&,8CL<6T2GqQ̩^Ʀ:Pƈ?SmFcɘ1cdL)7)"/>8Y_T6 Mس^8Q<csi1NԜ8&[l InR E^>?/MXpd 9xƼFx8zII5j7,+|10iIS&ҳg 5"s7y=ʿWǓƷV`O1FӽhR?)}պ̽by^q'VI{Lc4D#K˜jiXjAd08W~m&8cbnR`wD'ifo7<]4D#3>71gȈ;+٩mkLN匉^IaFWLM.I٩XlKg )w8JJ[CzNoo'[6a?*]GE!BYS;ųk*pś^wENj>ՎTd#ߠ::%c%/wwhbLXR$͖bxdf}&U'M>09cՌg Q_2V?PgSS'n-pU6:I~̷Ϥd'S5}&g̠qLXRS$cԇN;#33~#]5 $r7NRS$cƒ4ׇu(Njw3%c(8ƸkNEfgRu8FAy8(9?E2\N̳Ϥd :ǠayR>֟"65'?LlRd>3:WUtA5ƹ|XrZa ?ӭ9?20IZ1Gi1L9B2/mYirZlK,E^*0/2*+u9G祊@T8/UKZuͦ>Xi=n#i+]Z:awf䥚=>Kp􅧆d spf&(w9Eli)bi;l1B7|Sb ݣf=9s֫OZ*on|ُd5#/U~aqcnp?r? 4<6{LEg/10"X}&k;d9b.& n8#qb E'ͪku:Υyc0;/$;4#/ս}TܼT 3uGM|J&X{̦K32=1pF{Vw\ZJ7?O4`s4\LS$,c6E拗߄32Q{ 7c<>+vN3z,e>׼ڊw6wNWTŎ6'~ z";h[B3|TTv0=SjTCs>)RMyH5=1磚[^*PTOjycG5ER)RMyH5=1磚"ǜjTCs>)RMyH5=1磚"ǜjTCs>)RMyH5=1磚"ǜjTAXJcw0s$"Ay CCSkfe v<]Hz<b.<^.Wo^P f}І kfnIUk|nך}2XԊO}1+&,h~3-hf<鲷Qa1x>,f v<]Gb".$(кsmЊA?cAi=%v,ܔ.&k+ܛh[XY }t7;ɍCtw}0 '7AO}4N`Ɖ[WoəON³4njb\k d Y4Ȣ1@h Ec,d 29AfXXXXXX Y4Ȣ1@h Ec,d Y4Ȋ5;9`]cKWQd6sҺ8w뇙O:F/D;.^^8Nxz'=81D=}QXW=mtwб.<&eJU eOa|pکHt#U&G-W~KL|? HTMYBxtlSSmF73d&:S&b%6]^ƿ~׾B[ K:vA;M0XcDcWĠ&:&/:؂@=mԂ !ЮJRU,(NDwW-?G_Ez_VݔQtWбNǖFt/I-!έ"Մ~wYq2Vٸ>wwe-WĨT ?ݺ)1^A,A(-CԂL:J`g}A dk8Ԅ-n&.D2c ;F(ck>2e| k@2"j@5ɸ;k;cM5e#NS+cY͠_ -seqgVl0 :fX7]ر+6x :X@aW`t˱)cؐ`kG~-`c/Vo\]t;:nU+r(98:Mv,2q ;6Hvi_vȋG71N ٢cm~Cܦ1¸+quXcG":6m(bc41q+?Etmz˕⋥9pYJEt{; :JȓcnئN^cR^AǸDZcD arӱZ^q$ %VJR8vtǂ뾠Jӣ:+Nc yp*y*u Ji"8v,Rߙ!hݧ1(xC:ֱz4gرqo~>6zփf1,X!Dc:j,cG1uҤ1\lc+r (V^xcb兎:&V^xcb兎:&V^xcb?֥YuK NMMR&( IId_2BM|/LP&)SSo׸u}x8#38 :)W+yy:&^fXyce1+ :)#ucq :&V^.8fheXY=a ?cr1C3|@lfli]paZ?* #Od1XpAB}X@sc̼a=TpV4@8:ϦbW 'XnjGy`3o[%p]Lcc1,{~*Ի'$:gy=!=p,=;cS+^=׎r cec@>QW1,c{WU\ܧsxjWqgřGx|G1ř~5yc"`ͳ{˱;sEi93.#5v8Wq]vA'XtWޥB +/tL1B +/tL1B +/tL1oe6h7k^<1:en`en#cv"/,cn *2cWyWTkT9Nd;Bg7߱k DP8y~B䅎򎅖" s:nU!3xm0B4 u ILR`JouON =oǨ4Kr$,d[e/upANB9iWҮ]yFVv5`2yc?18ҕDZ/8T2c"O>` M^;kbD=t\{/ u 1wl@Sx 1w,c0=h  `'Z:5:+ghb$8L̳9vcc}9oዹӎ Rw*9uYBl9vwyy ;v7%1O۱cƣO۱Bױ5 g6݊r@C'h$kJ]pǜ>nyG`cǭ[>{&*ݮ?~NOo<Ђ5Z "ZUg#nǘ?"m0lѸj! uҊJD,MT"1H w4'"?ǂ8lc+ ]u• uwSuh"n?/e&sñ'xtf"|#5=mr y~۱-H]yg1ܱZ0R,+?01?>};oktx3u>v/=|{CAD93jHj*ȱL9ƌdǞ}74up }J$;j$ʺU?w4&ñ}d;HD5up }J$;6EȬ.Fv;NC8w*&U=ZM\ؗaد[)OuHkrAƍs>K}OxʺoW/eiƫtl͹iiwo2u46_x5nc8Zjc8Zjcec_ǖWP @-p &=Q@F0 īMfy%Z#Á08 㷋z&srb"Jc80~33X̱N6 6V9B,6W4̋8zZoj$ sGY)9IFYTdYnL晝'p 1sc-;X;Xe;Joŋ+DX_F3䃝$`֧+Wˉ9q`W;]cwc$j<Yh=œDa' XJҼsf9[nm4;tu9־;@N*n;fO^?Grb.9u`ǘ NSݧcv;1NgJ,Vi,s;#[S#;!%]XVh쎝[~R~R٠:ˉys1ǀR=+Zs'&^{c_^X[F߱C\_RONaKöM<4|UDvspheb⠠kigӢqolqRDydWɼb^ZdNEӘ~͐u6MZcba^^^mXĆjolh7fe4{smR)xa(L m]3UGv=}v~ʾ[f(3\n{%Q >[qc<9ݱ׸k+! 1rn⩢ZNWv݌b^bޭaR |^9Jn6urtRNS@fIDATxolgt;P.4CzT{: J!^g#h/RR8bp+!]qvJ !Q&M,A6DH ^}B|33{Zx~%3yw2̏w1ؿ bJ'fScE$w^ 1J'K Ezk- gO̙[t?co1-[ׯ{o!(nGIg옑3[Աum7ۑb,. hlfњqqPU` (A̞ۑlb\<*j̊B8Y;=N[׹c:dN⃂07yeld¨hJb<(I0!1vTxzbPvZO&HcX ؓܲ%geG[ ,˧c=%{tcpAD梦JڑƅT-)aUYL nhZe"m(ZʾJ=! ep@THԀ0*}EuV(/)tphHq>WRŴ^|z(d"vlX%"vWC(̣FG UUBHbx0(4(*O !E A#-Td5k?Ma,q8~(KBi#EcaR>1QNǦ f1ǧc65A>ӱzr%54$YX4;+8B$ 'yO[_WlNs(4 -LafnaTx 8eKEMjb~*ROa͗&d8`b4IlLW˃i\ǀdq:uǜNf'y51$:6?EU0XdM2Kb%xX&MHKP'>tSUܭOPƉKᩣOc|4:]NT/qlccCM brPWh@Xϳ;FaVO~IhlLñhɬ`[(] s:6rtj8Ṟ $Q_tB{ﷄw[c#d ?P(yش&w,cV^m[&,dܱ9dV~1#0ǪRΠ vrNJHְ/׷_5c2uld䫮+C!"uA+aXΙ1xmm?qƶիKױ=sek,F3LKc#9֦88[qz(43ı33(tHؠ5<`l_S\87m[M3; Pk~V1(Ah:GthKzE8z9y^G~5c]3f<9?p>T"(Ca]hkkؚ{Ȼw' ?q Dޑ5457g,@Ő:cߑFڋALzceJ?H?ν%<|pGg>t<*^BE1&Џ7o26Ec7ޘԹy-[(c!_,*F?c:9f3vm6z31׏lEf'GhNc3 VˉHz4)7||_MM7njz>\V{UdlSY}xݡp%3WKx#οAf*QlǮTgf?f&14b<0|+zثuH 4jjڸq͚5u{ps7baXB%?)+p0`xQ I*BiR !c" ReJ`TT0hD)]` 15ں{ojںU7U[ukj}9gzgA8<=ݧ?}N@we?Օ?}UO[ls-#1Sɒ~׏?~}E\[2&G ͘4 v\? c1Yኵ֐$IT&!nфc}-y|]mD[W ]9s=< (}g؅#؛;/bc;w!#<~؇Ijƨc{ZxOOg܌@n5%KƏh±hu-⛯rjtX^;/8fG8Β!2_?~l?46y3?aL8v9?Aر7U+t$Y h cc~=i>SλEw{vY홙[cǜLMu.?t’Ω3}mCgF5^kocaZ.]3guO2[ `e@2gh5L?;o9옣c =/1uSSg:>~x&DzfC?l9a#ں'tt maZ8w^[G^cq~1:qX;ofilɒ%Sgf&JM?ʟ LYp Q9FVظbpLpE&ں:͐mbc&];=1Ƅstn9oOMxidff:ӳж}wzޛyq >._;xSM8IYQږ_fm{=.LY lFaǂP[P\cMO(lYIA@%&&޺kq "A5>H5z'eЕlO,{7x=g$јx"A<`x՛c]q8sf>cr'ۧcq<:Ha죫o,#VdE托YG_Z5/;8x9sRGّ#GvSr+x[˔C}A±{7/OS)dzaT -f~TN),dD.cQn|8cr,oިbm\Ȭ8$Q*1|AU. zwM1O^MA|z>صrـ3ǡTT5x%zC$cJBN^Ǝ"Aw,Y8ٻcɳsJ B97n8J*v 9X}os]U#9D>*}k ǖ*-**JMMPT]<3To=;a4bygf!b "F!ۼr <ǖU-jelnR 'D<0Ǹ:9RsO<(^͚8iC+ ܁A V{4Cj$j!@4Dm+J`P@T~^2DjD8pdJ۠QqPLu٣M,-v0CP K|nJ"A^cWЮCs,١n^ ^Wlp+J/੭+i]ojP,@7M/ݏv XOR*[zV%DȋV ?^³5UP>^+@U^I^I1.WꑓQO -AhZB߮POGޓRQHsxZZHy|9V%$0ǚPylѦ^,c"8:~,^dH;]M۳d_}ES <+..LP2Ǩ5-cg"t˖-朜D9oqnar^ C@feԺ]F.ܥCIK0L #Bq9֓A(9z{jcş1)@Ǣy3͋Q;S/qBx^ 1s\6$)0NA9@4(jѴ5kX^Ae3غuk8@1Q]]]YAّ5N%}Gs-X;|xPhg.–=@'OPO$*C ҴDOTh5|ZQK)jL3O 4Pi,*KiuiNNbqX5Lξ־Nw5_z2| hf'H{k;0=|x <S~ؙF; \`\Hq,2%>:FYiǕ tQ&ΝWfDȌDdvmC=ۑ*.-Yii{n4\*X3JӐd-%BKrŋ51sGT3*ͩq@9;vr@uf{ci F$3Gq9ދ ͪc[薎ձxl ;r"vԻcքH%6*!bON΍&jx ʕ E ))K48.uԌc w(Q]-dW KE݂x>>`K$``JH 6ϕ2D[Lb-J{] *-0dž>ք9EA-. bWc)*P,ޖdU-X8F;I J6_5XrJ=q<zrʋccrP"L`vI\N2؅6GcScb*gbĎp,!A'M/2.:Z;L ѱ*LCⱊԊcdUc$3L*fMXB;rT0qv΂Zl޺ys zq_4R,ptKQɖbA;FsU-<ө!K(ѭNЊN.cDi9X –\>\CJD)7t;JyB^|7K:kfZ/AsG;X-9&MD>Eŗc 22K4'ƽ1j._)Qk:Vv )t (Ti iݭ􆙥6_%\& E[< >aWPX}+,ٲYX +cl1k*UĈV JVwQleJfIn[1qf;7N0D M~"|BDDi!pWg;:*vB^ةO5O{]+ӫz^)#m}Ӆ1q>ve3OJXBC}[xA u˱8+@"ZZRRRH5DSt.g MPR^/꺂jU;1 H+*!#REėj!AqN%V".·cb:6Ah&siOs/cq-6۟68M†bhZH tmx!rkq0)6[d뱁1NbQRafaڠ^ uKZ)DUTQcxTF̩'agOK|jաC>K 1L8ݣiOȭirYvC@4ımX[r w8FZywl[DDD,5iH= @^UR7v:vʼncT*xwTA*" p@ :(wH2Qyw Jxe+ɢga \܏-WȀ?c:aMd8`o"дDX1lbNdI,KGԛ mX-6|cBh1EIN)Dyا'ULOc Y^gj0V9~ _XG0~>wyO^6.9N'd_W?*8b6@ݸHb>P,{XЇv kgbtk7Ioul4}C&pLn Aˠ>yr:ݱl8cf^zZvmD}u5Ȋ8 l}۵P|1t@w?<$+ct46~1rQ褛ckǒVѫ2n`@7Ɉ4A* ;SڋDbR"SX]!5R`}9^[(a?*_P q#jkYk<9&0it>iwFX^ܱ_|}1*no1[L0@5[n6M^C_HX" |E3d ,W[Xwӱ\XP>2|4`UHswlȱlr|}' o}ctttkDzcBͱݟ 1nl4IR)W h5q;6`2 w| Bfm/c0 vy(LU<F1Ca3L7ڝ端ע vtXit HҕK,KJbi(ő%rWBX0>~7 * pD 7}vL Ἕyct#8! 5ǰS{aSbYÔ0 q1ru ӏ1_>W"@ %a Aӱ5eBZ1!ɘYbP_`U0-ټcvAq7r|qi?-X4)]3I$ M1Dk&!#IL c1@2e`? R4":)8Ԃ1@O1$󴬒K(-ͱ8r>-y]Q>&<(FpFuPt,y%NsZz,ˑ2ٻcW)μ؄sX4nxGeɖJϧ&#((5 #d,p1(Ӎ['ghrɱÇi7AIs1WvHpO)&ʘ}GX<ݗ @ߏߏuܾ_ww#w䰥XN1(/plիo[ ǐ0;ۧ&|!8*J`XBD.XP  rʧӆ,q@,gDEuUdrxY˪֭#;Ow fOwN?h;qv̅;t޲ˢ;F-q>1nA4f t@ˉ3Uh +\b3\4,tuqrߡc H#&{VP'Գ9 /b,¨ECΣыyy$~9cMTLccUܰ솦wndeGPRkWqDj77s8!r̉ɱaq74,tY\;ofw;r78mxB!ϑWĩĉt_ّBA]:)"b#)AK|pGEKW `<rlX܎šy* ۿR4_`)X)6uЧ"okXICs0\ߋ""d"nc45e50G7kTWLxK JMT6\䯂^GQ #O*7UQwпA}ĵZv9'[]:&$c3ǀB- рJ zqe  ۰\3Ӄ9 l*Ɗyfŝd be^:؇/[ :lf-8yfRdǒYX ВZdQiZWAcM\=hTFtXbk3S*<ؾA}EŁ#ODȣkλTtvK}YhJǠIűAȖ. FRlM`&nB/3k,NMֱP#}KU=1`6|x(-,v֦a!Pg,C+i #VQK<K¯m8*;< Pd`?ٛXLH⬏1XlqV1p= 361UlcCtUqཌྷ6Gu cyfZssnǻ9 BK]KK KB¨4cdZpa.}A m㽿`@ͨ?Q YV3#$aձ>{V`qWp׺(q[fs\=vgC u_V>&X7m L'WeE8y~@#$aA}q ZjHK5s`, jȓf,%@\J[RN$99%KhH0If@V &ό>I=2,@|kŎRbG<Rnc{I2Tc)7c{- I- R[5!zJfƲF؂\8fNX@R9N؎R|ccUq̒Nu꽻KI(ab77dL] 8Gj@Ҡ$PFFn-Ef[q|>.:#sK˰eE0yVfeY(y=D0S ee1n4+FkD)lB *ڙ/ _ `gJh?loB%d%2b"wHqB.ŀseY˲ЭJw-^d%+n$mL766 %pK1 C/$D fa+0C ۑce 43Yp sMTr1ӟeիؑ= ٸk>1ˬ ӱA9X`#Fx$r ߜ;(QsL>Rҥ-#55#[%%PyW._!Opl])"ẸqjjQVL޸":C@`]h&Ec??}:|9cGoڄe7г+[Zdu\1ȿ;S[t`yړrW>ehOϿ_K~r$CC_TǶ1ހֱS843 69WS_0Cf x?c?Xzl;=6z<ჳoH~qyK/J K hc,ͦ"nθ7~fq~%R xoa|ek㥭[BXS%;u'ĥ폣ű]-Նe3ޏcZc}%ޒoH )l u %B\bcTVsl0ޏcXD {`ͯpLj6&>ϟhT D bc~qǶ4d)h8"^=cjoǾn\Ix!{EmC b2YGFج ܱƳߏh(,6MtnMߏ=Ww~=j/oxLh wL! ;5yDf|:ΤGxx8 $s>W\?a]TalMGǶ-9VXZӐRe M,XXҊ2"|?D. B'S@m[we^-*NogeO4hSxFg&CZreGb\Lo2Iyd]dI$w~[weX+#mY Dk $hpF~dv.oz1 S jeF c)afVbuKu$Ye1CXñ11kL^(e r2g"]LY#;/ |e=:t'bl1#(ӱz =dV2jbdUfV$RgcA̎͜pLMJJ!v H۲n$>$z@Ca+a, au5sxa|HbtlHMA"ɴbU$˵e']'sgcq@ˊ!r%2 3+ (1X xA &[j;&nd@Z_D\է: f[H zл&.F^DcGjJ$EZ9W89f뇋XQ MY1d =P+Pj+RSSb% tJD 1$n x‹K K iX,w5fZ+ e8`%YR  CKҼ;Lh4&B ?ij^KRrI@aHah jI9$ʰA1մYtǴ V8吕0 ^LL-F`Ӫcn܂O'oa\q"sdL3 ij8 1$ׇw1MpRX!yQF{eG?|y+Խ Vz|OLZ? u3{4NYRǠ11MVp,ρ.,e8U4%EBJ  %[ Β[|_|7 #Z}'4"F!^)u,^qz9F&rig}"}'LǏٔ'ϗ<%8v̝SSbڏ)Uwn_yL箸cxĂPJn)0Xa2ְb| pgw;L-}D>s0U>^!'$@?ơC!!#ɢPpzuihƫCOw_NA BvHұ'XUWo1?y$Sln-^\odYҾZʉH;f~k{]Ǽ.]ˡt;<^u{m;޻;2%5a^'y"`%)|jZ5!h[/ͱ&iw~!%fA9tZ ULڕw/:Tމ ;0: T \(}sZeǺ3/||j~=rU g~8˓rg8m'6u_,z&o[1ם%\3ݪPSJ V9\y.''@Ŋt6L͝(gU.gA4 ^&Vɾ[ұ!e}g1bp ef\23TLGQhƧ/;%Jޫ_,P#0~:v~ 7#8V|Aԡl|2\wʵGzCvmOҶ9p\ M(^ܦ{MJbyX+ʼn"!1LǼ?NGKNiN`rT6 "#̂B05Yp/k,3 qBEӹ-;;;ċxWa`N[z 3.}sx%rS~\/QϾ싳{_tv>ݾ) kkJWOJWfe)i@f'N5)Lx7W]Vs븟K_3\g8Xσ]p" X8x%'cEL2 Єk*n` hl{7Џ~8Jotu a\%oK`d#RݒK&}t7Wczdի"j+JͽtkKOXx}l=J~ߟ}PoD[hQƷ7؏_eדڔ!((8^~ ڰ7||umv9_Ʌ_yp"&!]$N%-d[mmmIbb +7C$ Sv?G5m 8?ttz/(4-Q>Iccޯ>߯y<:7K)]G}9VR}c3^)nޥuض{ZGK!z:[}o>+زyyFܻH"L8Z`4Gw^bqn[V\YҮ0_`YNJ>4aQ& LiǛr),vRjF{X qVƱxoTf,RգK {[\ql2"4 j`70  >[ a`rɵvE,ɱ0jNы@ BHou"9yوL)M&{dc_gWׅTX鞖M{ CxoK:ơU2dPcɸa򍄳X4- XDVi,G@. ]`j^FTNQQ$R9 @Jt l ?X"0b xkFɧ_kcU犡=?/==b<^cl}AAM6MmͲ=1 j5 qݤo8`ѓH*$"2[2tIwL}>7Y{pVɜc?㛫uCL_>+lrq6YeU+(\_XiPw¿{[hVEZVj`&,$Tw6R ñ@q&tLCs,RUu3z;;Bl޶5bتr8ClLk T 'dUdN:U|xB !wH{7WlAT`XkL!%α yhlUY"K5yоbBZNeNeS1h2c,8uaX; H-gƱILͱf6[29L_nkHcl{?ر`cߖYl{?Ӹ>Gбf:L6LcBƱ9%}#M̨:bW@S\q4( :ZcP,c3>E[Sޞe׈oǦqHS.@o LK@v6!Etllu=nr91+h Da 7FzWm9hhq,añf{4)6 Zؑjgrr$ ŕgG9cOV$$3o$8'&k)$:ILGb;옪en@y8K ܏X&: '\R22 z'pOh?q T d߱e'ŧ Jpm?˪W#c{[&Lw 6Oc) 0ˏbY#4 {u_9LIrcR̖唩Å,C KX&gJ,#mt*xHbF}#I(5G&ti{I86:rY?]ԽefdK*fźvuA(6Lyo6ܱ_q}o!, T:kqJ)XHnO: KiF R"237Vdl%tIfق֩l l,{%1SP-Ok@נDZX ql|DǎqˀoXաgKk Vn1xo4 F06f];g/F\U2&J+> A+Zecwi44co6S8zf% hRʂq'xeLY֨/j$գ_da:6"E .OP[XxH m3Q}qGOdZe~MH-#GC}zMwZ{$Yڞv\1b⮿1H,+Է5'_,%RK;a Ȓ?\`܌}qE~Ȣ%/-9ÂW,f3(&͠Cok87k]srdǾqZZTǖ(̙c~> +HayCw G]L4q,Ω!!;wj_4r<R ^!I8 DE*4HH.H)vW&y"՞N^.]n)w7:ťu"DZ@7&=W.9=^ں%4=EQ^;z.]B8j~xт jjx9mM1ZfQlcQx+Q `rOr6⅄nUveı,ṊX )\^,heʢ&dtmmk 9D0`Pj Y}+:X:㾑}?Es[XCı7 c0sΥW&v )\+bpgoMmh,NT^w"y&Bs SN>xL"==b?=pV"OCqY@~dǬ,vJJ|=HYaaS-5?Xd]<9JAs%zܵH[9%q*qbzGMR ֩t(aDr[oc>VM5g|D%0:VX@ְU},P)/da>sR"gTX .,zLbl>68r dHkO$V=e+\JgV;;&Iqk!"BjyR߼ٟ=%-ԡ U3d˳KDŽd)ul w DmiSpDVznWzBc]~zk[?]SSH"ZaWiAMAQOus'd++ʲ@˳_Y& w,[BP\'h PDA+yL?\RpF4ղ(eŤԵk['&t[*{Шױ[grUֲPŁkP߲sp~q '9~lGCaqah{lvm~,w}Ka0^njJcp 1~>}#M1<q .;wLy`r,4p?r :7_Q˝[iPI4alf1L (P+.A.rh^UqΉ1nc|x(B%kkkS0hyX}3Xgs=pזe+Ɣ3 _{0vWIؖ%'r7LU QTr,N7a`q\'ʼAJ.S7an3Ԗ?ҟ y`T%sn!]^tKWR2\K816i͸y ,\J`pcpadr8^ɱw | 60jeyrj"@ Å1z2.wαg8=>G 1U5XM ~!d+U((Jsi)1\zEUXRH툎J?_.39?i8%6{fm:߇*ZE߇du{~p,[4T붅*jqZN3;MrT!mWӱ&ב?8ƒJJ/ 3X'f;}IН7t\BGnA"ߌ.eu]?@Ps^+wa9n88o-, a*23;mv]Ox44@hn"ZB,Zڡ hnc.iՊp p M! $)8 kBGaܦ^)je8^"w :4o(ag֬c(iIcU8UCDZ):*:i^B'K懖{*f_vMyZLXK7-+Yyt2/神_dn3p@o?_Vlض 0.XB,^4e%K/Yl8DEܒqL>"Oh$Y^cWuhKcĕޏKk>u^h4ރ jV?\#,(8ue Nլm 2WWjxhSX%76nX@+v",a%Į:J)s:|74TsӄZ $ ;Ovs@y\ZqXudcn0{TJ2g`xL8Yos|1 2lyvdM8'!r@8yrU5*4(/Ɔ5,>d oDD#Td{u㱘c 9vq4x#܉?~+ҎNf~}T<[5 <я# y||BM.'_z ʦ|>9)aUyBoLow`er6yOJ;FlcW@41ێuB;ج4& $1;{l.7#G.dXOFMb"\fjYt율`zw;L)*yw,CA'oE:qa^U>f] Qc1$ű#ЀG,G,ۏn*9(+4ytWYsȱ ږtFg[uX N\[(2ԘS nj=AHPzV]Ǩa[T9F3,ecW)E6cPH1jgQpt$ov ZN>ⓓ,z17pP $CvX~b4~I"cF P,1(H1ǥscZЫ&қ9N[znXn \»MrvAE/]m9s^ciZ `±`8sޙ11қK-t֥˧X yrRvkom߲i.̹&&}(ܹnN ƛXN/x.Xc<+'toNpT TkxDzqL[o-RDy6,~oݱu·Ndc}]4͗:ߵ>ҥ][U4u h4{hMjL-4h1IԸc1HsΝ>ec])x,T㱺bxBs{Z,>#}NӳOLU"h ƙW}?^wGsX*TQkRIn6c ه;KKx椌pƷݧ/F~L$iKߞ%S{@Dca۹gc`;;-XLA>8y̒NL-\ &Uyrj@p_ǒsa;63jI{;m"LUCxkini=l%16A 46g3t㖨;vr?Ay6%ǠEj+Kzk#XOd$pBE$1j43#pRq.qcu,~ 2M1h_vdF+=3 S~` t8Hf-Gf;/"=Y|y[L(mغn3XfDZdf-/s!Xb{Oc@߲ cc%X*0p*UbX04؜46oZfWY&Fw 5! +dK(+N͌yL kx ݕЯAC}B3;)V 8ؼy-IfT]Dgb7(mc9Ӌ2@%,8f9Mw%1plCZF1D:f& !vIV0r"~X_GȡWc~Kx1p Pa ͪ昿OYy%Չ؎ .+vs:;;%،hMc!@ZI3sb+s%ıчU,=]ҥ/96g -i _@X+#un(/|l{;+:m 2ҧ;yj\_+b":=-{9x~Ò8ˤiLKcj&5 Ǟߥ6c[wmw8<[O߿`rdh{ʢcR1h-NTWO8g;g-c_x1 MKc@ȥK;b\3ıGF?z+/z'4bjD剉?d7Ow]:qk̩BSS>{aeGZ%18&M5![YZ-)K:wо@8ց6XEw/K\/^"߰M]Kzc qd70>X/-88@s լPQܨD>S5N-8 U\طB_A8&c/&^T7O""vQt&H,W}&|^Uep&<"{w'W,ƪSc7P,s9WmiAo_CXv<偑.\t>ًA4pXm<$)@ <\y_v^qrZy)6'~YJ4J_:ƯmZ01?I<}?Urm͑|9jU~lysgo6}<*11^e7ƄgV#ɯP;c,H cbAb8 pÅOLpد[F:`ƶלX73P;UnKd#v|pEA]~"ːX^r!YQ4 4l B}C؇|8VZҜ% U Xb cXX@KezMrlNr,u,~ddcvX)k[lȻr|msuoI0yv,K+;Me{^Xu6ҡC,ct+4;kyM+d?Ul:8ft՜}gA_AO]ezKvYɎ_JA/{OKC\h_KC٣!ͷbŲq, LF\r<ͬcθjAOmg`7F*A\4Kj! ݥec/2p:m 4NٵΈHM4P;S1\dΒ9 "]Lo '/s;V)[E5,gRY>^VMu &uڸ[Gࣵ}cuGB ^tBc"o'6(A~(c^\5ʥZbI̛xVH6ED6jS1hl@Q,#$:ı#ЀG,G,ۏn*9(+zqL8dMbaޗx6rGP,vr&:V-W)bIF-܊H&^XU qתYpRh;F=ű Ɛԡ.͟)oz}D `ූVoec4~Z}5~e2Y{܎%S =#c[qLzq7ݿ~RQR䥪Jdf* އ'.e:ZfD#ܵSǚ iʱJ0j"8܊^8q¯--wY҂;DlHy٦:X\k眪T;f|N$sɅ.Xc<+#\cL2WouǎM3q T)hiY0jH"`|gg϶tx$oRڱL$ydNy ˎ闫`VܧЫd-f.=ꠙK/zȥ aDPm1V0(cƿ:du,wU(ØcJ-)^NV)p.ڿusMM1]QFGHIAn "xXUmD-vr/YǒNy+5>k-=9W d\6q&)b7ao 8e ͏2ds;bQY/~L8MZWKNQO_4DNZ~86ٓ TPȗ4s j\L!#qv)Πn)u9@Q7efm3iJ\.Ab 9Z-[?hktd"g$30:s涝yz$uegXd%!%>kYyy)܀CF-1^cxNHb1l${x45">\A8|ZD>AB)X! G"RxRh9dZϬ* QAO F51%oY=2ER@)|'`5g/:Oϟc"13&V:3VŅ%8 jWy6jX|;c.YsSa9"Js'q!d XTKFr΋1G&/|![thna91"{="w*,*7ōcnc\%D w]@f\gX\֯{+3 cZ[>@cz {7g' mut_aUۏM430$řsG11䏹p};d.s3a[b'5sL }se+:VSڈ)ݻ0 p\]!pSqnKw_&`>UP2~9;[qH%t"mα_/\r<%dӁ3NՈ\/0A|W|A76|s Wd{y8F$C7҅1ǒ ʬc1iQcaFnB! ?IOVJx1L}}slUg"\*g234ΝG8D?cP@/쵈wL@Iğ|oo~yixOw޽H|s 1w[ ukɿH#jZ$ P؎`60c>;{O;&{[%}1/F4]=Ξu$}EmF:<(C }?GsUW+X}18gKj:60773T9vծʮ+S?aXO6?@=8+F#QÅn9mndokoHԣPxr)11@ST | u,X8pX價;Ύ}=u)iX8) عa𹩿{t,[E&)cg8`Tqd/ݱTLwŘcaco,,<|?_u~ѥ96 A}4LNnm~4UJ䏕jC?f9i6?8 g~ױvN0V #}4ʱʅekѾ"9~spqozvzlye{ݠqK&"L{{?, :wm)c1cD1ֱ9-MG* ԚwY QSv40IB91I[7ѓ5J!kŸ?{,+b .@1̵cF7wԀf:6LS 2KA.p,V{)"FOǿR9u6U (?^`ǀYYP ? L?#Wd8Xw ?x-c%8! GNL ذ۷?_hV8ńKrkVUVPS[iMǭ9!9%̙uH[Nt98sX@;/瀰<2y[Se&qnK@j7-00X5 d Mˍ_SZFa2D5|N5ڱ=YB'_%1p Iz"CtK%2aSR8G<籹 fD<:&C'昐Wc*$WNߓ"|s&Qd>ʅ _MIXt}'ǒߵLȦ}pvzaOdE?D+ɱ-| E4~ۓׇXB?iShh~GF+'7'km3PEcۭ7M']` PGˎEnlXǢ{E;V8836!qp*{nlۑA q좬yE3/H9&d9dx&' LY:uf_2n<MNF%+V݊`Ngn|^7y1!ڱgoMgtl9 :lRg܆„vL##>;F#0vSpbm py@̱¥c4,- Ncj8KuօkO%( KX$o"2Pky ,ZqN> mj 1DŽ+cހ[;9P.\EÍ7FAc;vr0'7O(4*{}yr5s`Ef ~aOIW%37 ң1Q zƼēc<]Eb1Pqjyzn:W͓V.[lm_w"&ljlZhX+#ni46 "u NJ]}貎rWfSQ#'/{^rm$C_VeS A 8c0M?<α/|9u$cyAaX Ą.0 ~qpyS:|>s:VԣK0RY[:VL[۵3ߧsX|# ?&] +% SC`9T0{1s'Kɉb7-kLVd.ۈrNgQϸ8<;q߾d:Vr2vlT4v,ÜEWO@buz!8ϓ Arg8ƱfVd׷ohEUB+X.c'Z͈ae.JN"Emum~F%:w^Kni?.@pzSgefl0F+ Q0w4qm[B_vYb6KLƠP OYҜ en1~N]HM@v^qTWd@C--k@2^w]jf6fAe"tY{4rpLo:b}2Ba*[VT* T23p~9(tT,DmC7v>~nmFcћ6ͅQ0W?&ϡ[wA=1AgBv-lA}v]"0PLT1K(_t!.K$Z~?5M`XzjG:Z :\:"hax(V5] e)`& ES[D7p=ʞe0VlDl &\&<1\lᗫ^dcϿ#+,gWjݙהEA8?[~QԵe k4M'PLI\`uhҊЛW˞򁯔1(IT5fQۈoṕ+0 N0W:o VWs sҟXmhX=ze!, 3yyg>+[4LD۰#瀱Ei~lлO6JIlɇ! PL55(pHRRG2jJ}/GksT8ʋ.q{3*/C4"s Uɠ-XՆ~$Iiz J(L;tH %Rw>>Mei+i) ښ4Mvf\S MaHfົi 6 aZR"D`dcQc18;l2׼Ӟ :Bsq/ 9؆ZӳڳFIŵ&_NhV 罧0e٥h> ]eW2{s>#vNkLݙ muoHVS+<@<@muo0s5~lW?Xdl=ƪΚxkk.lK{fںhYQBP_yJ?2fL <& cL 1~XXls1r9{_dTVbfdcL>>}|VdUV}6O |-_}E_=E z)K;v|q)+=' (OJ,n)3Ɔ"s s8cOqyJMN.2xhM(+/Hٗ78&3#;Ft%b Y ԚFEeL !Z$eTƙ2vk"){Kq1^ dB3-{u,#]￴ 1h3JStޣm0 m`7qv0Gv+EOpυPk2lw40'c0a|4!8q:jfaˀQX:䎱ld(fCJ׏(Gly|~/6|YqYzq<+搉hА]ey_.X"2nFɘ" ejNx?# ܨ HX2[&5FL\zX[-wc0d0cȯ &#L*Ҳb&5|1f77bMm1=0Wڕ"K<΁3L2=ΘWt@[l\GFԆ608=Bq%w/z3` f+ۘq26YfؚRXcP}ʊr:_9^;r˜3N7;^4W}\% TUXf̅6w8-:w}"EfxLm$cGC(@jՂ1jRJn.g[_fSӱZ>CKK&1|e*Цeءz.(?zLzkj悱0am###]j2! Pn!Ō:pFdrM\=:7a܌^Yyh'C\Z[} S2c v,)ݐq\26J˘Wd*_͌21A#d`GތS7q˅)/.WջKWGb8bx7Y8d_aɽd8c|]/hÃ@'CdS4}7'3-Y+ `jiqGwwj4cUmZ&t1cDY *ca'2B#]]: Saæf_R^FP 4),!>՗mC 6=j$\ dt1QǙJ3YT#aa 7ˈfToHjKN5J/շ2]tD[ƤT#;ljV :)jLWFC}SA^ebj(/MW)@ GF0V576v66J*w@jqLWa! Nk&t'`9Ai(w;h>[c.smHjKW}g[+j[_d[+g"C0DuDF)hM`&TL5Wft 1+n1siqLC1mS'5TQ';܁rjqh3-f2`81|sav;lX"zW0.cCo]`L)cnMI}!!e/ 0kŰb^xbIN3^8lu`= `!btBqЦV7m@GC-*\!6;BH va0U_k}EٲẂ k{0%cSTGFuvw~hh~CTVT]Aluoi|AfUxO'fU&z+4R^pG1G7 Nvxu۽ye2[!.v ϫAز}Nz94h]SEŴ` / 5*u+NXqvPw:~3p&I 0Xon7dc+_|4av{Eyb9.~Ga3p~ !:BvPPeFð}&]2qpkf:NwTUVU)UOess~x @^X1'o(wǬ;MXCfJPЌ"Ԭ 5D i\dL¹ ٩ Hʫ =BgfP RD(k$0ֈ6Lߩ[K3#&],l YL%hℬ EE$2@9il,/5VؼBmԘ *523>g̴F=3@+I㬁}5x _d`6*+HBP%CIB5Crڱe&,0ߖc9c7[TL[ء:WtHu/TKd,YĊ9I͋-r8 `ct 5):X`>[Bf@Ql ҩa$\3&Qr8V^K"7^!m[kSjK!blvReX;Xd46isR0VVj0'S%`6VYMnvɞgV+VCʌ@ex<4'SKָϾ8ãP觽uy D OESè6[ Gc,4}.X icCK֥c+s[kW|2]@bky .Ƴ.nҩl-ƚ.x<ʭsX^*ˢc쪏tJZ^lX0DpȰHZ~ !yeD\ܘ~ B3ϐʶa嶧&iuƜu;68ݜý{}1Gxu`8݀mY'wv9cb(C\>>^0QBxlhLLGx b4=%͎nLO(26;l#elsS5k-ƪ)hj,y?Ny}+ldˏՎ=F.Y)`lW Ȁ3C DX"`n(r\e\#S!Y %_YM)EƊ2f&+;fo\.PS ׫H䥫R}1[1Hf ,~ӽd8c|]/hÃ@7by0T@ _4}7'3-Y+ `jiqGwwj4Ɗ~;1 +t&.OdFb#06:;uZ%†M;~=?Qν~7u#qƚɌSa ɠlI= kVsb_’%1fnDI Uwŭܩ!kqh3-f2`81|2+ ~Tg}7bۿۗJ@+L~<ӽw -1nTxr +pȊQʋCay54tͩ3秦>sj $NH蠽wir99/ҞPasԥҩP\5::dٞ`#fɴ2hS J'ZL[7fzG=> Uc`)J*1}1c :bw2'^ͫl7KKkovK5d/xIU/] 65JX4EiWf^M8Z8&^rsS}bh 9g,0=ҩT*y+mWzpD_ +[K Lxspnb@X P}<93T yk%yF40 ;zy'r땥W_][Z:"2/Pml?^{]^DyTƎs0n}E nccYcڀΔxx~ Ze}?b@@Lگc̾y>s7._#`8ocRcw2; 祺8|pCcז j(9 3ଽSlixg,/9#^\)>~ 4Kj_b)8S:u1 +{{7[Qf|ɤ0L ,8jb]38d[˨;ؿ׋KXɳ+c+5d sրsFNUzk>_k"Ƹ\pos,|q sX櫅-.(5\AS{mX^O0Ƌأc37&R&:jbDc{~^ɨ@zg ^qa5gcZ#ti:k@Sz B_:`Ęsz=%;av)s~v,2c&K3W>3c&W(5.QgߜhrV8dЕ-c"R=̷;@ <5dl5ڕW+d2:Z&ƊYsbM\@['i)XSܫ5nөZfF5N~/iwbde iNJz&dR&^Td!ƜcGA&szƉKծkC/1 K58dP#섽1B+p` 3L1"1 D}#]\#L(5}8z>yVWWVYYY]\R23JNeykh.'Ο<–24i<-c 1{X?hfCMr$LzMQcD~7tduRh蛯? cE̒_qݢW<ְKF({g2\41Vǒ]W$L äKQcD0-bcՖ #^ƫ1פhmq5=ڸ޻O1cIٮI2&Q1&d-c%c XK둃ȫc%sXeKq1a3c%X,0K6)la? vUs^*$T%cT~{ydlca,oINiDJ($ST8GZR'_LRx^+K&0//A֨I7R5H&e chIz&YXcWI&|hLgXa,u1| K'Su3/QmR07$ _WI&%Uc1Ϥ,b1czRq5ۤlca M0[XR\%dTakS1M, DzB^*CRA RIٮʘnY’Jq&qcn c0&8/U{ ^ uz &9]Y,,ꍯJ2ɤ1N\LRp-`lC[R KkMv=(g|‰?|UIsÙg(#8gb&u^-KEY|^+JA6)} yFgX،祺vqz Kl^*yc翼˻B>H?cGK; tʨA6)O1J|yeqJjEBvɎjKe%ƒǘX"F0q1X_OK[ccn3Zׅ<[ym_gnҗo{ܽ>v`e%'s _>HwJ kf7tG_1 ~Ƅp1&[ׂS<2[ݰtcwqUu+lͶܭTsyp'9܃Gydl M'sqt> a̼cQnTSl5j0dRĸ7k%`t` 6`1cwX1NԢ}?朱h'߭(l&c #{qMJ\ƒ)ҁJ\1cl{2z}۰"6˜uqw:՘`% Yd4{<8c MgM5Ax0_:T6=^21^v<|>c43c !m}lw67 ;zI\21p"0)Ax0_:T06mTբ jƷN!J*Qnư+2ib&lF^cYƂӞ1 u1`k`S\4c*83r5vxd&X1<TD#K47)"/i0-c6c |gggnjٓڛ+5]h$^d9isjlvNkMv=0Fv^<.ie-8P| kmål鴶I&qof4ՍFΎa c&cw!eh9gJGOi }|ى# 1CI5kCjF2ѣ"tY4(1ʍb~Q<*L.0&su|>ډvלf7fH&T(+=ُl;\PXM ڹ1Fk0gL?3(hP.SImc%7fs j-yb] U!M}@VL7*_X c[s@l 0ޙ_cz}7*_XcAW̷\gf̐ I.cajT 23\+g*cY sz< NSIl:Є!&d&c9,h FNj(꥖/! xkwjJv6=Oۼy3Ä|^lo-;;b1Ǔx5x&[ԍq eLuoC ZkZEO 5Xg6m o)ڶÞ0l-EњQ_ܴE׶$| cTQ=1C=8sK~*l]OU2mZ7ۿzF]&e+chcI4Z ~iϴ-bIarg@^lmR26:I+L;L,NAILAȘM1ʹ {I&e+chcI?4g;bIag#ưǘmR06D~HVL*NA|~T0bvjǘmR26MFfgRqs?FA~lyX5IٮXZ1̴gRq ڤO*FAĘM1{I&e chcI͜0a"3TR' Lb̦M俉=$n]~ONgLIٮcW.1RUdr^`Lyb̵TIٮ*c[`Lp~gϐTI.Ku4cJq*d, $}?O[G|R%5P!>+IԋKkWn߷ȼTܷ>ymR0&`@æ2WVRE1R>uTh^dv6דTÇDE_S[*18}׵un0c3BRiZ[S:~ K5o>"[GӯbRU1c~l|9* e̷'6s`lwؼT ȉf$4hwsƺRa ew~m\Y'&KlSj&f /~r!u LwH²*ՖyVA%f4N(YCIŏ}kdh|\x˅P.ՙԺThAT-#+اW֥hT5tRj]*iuTu yW tTzX]m˅TuЂ#Z<*F$8.h]ِu yWF]!T!'RAQ1".Q-#xRQ1"oTGňXcFxT5oTGňXcFxT5oTGňXcFxT5oTGňXcFxT5oTGňXcFxT5oTGňXcFxT5oTGň61LA]g 5va 81q8 ka50cga1YXc ,1q8 kaE* Cr|Һ ׂa&K  v"0E&ծ{0֗9d9M5R4h)c|6u$v:jm?nT]J,i2 iOdDsW¯~{it]N$ ܆]X'y u!%ho?'Bg5/"'+;MjTzϯ޶6.C>ހc;Yh?wp5A¯~{itJk.u۰ $;W3a1.p7HX03|JrIJA`lF+O:C%;m;Ԅ\}v7bcA 3.P΄M56811qB[kKF!kNRy{;5ʖyلD4Fs \wWte`j$➗C]4A]X'93sMcfƤzk ###'&$2'>$mF/D*>[+Ϟ#639%v\ziͅ3Е;.z)!C) *ɒ(d3r^Dsf&.:Yo3IZynRUUNKH/ z7W& $;k+ HÙx}|I5?Scri뿗a %N$1ghk#֘r5ưXc?{wFp Z5 k.C@A0HqH 2tHC$šSESg}g^rɵɝ=ˏM1Y4Fc4&hdј,1Ec4FchfXE19Fc4&hd]hL11Y4Fc4&4Fcxɢ11Y4Fc4&hdј,1Ec4FchhLɢ11Y4Fc4&hdј,1Ec4FchhLɚX"nqT"8mcEtw-!,vJ5ӓ,صDhl Dx>Pz[URYXk];A%!+{;QazH^wcpc Y4Ȣ1@h Ec,d Y4fcИah84f3ƌCc,d Y4Ȣ1@h Ec,d +R^ހ=i}Enyc\c܎;QA躔Rcz_5˷)G9fZMvm{۵:be$ޮ r+j n6սUQ7џXOq6DxȺ i2M-k{Z͓'ޮ!!55Z&?/N}JcrTT{] Xrʓ5d^՘)Ϥ'1k Xǐjɮ3df4Fc40h,fݘ )ǀ5RV3\ghb4R򏁕3\ghJ#k~c]+ڛNF7f_1҃֯4&~cw>?~7UӞ:~|t~qu6gWuo|j;Fq"ZV W}c"EʽE^4zBdQ,mlr}WwVkw1dNN]ȱH9gc_ֱ86q"_{{B֮vlBa9=\l|o:Y^_:(7q9 :/?)kJ`c;;%*= zweV hvoBq9;o(^__:=!mXaSv:9GI^tcj&bWw5# tW#q9 a;=eൽaٱߧ~Ϻ6ݲduTWA@PWZUZ(n@㸥8raRO~b~Zqm '}:*jt2*b~pLmsV8ff9FEA؎=xn/`ίnSCnA!)-eĕWS;^L3WǹgǑcXKYEipwrO dvNhf>MUqڮfz.wEcr,:;8{2'r/*5e]Q9T7Ifvl}0E;If9ñI%}юC9vyr, 11 ۱Lr,u+юC٥!Ǿa;6=ir, .rlK:?>}Jz$88⻾q,X}řՋ YDVH2c=?H2cd!KvWQd1/Ii6p IKRqۋIٹ9gcss048 @v -6|ᘈtr9=ؽ1,c"eFʋ×9+/r _fa;ȱHi#A9/ov9u*{qr,lN9:%0ccfcM+VjtBJ+%;Rz&XD`|c"eFʋ×9+/r _f1|c"e֖go@#jqIc }scc'xayyIc|\jeE"բ,-z|vC1c'l1ñ|i;Qً{4.<铕 §nuZץcl>^IƴOoܾmxDzOAc_=li; x0A)`tXtјǿ(IWYKt5cP1w }M;ܱ1XY7Xqer,}vsD\19Y+zV~w%T3(ַN>>&sGsLO8GܱZWvl˱Lު0s&[{I,թb)R&>u2QOIrlLw9֤kYgحK oK7:[>qrL':-TǾ tRclr,uplcp }c7I1uplczϜtO:86| ܱG˷'Ffꌿb3H~cF۰o%(\p1}06k) ?Ѻ V~GUdݩ@SQ#4aJگQ Rw ` 8Yfc`8Yfc`8Yc1b16At9㧭moӹ;vܶϯG vJ' B8~}rދ̢l@8'Cm9F/d>YX'Fۖݎ|'4[+QNܤ$#¬OG4>-9˕Nlk9ybǀ!<ݎ-vŘTfi׉z;VŶIJ5u{"˯/D;q;:i;In}:buYnϙ'p ~cxΰeT?+b|4$9-it%*܉#IpaeMYN̙'p  ױ;]NˀvSl~W_Tp=Oy5=ĴDoꪖKs!,'2ϙ1`1΁8鿏) D]herNT ŽX-W`W1_> Aϊ[M>_WZ=~,qR5A۱\ױY)X:r}\cX:yjIz}co܉ݼ(tlB/P3^ۼ:VYruDp y0Sc!p 10I*gEp 1"` r `MwAh}IENDB`awf-extended-2.9.0/images/gtk3-menu.png000066400000000000000000001316771477403510000177020ustar00rootroot00000000000000PNG  IHDRcZPLTEGpL¶ɹiL?˴ocXɿwdLbK\HaKcL̿˿^I¶ʋ]Iyf]E;݄\JcLbK¶uYޚgP_Jpa߇^Kŵ\H٦zfmPZHfOeM~Ϳ˼F71eM[I[HȢxegK?]In`ijʻm_oaȼigdpTdL tX`JyeOlP$##10/źFDBиx]ſ?>={h998}PNLܦXXV('&]KUSR444KIG~{xƸ.-,ütrphQzwtbGmjhĹM<4ĶӘ~⤞*))mPDǿpnl_]ZzW=,+*ecbeVЙhKa`_vZM6NYp[תݳţoɓ|rcԟ˱|u0+)չ(hEkV8iBt蒞 vB%Q.](TֽMs/ ۵ɬ108ӡw.;9Y2Pqm⛾c_E}jm/5Kح=tRNS@fmIDATxoSz  _.d'oĝd_"uu ܌mjEF;% CH V܀,,#.YĀf1hPM&9?=GĉaQ|l{s9>(@yABo):k"QmOM' 1&I?ɿ_{B!ȲȉB\hI{{D_ f-oJ!1?_ ]?! ƞȒH aqEeW 8E@FL%2,${xI~~] rU1 +W_M*\SbcR[|Y$yd[%8U$!NOdTǐir1Aj֧g/k 'sw2jnR#[SjXL?qۨ3lU5N@$ZU-*HCUzN7TuZN>Pj9)ek'o&7\3ʔsJUpK=cP}5;&*E>fJ5 ՙDU%ʼnZՉ*Bh$fEBXc*{ztR&K{-%OGqռ4FģAEʲS*LP%JmҬD p2q/8W}V}=c|xs$/D h"U%EB'H3$UKbecT#­L4_ٹ,Wf$O<1`uEc+%%@ F+nK.zlų =oe2YRpYvj4}W1籄w(Ii='"sZO=XXFX}PAdW  bɧwfUyPUX`X!۔!#䠮*D׊+(p 56I dOA1LTaXC M,=BH3i⡱ cRrV'{s"\| b-*dA(lc쥪c M' ΐrRq6VO܍G=A$L1a*q5 S* DNa'ə,+ @4Y7NF"j/ =f[M&ed2ZTd?Ç˞|J?T!)ڊ~E+1{ 3߭E{0aCA gWzw|0b#j"!KqR=uz,Fxh!tJ!kBIXƐg5&Qƨz ЋtޕRiFN6^ْԄ˴R% W JyD}%h*z AZK#ydA<A?USVDA{lK-^ }{NAcÓ[óHƛ-4 L_m#/V =12;SHʧlFĆcBe_Z)TՖ y̽ˊ_qN*tcc]\V#5;3uVZƅI!:ۿ[u)DV?ǜosGٮQᦐD!~BAcq3 xq/5Dwfm 奋N-kZLc/=ѱ/!B: Q/FQyKұ;135p==vo=w3}o^#{߃=&kŽ7;VGqG)_8829!^ygpJjkɳEHS<ZXqnz=“: _tdWϑs\=?|צ7ؤ{Y9?;>(7*C+fc/\R__];iikB &2ҧnv+nu=Uq9N qx(w֒#xjBcA;/+~GFc70LRhwTn꾡 SWŠ]TY8ey٢x," |>/َ/ Vӣv{JFFBײ~k9xM\Ak$rM݁M[ | hjBc7NyDQ8y弩O=A419y}xg"" c݊ l[׈c%xe]˦CR:D7GwF6!-p#? 4iǎ_$,lp[ҺChV^gq-=taah72Ai[:~*" c[ce;a~ \4 #Jo4 Lpf~8zl͎0E8&MIҲn?ں[D{թm;,97 E[AsY<0#/9(]9zH?k4ػ1c)vd}ݐ=:Ɗ?{#s:L+F-H'`Lmj+03݅ tH opX"A6)`uyCe 6 3Hp05 v*fbу@Sh3NAlvd @ooDZ 0E-  cK6Y F-[McKدo}/[d'=W~=cKod<:q#9cʚ{k3,q<_=Ǟ"_y A=MZѹB8ϔ@-eqzbsn.suC|zlI{ζ yI99z͵b{_b2j1HWj ? dbY{ϔՂ6~My11`crV.da T]X!eqZc.˅ +v}ٗ] }Qw9C-ͅA,~w\ݠ{ifhf[{bWW_l=>\L64[X1reȿ.ͲZ|uf&Zњ.q!1Lm֜w!}3_ch11P;Bn.ۄFo_n7|o^8l#˲ "aO[?}W^VΗ ]c|W7&1{RO~c"&c7$t!mPȔ}-$HײJ^ceW+ ?EqyƛafFZ!I9eOM9`f'T%d[XR\SBTՀ~!Qֽl<-U^~Y_c;M?>L*_[uԵ5NbQ [7wn0&Cb@ݽM[c"Iq~׆"]6WKKKB. bs U1bē'R\uCQ#xm}+[9 "G#s8 &ӡ%S1,h;F1z.R\í2央/Z\49>7ksnK+OU=!ai bK/8?L}yB& j`gIU} 3ޠƄñ `E;@l!L>"iK%W cضƾ/3.2bu --牶 .&#c[j{zN*9]gw7l0"`pFI{xz>Qū:IAxČھqf'yQXv]+gޥ[;g*c۳gO c:]=u- 6Q sh."Z,V~Gc=$}Wpiȶ|G#mu/ƁXmMr0cJ&1 ]jrh.\ލCėKoozT65VB1VlX1Ɓ:/[RUKuvwGUݺ=^WpHv/tvdI2b҃OY1MP2 ~ )oםJM,.euvccS] u¨`+Ҕ?o4^Y mދm[*+w6q@(9Opc`1/[3|UNby(mpw*+>d#}0%vSH2V"cVKAK+NuƮGΝmN!Qge秎#?aif7Gy(>LB*J@զS'|̋w;E8Q_ncc`fR{t9!vĆkϦJbAʾXSQo)W\166,x^޼w;2?cÓ{o3DZHwz-,,=3c.{qk z~JK_:c] C$wgq\պ,YJMZ,H^%©wZAܛ7۲c>>g1f.Q4@)Gl$*,%c*Ʉք%nېUR̎*j+ie+c?TE Ǖ1J-eO|ϩꃇ?r,8~f=*sjk,,-`eb,p_ђ%(ʘbl1/~XfZ~{+1kŘ؋GYa՜/,2G`lQfˤ=Em'9_ YeLoΥ*5&7 -2GKbj$r'M3#X8Z~{$!ytkf{gE9\>]18 L$J"Ӷc " F MXƴhI,J4nFTE@1Ɔ~iўȴJ"ў;Ty (, 5-+-=ZcZܐ%hbgV]RYpȜ1v־wB└r6ߕ92clh(44D<9A)A %Lv8ef},²Ƙs>D``e /bL0avjxJfMn3s!QB9ogP#fUVU V UU\)bЊ d^FY3D>aG*{".Up,Q*}%Ǝ81FTtH=ϓJMQ P.PbLbUSƘI._ԫ6PR qށZb,mt pibCBT-%TVs\ o1%A;3KIo&:=j!+.dvUX߉Sc/e[K5Qֲ#õLqE W $ $el1[XoMW5 LO)IąJtjjh:J LH0ʨci-/h^t=ZF(ċE=ɖ*"Gq,se1 @ٶmhH l* kG<ɲԎdqqB" 6 gΡP`=~oؚXGʮ!1t vJ3Px ji4hBߚlkee44"exc\KC/{{-L W%GPyr'ϊQc`&}Ȝ!%jkkk x,34Qw좖㕙L#ZB].-Jql8C1 b N8WN,36ޢXϓuuD.s uAp BȤu 4+'^ p=l;s<9mnK41 -2ՏNڌӠ++8%DF rXsp3B OY:q$ FWdbXfXcZkk(TUS9#ջ:'W0?qv M͵9cC,Kji,-tv9^olxjכ#Z@99ZJipxJ'_!D_#mQW<>fC]~@󢻺g[[gáX寍j(k,Wաa w#R+E%PR~*,*B@`DXˉEcؿ`Uj9,1^y􅴾b@,':gǑ;D v ~; `BIz~@(Ң_n&1GI0Aª㭭gIG~H?`tvU,7C(AhS PaLٓXynFGt1п,$ZNdc>m3h08KýWS̮1s Vv7Hg,s޸p(g<)RƬ2/716p?'\}BV;>`/pѮ;@k94C`U ZԧtΔhcyRX_6g,se1R~G=AM|Q݂@DCQ 1 P,"E $Az=]wEEUM;?_6췾珯Ƥc"/ȉQҁU9ԧqC;e3g,se1DbWyėpsf^DK%JK?ky(^S!lIŕ؝c:lNJ9S96 / z:c!<"h:"VI*?٭ؙ /idᢏBڷR)foM{e2U`tO"_邅G"3&^G.5J;6~Kcѧ;3\8%*t\W6 ţZc@2l*̨r. ^ic ~S; d;lQ^ĢcSO2QF͎zX)+;$IQU',R!N|20c[pU5LJxAOVZTXE6UH4¹dv$r\hQl,mEDZv6ٺi~%2"}JcWcS\#2UM.nF%.n)/"d؞k3|.!c b@{"Y|ҡƒ' ڑ"I6fؓ(يdd@$mݹ!g/.6McX /}#&g-p JdhUNFHQu#c%+H"(bГ'Oa:<cbivn޶{wOO_9ϻs$XdoK}f_XggcQc5YˬRd,4Cj$ȡsEfsߕ-[jǪX#ciT*Y= cYӪ:JczlGuÍh90B)'p*cKS1]o[=c=%UiE$ԕ7VctcAȘdéc5800;r[:ctH2D TFiTqXQ)gU ck2s3vX24s7S#<1ţ۳3?pL(rs]{-ƞ1M JLմ%zL;=2%tT3:3./I8֋fX<&yjSy&xW}tk_S׭%0 c'2&튛_<գLUJc#`16cE@ITpH4TCǓ1?WeHk3Bk?%+w>.T\NXF1Mx 3c=&G*$<E#EwJXQxs3+sZ6۲%%1'ÿLc|=f16‘BdUIG G./o2VeLk3Kgx2޻7^}]ŤpSgB}P&[hE织OW?\aݝ:=|򼁱e_“ˮSܢ(8`hHWtxK/d0VA2\%~}}D\4ϠkϠ c3 ~{xuVJ"_X݉GunIQᾉƎ<2k#_$%IޙgI*v>A#M;)N'ЩSQСPTEJ U:*-Z}:2SE}>lN͆oIL{s~vfgs(*HBn39Bv#z8v [oċVmNȔRyURmwE߭njnauhr2vxȾ C0? k],+>lFVjX7inukr}\WI))b+T4c+a?o<gZ;rs\sld. 4ap5|#:κdRA(^E[L;5cTEKc ]:a %GKAjҌV;-$n- .< X?_1UԀЖ[a[5ȴ?1[,1|=4`%@f ,*V IvH^vQKm ڀNGV 0gE/xjkXs3&@iى6.Q(.X`qbL{/߹z2Fz ǎUJɖҥ0V~ޞflcʀPq~NIN CLFi9^I8u;;OV1<$ W~0b?;㱨[ I4%OF*amrREg6kDZUd{diS+f s ĸOp~-=ݳ%,.WPY0B)1 UFǚciƖXRW+FBV"ҫZg^5 "1mJI*1@/!ǧᚙ x\~L0HDC26flR˖rnɯ(y8]B&3@6;2=s3TTp@ X efY1O1<*nc5K)^`d2kO?+mI8ER/h<6x؟Ę}V~.ة,nՔ5C*$ҌkI-0!)0%y$^x؟x $aa(xՇɍps1-qL|xD̒i1=۶-XTc~DeP!a>ϖ?s{st(Îw{n{} <%0vY0GE c͔L[51vERF9 x_a')Aq3X)=U9"@kx*T>]x;nŘe8-KoXItitC*10bnq*] Rm {-A}-8Zq,x~ނL*!p߻:zOLUPѢ4clL*`S 5P*uq |%c op'\ه`<5;1l i_SEMSc5+SXԄix[b 3Vb&\dLz>5\d.c;*I<틆s;'Ugbۇl[Lq {.M{dLzwfkv)CǢ ]R2?m 7=3O=D*Ѥ.L~7gcq@Kx61IH%YMV»PR1Mr#σqjog7Mí(fl.QMX*sdLj!cqӽoœQhiԲDjRRdͯIbLu,o*VQ`(31lh(ܹi;8éA:4anl$A "TöXdߘw)W7\^gkj0lי"suvMj7U7oI+㻳]wGc* GfL71 60SĖ!Lƶeo& Fc|knʸjcǞ-Vk^5NgÖSn]+57.X҈cVdtTi~I߯ i^OL ![z^Q7Y`QLps~w;H@3%Fp.<(2 TsDs^ 20>?Ϭsb1۝KdXi9U<ݺwʞOоx=+<\,c1NH?SS 䑾쾉ں8je sHv6̐X|σzcM+&0#ZЅD&cRe~?/0Ø3 7c@%2:]ճY֭E>ص{; N8c?GΜ{ʈ 4YMccdjﵴܫ31zp M]<; fFM0pbߏU00& 63*j<j/ݙ52۾IpR(x,l(x8RbJ1hR[J"7lWUXj!@2( _b|VTf>.ۯF1X8c{]R%u*+C&a`pFL}۝zy];OBs<& cqVyt~1]b <,*bEϓ/5cyEcr1Kf]+J3蓢#R1 e2T^ջT۷.L YV//>>hsމ m{O{&>e`,m4.cT-zk{,c^~E}r `IL@$cE IsMJH>nyZ&%E<[0V7m1c1 1- α{% cS*?xq ߤԌn>߰8l$Ҍ=_-C4΄nf9*[HK78I+c]kQ!Fx"~iV1C;"E^GZDJC*Eh+=8\_oj36?dϻs0Ϟ3j9Ptg,wY"sa#Jd::4=] p$p7ym$N՝y}`uq{yf?`G鿸bH(Kg/ c cφdΜ"oN3"2^7TRf!r63%ntcj)gϕ8D0=9q1%7}$ws ei|XQcQӘ164c+bL uZsyFnY9Tn/S L n̈3X:k#MOb]c]b2ZK fS!&0]-LKgfǎ)_qWՈ+ILL>AQZX@ؚ:_X6>.)W{1H3}--yMG6N?|qLl g_)\X˜-nBvor43b1hu˞(NxP583Z*F\D*Rl0R99(*Kl]mm$}V]RxҺ,Ywa_rsd푫9}Юb ;j<(,=-] c10nL$I&〸{nϛ r2aPZC4g 6캴@39Qkܞ^{ss9ݍ3=sbҌz5.[y;Ʊ2FSmΏMe}6T)ւ 1 FF{gn ,q쪅-,| xiYIڈ̫ ~ 4oGj cۦw;Xi2b/f#*8V7A1aq 6* MR6;[T2 %yLPYI!3ۑ1r1Wa 6fY&0TaaVo2KkJ3`!0b)RР YKHʋc9d \cJm֖z؂F;hև҃hAh@|ɘ"WTcHc F)cZ- X($b @9{*q^vQ89rU1o^~Ҍ%LiƒEcV  ްUē4cۙĹߨ_oK?FcL Ϙ%n~}WMZLG vcI̠G4`l@mgtT~8::,VcXd gkT:G7co^V0cVnnh(tc 2!yhm\"|hqL˜%~~{VTc40&eb^X3)M؊;&M=Grw!c##lhky8KX =&/c-8@(c}qC:4lb #~NѳG~:v@kS֖{zFJGĘĽ{޽x>6[\U6ZʑYzJ!*0%1sp'Yc94q! .!/Vhf; JFj]] +rr?]õ9C~^pk~ǿSj!1cϠ{mٌ3h|;a\T-8y&8K甍Ǯv*|N1Bubo0Eale51FA LрU&DaPԃt@)]>}:1 pҹ?u;v(_ ޥKuHߥruJyMEA9t:ڡsn= #n;To(T vSش!ZԈ'Gc~p=~)aLfFl {bZL]mX_̘=1y`J=cC ccdxE؊1UhvRŘQXV#cv!c7P\-I ֖ VÇ3vc+UXծdL:*.nIzfg+UK2vf+݈)f,ED@lˌ,7fV;#cgR͘Rؽ4cQr7bV;#c'XZ}jEKRFqV#c:꧗oϩk'PQsҌ%LdPTN y[$c_bDmgؼQWc6f,%'$rxKR>^;) c_r0Zy.Ǿ{"25ӥKW"oҌ%Lchݓޯ^1J1:@z??~/i>SO iBB xeY)U>|8#C21`I׈c7^k@iss~~~57wCčoWQ;jg#և(I~SU>0.g5RRT1fdL|eS|2H6/`.1cθ\,zj%"c01СCh*mG  @ –qAA1v9)9r061A\bq 5Ӻ .c;fƪČ}]ucNWrfԶ29+B`2*B\DRAD{'l M3v99=,c[t ܻ_7~ aqݻ4s?V:!~kE]4Ĉ]YsN]1h1`9N;5be0c{ mL}y;9`D'*؅$1vZNʇڟH4W?|2Z>ƞANK۪ŻpN&D2[%8s+ThU uW>Hn`,d < p-'Xt"J`j61X.?7<+ceL1Ao]*:RE5W $ K%( Zܚ67t}~Rgߔm a: "3%j@aqÇccB)'׀ F,^l1'5Pv ӈ3ztY7f} ۲77&Ʈ˘y(1 flmm@̄b,j)5[1e"baJ))g;[z%~ƖVf\.M9{ f; µ#ЬoYZ¿u4C;/cȎRr(/I~CX9i^qFiBYHk6Ao/X7f}cۉS2FS:g|<*&lrs\G'ed>Fsu}T=曄1MYbeݢN=F1z Ι#c^*ŗ o):4F;t.[X7f}ۨ6f:0ݑ_oN q_`#ƪ`LXy͸&<ڷӽh < ĭ-0V-cPcVD2 PR,vރVh2Ukk!9XɔCy붤sɥ*L F=!"t 4TzasgQ؈G} =+6cRydfK3?cA˞8=6UIQJGsG}'ɖcc lLZw&|ژsyic`a$0)H Z}p ~g822vLd1clakl &rMkk-0f4 'FFp # hN ~",lѣ iy-H> @9{*q^vQ89x>&>V1x0>ł,:u[F#P?\HQ ԗfd{H"!X.:,xH.oj//cԬI1w?hj*mJMͥu[oCiqa͕r: 7uMwM0HÔMՈ3F` J"8~cc,Ih͘ZkEpcL ciyԹD UU.ƙmɻv8|Yf^ڝ=3.ϖ:jjj[O u[\͇pvs YyƱ @G0g?#;K:r3ֶV'G,XU??~"b*u+nva^e,۽1} |\@v3!wSӈn+kDBaLb0*-ivVS2n%Ϗ)cEO "b勫8< Xx_q[l6'0jll646lpU)*WhZ%C,WGa c軾/N1fgWVf'Yjx[% {|+2 N F"-~ u#z}Nol^[8I29x_yDj'4i-!GcϪC-ydNGs$l3%HKˣ׆ֹrr0~qrs9U!c1#t7"!p+?c0^>ƼrO116Qb*Xb# |VLp)f0jc`+~Z83y=di y&X%D{YIh'EWMכICM^W$$F],(XBւE,ꭚܐ' Ik}wevawvf݅?ghI̜}󌀔53ӚGHX ɲGA^&ݦpLFGVrMdʴ[ccS7]{eLAȞ6F#ٔ1;,\Տoa!PLeef"yGZ'$$X癬ZM\{Ōt>¦H }3Sxqf%S`;oc||ho"%[b3cXeebI ,fzj;O`BX#^*.N`q~AsŌ9uscaMUQQt\'TdJ/ex/"csXWSSW_1wX$d]P mX[q(9cP" bup^. )b/ JR.' : #CEEZTI`ZGKr *]gJ06>׆Gq{$ld_5nxFK:Y7Dgp~ݾ"3籓=79k޹a MʅrIBu@ԀZf9&lWJ%k۷}{8m:sVǎrlx؝q[ , .1BxKv:GI&%UZMK*֔tԝtݞ  cpvΑ +܁xvNcLf6ƀ>^)L̆#'/S)M{rckDhrrEaD"iuY_3c} k~͡cA,*J>!?1DUKY:9?ӵ;c?c,2A*JtTӻ{+4% msFs^8֫ɩ]*]+AƾІ5gLwOe%SJNIIUX̌}.3\ S<[MI]Ų,m2EtlJ,bg4a,Q7= 2W:Ee,vS}el+*c7 dv޿?UBJxFJ8;ce:c { =6:dLa$i_:>$ϴ>d?Fz?8">S?3ֱeGZ0}tnX[ݨa`4,1(@Zn Si;y2ƾouƔ1@V(;E(!nR|7oþ: IB}`01,|p6rgz5HFP`<GCJ+ S{c*1m:c [YOqJK(c,bml%#<:Aۣ # \mk0|ߗM06;1{}˜RKQBkֽ}E31՞ǀo`ۘFgLce,1è5jn<[h[_G=IQuPzX18W wFY mcM{`̀ ?i1C|cT,P-[$ Oec~c:c 0F e3fnn ކ ~9nlVv.Jgױh{ǘ,"-z^n/vz}c/}Bg, 3 ֘Y@7ߍ9c|5iP02~QpE{>rcUU@;@Q e!cźWv?[<.cOlK1Ez5dMmn膱q׎1-yopEc,>+$,͸b \H +cS<+z^5֡X"1L5cLxa'Dy{\{}?r_,( @PƜE6AKq)IBtqO jNžq1ƿd An,@c=pP,6}l!am-?'cH ?ub:֮ǧ-X O€{(Wt63)Xe+籙.+r 9.-,p zzXEQ tƶĘ>2{fD+/gB?lPҢC?^~zȧ ڌ] ASG3my#*ϝ3d l0~p襋BAAĿ!cL?tm11|4xJsa̕qsL*0ĘZ>z<Ō =\u]d3 5])#ޫgcj0T˜7:-^3чptk2k췭͘k@cc/aL;yT71#βnx6%5ۖc+uy(clz[PׇBjpt~䅢GuHo8pZPcXcs1U3}w:csuAݰpĦgyD,otWe}UVΎ"&1s2N3<-?cٔo"&چ:IZ6ZcջeM KgdH/Y4O0cW}}SoO>hd:lsSjo(f=C)?a[7h th Mv&Vj{e %,>!V~hiNI?Og,fPvPS/jǐnFu햺) F HZ'F&,@=l8M.+*[7/+ 11-uS 1#A8 Sq1kRN3?N(fX"o9cwP=mv(G"% uAK,X:+cݒtƸQ "P@U0"Td/e?L](ل`E9DuYI㌡O H$&\~Hg;NYp9 ƎbxĹc!iPꌥw4ce Q,ȺfLm U%!<&cbX GP\9[@fJP1Ԙ>EV9mzmLEnT:c1} ".]1\MW@)lXJ]@qo2fu[ɁÔ]tbeU<$v-hE mASt6eb1P̫bml{ytִ1gC*f!;e~̂b4XyC.v`IҾ.CtXt2lp@{CA3!Q@V唰X;ReM;RٻJ~zi)oN-6׭7&ԩ3coV1 e):cxH" *Oa=^@W/!wMg_$oZNnOo2M=~VTe%|)[ %g 'q[,X#1@gH^bH[@gBHMM^P2v੒6s76d̬1c-?,]Œ[wo\&#X׮JׁxdWˬt2Qg%(%KFᦌ9 m7"+f<'2*/|ҹKX2o߬h9ᅫlolwA?x7lH;Eg̔,f,E!kr&kh„L{ WIIcfUݹG]< snrE۝-^{zmuummum%x0.[{m iJX`.6,!O 48\@J*0#vۏ1;>r, r>U[{''/ Z*R\kmPz%h3qb{30/LX,{si6c iA) jDuPq  ?f[U]Y{J>|zR(llQ}y_+˯X^oS$vxܷz5xk id@L.ҕ <(ry1y{hh6cL5 w\ѱoI=9=mWЇ Yڳ.잝9Ǐwe )Ͽ!r㘳p܉:kNTVgJ;aha !dPcuVqp4t1gLCs0@K5ΌT1 p,C-pSDϣYݹ8&ݓE7aL:pwVJd 0N)ı-@]I$9kN'D|쑕JQ L4+fqxa !c?cH଄yY=1F czDgOoteư2&$1&0&YU,_%<x_VHcTs Ɯj?9Yc'c^b`Z0 cJ0&Y+`L0fc1 cJ0&Y+`L0fc1eScoZM&ۏ)!;A"z,u&ґYe9Ǻal͌$vcI0+9cc̮nz1:Cp$ql[ `lJ0V0Q.\aS^KZ<`ñ8ּx󈢛\լ"U Ϡ?ϐ:Tc6H$RP䆆[<x{`]^cJSAxhv˘0&}쩐l1̿2͠MvjVx *a,0<@bgH-1 d-DYas`3ؑ L#\լ"U Jk01c,?˜!DwԸլ"Uٚ!3Ib22H.vc}g{\ȭfD68{Tc Z oc!ctCs ;G;v#^L`Qk"vs:,3!b^/LQņd` n5 *J-ȯfze=OcFSqXy5U#$)AA(v(cgĖȭf{ Dl>g&\XC$C*1Q '>ʔ@Ďz 3v9XjVx]RY^2#ĉ2be "YrgEl!51"#aý`L籟0zVJce`뫘1BjpQ ݍJd #2C ( Q Wc&ߧbzaazw ʝe05Lo9yYu,̼w;rm?Lq;=9av4c'x%]& wڇ}2 pA[N4ſt82WKw_6%kn2[JcfGӮ-hl(3*=}czRKem1\L@N4E} KO1*4%kF؛ DԴ+cv{`lm1m^sTeK{z58 Hg8Kޜcn:ZfNMbJU-cJ1K2FGD[oc@cebj;Xm}{Y:V2s1lin{;0h"cVj3gu9^*1U<0F 8l}Irs6S:z9^F>r,D~^q%š̀XthV3&nFM%Y<'8IU˘9+*CٌEF5NLOjMF*R2fn7S{M-lMOUXGhdlr:)1Y^sj|R^V+YEWV2K=2jV7 16]df*7B>0flnt(t)al{J%a%OBnu l|]E@n,Ҫ̵IF_%^rVꃱa5X.cZƮ6a,VM9ks?n߇9 T;;:1i2?wڜ̵A<=;FU`di1֢0v+]uaL'{^C9gn; 1u&e K3\Uz`̌l{˜ 1և]50yeqFd)yi}E۠yKs Ies$M0f1!_=|:=c,94Y{;1ڦPcs<}xk4KnWa)au`x3a^s}ӚXdsIxmֵ1޳3YU 44(\dSbX.u%A&ɦ=T\-C]f3vcP0VF;}qca#&1r8a#>3LvHt 62Gtw.8GNd ?JPsda c>%Mn,d4YI\f{S bK;9g:P)v+bC>O%Ww>"c$$4c`8FI%PgɌ^_1؛$[#ɯTKjzkaUym8|N/[n:-8p|xx3oXCtTp@G02wOYJ^U_`>AtM_^s9- `t4 -DRx.+1~%Nl%&jgi q츈c1Ih]VBBaLıå1%E14pqk2{إd"YØ?N3=Da=]jx\jKԾkZM/x:߫0cc0+cx03ֿ8<8$å1_l^q Yu^q>ygm/jCHC¨20!b~L\V {0@.xc-U0[]O^u>SfҤ \q yTh H Ơmk1X,u-I TʖO'F FL0҈KM6D_m3FvݓElE7x./Uz+ڃLVOet#geblPƠc9IK9Ld6G=즍e/^ 4>|rۗ1}|6ͩ9*4[5`#KYv21VyֺȘ%hV#Pa#Z ⒆h`ltl~[ojl!%C=ZX1u-cxHD#-L4cF,49~<9nss*5[8VU 3Le~CaYM2V&6`P#@{6}Ipc(^TV[ɘ03T-5l#2}N^6,/fcbCMf[9HƄip`-KL//3~lC#@&V0K|+2[qC^g橹O&[wϠ1+I';Yk@Ū*{gOuY1JqDư)|s )cy?cD@Uc+s+bo{Ebӣc O=3 Q+kgkj TcĶO cTE~csq_;No,sUG震~> =$cFgo7q.k>L?xanW1X$q\r4sP>>]{HJX1uu|m`&O,~z{ 5v7Șf,WC Xvr*jw!+1cso n7U?/@(c;3rɌ=!(.[z_ի_{PpжtC` BX]n#uP@" VB[u˘ZcyJJ&~~gK?Xl-5fS+78WS=pzv:VEcZ6V15ʒidҁBsMMfd;1xGdL,F_rƣ1cRorc~rґhQJ{簒*-dz{"O^,cڭbzrP"&KN֛͜Ȅ&;&c"5=&0fy9\6BaY} VraC'  dG&29Aɣ̌هoYVs. c%#=ڜtYtc#h$[L8Mvd!!efL嶄ύ1h#^BRuݵaf&;Bv#hs;ߟ63 pɦ+ )RR^*/ W̡HCl"e[E@h"B9ìd[zw|>3Þ,F'o>zc_gYͣ׌]de ﷕?-{w3Ey19%y/C/<J)sB&8)o/~U&؄ Sx )]M劷ns&~D]ռ|̭3>QbLΝ"Gy/(/b3409)X'؄ cX@u71VE{f?[h8>zc |Lu9px${Yc(%, 91ƤX鋟`чWR-ބU`+:[~כ?35ָTyE]F\8`罄qhq<0&|̓ 6 Ș}azcPc0qe͡0L!ä5ra͠]!oz#\ۗ:߱ʺ[͟^oĘk"~1X[XwUƂ"b1c$'B1%EcĘcĘcĘcĘcaѹ b>#gM9p2[-BRی6S3eG92cvF,F{{j8-;p=F|8$ZA I&qĘc ^sMSv:p,WP[EbH ?2<0$8b1E.&X`5$sLkˌEĘc ^1b[ ^1b[ ^1b[ ^1b[ ^1b[ ^1b[ ^1b[ ^13F$c%cwIIH6TflL2ddlD!W{E"ƈ1"ƈ1"ƈ1"ƈ1"ƈ1"ƈ1"ƈ1SLg02Gc"HMbs Ɠ/͛0Q3-c$gS%IrkFssG1so#9'Yƪso 4i{KqDŽX$}WwT$AÅw],#r F*X!ST{!\uW/09]Z{x0y!?5vXbc~>yr%ރ䓯L*i -5['VbyM.v>ʘPvJ&>f9_`Lnd o9u!"e ҢD{KST1>+0F=|j}b:֖^|j$8v"&D1 k,Sb]XWK+l7籩Gq> (֮cK{1y4\ǰ D"WYskL$˛W"cwsJ~PDb_}Jt KU(XRR6U} wy+d5 sO2̈H2y+d59'^(c94RXlNϭ͊יꚶ %]N,[>ev(Ո?c<VٸB WLh]!1}nXTcp\:c'Vz8eo67fo!1xoTz鮐3;<sqN:{63/3ĒG^zzKy"Ɯa5A7t͘o> ckE bsLe ^8N@SAs/CSLR t5.X +֋,[ڲXcͼ&YM/34{ǙL75c<18xcp 18 cplp[|cvceS8Fo{{?7ؘ6g18sf & jڔW5ndž~{u{vXws[5 )U&GׯAw9֕^>zy,[^Äޔ*sC c1 zMp 1^c1xc p ^18xcp bp ^cg˺jRĀc ǬKqv/$2=ī2)p :V(0ò+IURl>1]U^hcR6y+nU3_օ<U p 0;&H523[f9G|윪sY:}e&]hfW ȼN9[X4WLNv'oƖmk5F[DZov}fsdsLWQk$h$' cƍ}ߝBZ^&#p> -{i#k8=Ѹs$ DZ{&"x՘@A(AY5+,RQx,`l9$L̜Itr)Ӝ1I:ƑƱ@{Cl:c|At/}ozC/̓YocVJ =ͻYocVJ rݬ7O9@x4,9_}h[hȲ߼ 9'<H$sq9 ;j xe1RD~l:蘵췅P8idy6 sAvdCIbdy6 sAvyX~k=$Fw1dǬg%(/7f qt%zuy3M1gy6M8V'{WG9_1j۳Te&cCt}z . 9XcߦO݄%Θt&$%ΈQ< { !cO1wձ':& C1c7 c|yԱ:f'1DPt:'6~cc8zӱ::GTǶn/Ʊؖz~~WFϱL윃ce:f;]@Gʛ!?Edٍk!q:%8WErNc?Kp,_Ouc_XB 1 yb7Tktv+7J_kTw{ۜ;Gt1$N@Ǫ@ ecZP7TW.ǮB?M\d*oHHV'c7cXU7q]ݜD'[cWq[F@C#6Hdiқ9Ψ^*iKVLX3ZbHmǿ2>ƃ.6nͱr^>>~cdFFm9pFuHNe()[h{!q: +^f :f7]X??Xʽ86ư 7ڀ%uϳK$-q+֌V'cx^qa)Mc/ڎ%i#N].ȴd[JB1 c +o[h#N&ke٭X3^H:tJ[FZbof:sXw=mCsĸkUqmF$~39֑WSũ0u]ƭX3Z^H:tBreF7sQMh]̽[fҽ8t&ٌk!q;MK%K ;b0B7KF':q1t\Qp ;{ GqCt~ : ;0c ct?:@@:D1=t?&n/jq[t^4XϳEc_4/qlB$D|.MU5Plz ЯZRE A\/C^3HѼ RUm蘽ӨcZu zDŚX9&V|!Yݮzf:1-$? <˱@` },\d+'5ǠWXrQɴWq_˧ )X᪉N8ֺ 9vaMw z;>٧+ڏ1*[51<ʱ2,L\o*wl=V>'Cmc<1絽 5R:f/&n/}#Sw'=! {^oG5tR>K >`s  su^*U&Az pռT|:b#_c|\++Pn86lh/sP$9fQBfPJ_1R|κ^>/f(ArQǻ2F#EHjXIu8n|KHk.e#gWX4,)T/=)ERq̎I|*I\q#s=v0!+|{!?C1B+GK#CaTY侔 8"lrF00%xd]#]uNJ`J0`"6?KOKu_4-rb99n!'xkC"og'@pp85@k$ ET/Ɯ`=ۻX4:;&ݎ-BVύ(?D̎{!F ax\;NAv}E|xPi2dHI=K%B^("c\<$b=5+;F3ڿ쓒Lñ^HMZyM# 8aft)yZ҅h/ rio9լOAXC(D4RhUl.%aE쥧?1ϼ;iǝ75Pw^6'3گ8c@tL,2E^ 6X8tlA.tL2ڱ~^DE8QhƙpΫ6| g8,'Ա^^E2X]A[7>&Vs/ꘊ 1'rnmE܎qh?Z!@^,E Glm>9jÜ`j>99r+^{]ʊrA#z+F ׏˱ ͻǜ`?Cs-ٷ|JV݊AM21.ǍXzw:9B18V]#[./!Աl-˰d^ȇU^;ka'8S7c,c ulXZV\Pǚ'dXՐ2dI|P,e'F3LPÜ` ıqrc2RQ?yCE\vW-TW/_&r,5:Əcqcߣ9BGs؛NZ=acsTneu/[Or(Ǽ6۲fSgNV9~"lj 3фRV BX^e},՞h7 vC=x=c'١5윞C"3.xņbcYz]lvuFA˸ 6ei8\' c}#0TYWd˔QXrH-g#i CBDXsL̯]gcZ=}D0X Ñ[Lر߳[#MC'W y'zk^u98|Fr_ףc}pд!Pڱ7{`ڱj^!P11 : bAD,8vAac?{ΚVIENDB`awf-extended-2.9.0/images/gtk3-plus.png000066400000000000000000001506141477403510000177110ustar00rootroot00000000000000PNG  IHDRcƕ9PLTEGpL¶ӫɹw̿ͿѴocXZHiL?׋yi_JdL¶Ⱥ\HٗbL]E;݋]I]IaK{˼~ɾmPŵuXyfʻ]JgMΫȹF71zg[H^LcLeMfOo`ߕbKvZǼ[I^IhQ"!!gP;:9-,+qU䴢Źwey321n`lPpbӘ~pa('&ûB@?ƷVUTPNLýIGEôzvsL<5jgd~{xz^ba_ǂ~Βw\ZXtUFЌl^nlj5a)OfV6NYתvrnӤpYqqrܱpӠEte4s`mR*෢nZ{<܎xf0.Ye>tP miZէ$4g4濅Sc(o"TaYŚZHxZ8‡ÎԷ:%R}Im$(l)՚G)u Ki&TƓ 1rl쯅e[_ y2rAH vK 'Nx $>Tt $UV@~&vzLح/NBSqQ c V# 3A1'W4orxBS)Y2a4Lɤ>W=<(l SO 0V+33Uc%(tfJU4b26pA"+5G3dXa9`VI 0k2J3P w 6Q&23TMLIJyLV5@z{[{Cn :3q fh~*U4ht m,Gi, ]=%WI6dԂCy*W"<|Zp'mY jۭ *t-xjw2J `ۺ{{[:a,V Y*{=U<u*"j2jDz<O VǢ9*6#T)ɀPCDK2f529QA,<.ւ}JQmzl2ӟߚxSFV\ЖVډL,ak׮]uvn82UdM) /of*{ kHbȳj1;>yj](, Mu èsR&)f 4esJ8hGaMzui' ‡EsA$4U^ۉse$%6D%8,bi cu{F{PWÊ~-@7 ƨQ.is:N'FU%Uǜb9 |"44٩j)e(<$~ݷ" ޑX_AQNgc`Y;Į茅smhFf6Cc-d`' oc݋"w/ay<&ںcES+23ƙ w_Gӳ$8j+(Z \K܄ 7*lK B:o5L '^ 0yQ<#:B$q8|UﷇUs~+VMD ZE++$Jn'O!_m5l9ᩳjn\Rx%C]蠟FTG烤+wbǬ:7kW59׊p61zayƒ'Jgخ'Y<6ظ1lD[6(SdwEOb^xPKq ;“^J<Ol|Ž=#* tnQ=֡^ ހBˍ< CTEΎ׳wtQs zM\Fgh 6##G HZK>ToBQcޤģ-qxPs==ӣtyDzMJQ5zSem B?Ӡ> u17DOXC/V@[x;3qSJvat3{VC FMM\l_Oe>Ԝ9_yNj{QS~g2֤h2o˘2czPg-}MLxH8H8n2ƒJ6FCHj)S`ԇr%6nUd|v։^ep_WKi̱mIZ\^$Z5"y_k{hhC|8Ƌ ܧk5 %hi)U6BЋj^ƍAiu3=t|4Efu#cǴRZ;+c/%H3T>SS³걆 O ³걝%w> љ3?Zzl;@^$@Zz'9@;L ZCfoX 'Z;:Zb\,ұOutXO>oWT뱗KDTr,\ɐDzsUCS$/r>t(LXs;w|s=gc~d L{̄<װz?x\im ;q"Wd~91lZ+;mzmBdc<6vC+XI䱤LI U@E=z#Gpul~驩ӈٟf"D"W =6quM2>n2.㒛b>>+}ԋ}G>n>g`ɓױG )kk=^ݡo/ GsTԩ᪯I\,9jnXb.?nyW Ի }X#DC&>=W$Y,EpQ1:v!ػB\^3_}{;oJMNJ ŤAao^}ɦw?m]iZ606AqBėB P!Q+lUeeaC1,i DMҐ 6 REZ͎#4?ys?ltc;~9\cӈbq@ғ,8v ckI&uvplS:dD8޽~'И.{ؼ<}! {qǼfc OaW8Q ޒgLFsnh8vO_9#̬nKuznNx,2tIC3jyvFl׹nwb{; α:h: dFbrLؿ^0?_O+F86dSnV96<9:);c'8;Z\~8o0Pƛ:6YofВ<gAI$m9&Cɮzo"y8s>@ss0*s>ߌ`Q[iW|3Q8Y[\|x:45:a;X<G??mi$!Ǩ*z4O]Ix簧&-c>cX> s6nǩ-rli~y-1=XlZw1[XXr=$OΚAɹi,9ff>c k߭kp)+ۼ!| -8jyѠ>eh ӻ簵j{a\`a|CtHqs̼ԃZӠNLO4ȱfc'#2ևX96966"x<;>:Kӈƞ}Yc"/,.-[b @;ާf_kЌ-a1E8lsDX˺߃X4ǒVTQcɍTO*(ͱF'kXr#꓊5Zc&oviBQqfq"IH^cIncD~c a+GA$頫u ~Ljc(hl(vF;qqD_Q|a^8%DP`/-ZN+Hf%p5*h1醃}e6.tCMAs,i؃LD1y5PbjbRjvj P*$]}T7=G0?8xj#kFṡď .ŇkWhENJBDiOXZjТ4p|(jc>~ iͷ1e^AkѢʨ8 #{cɕ: ' 0$zZF֢p 3ޣt.4HF6*rV,,,dGB#~tjH 8a*P1rN X(8WZ 8Ġ]Z ELa+5R,9L"!@+b`a[OJ<# .p!1ZC%) ҔXm!Z-< ɇ0Z7&X!ypaVxT[8a GLͅ5@! E4aw ŏboc{V I3?iomN+˩]K= ra7R$սP ȐO!X[NGIZw HJ*~Z0Pij;Vh@ Pq!A;ڔj.ÂM09QRJ9IAs4(k{8:,8ٹӎ}; Ca+J_Y{p2J`S$x9yu'YUԄu+i*-nܱrbMF"JWK0RLX\} s}߾̶7; CyRha`gJZh[DqZUj,gV6q0Z *H@DeӰ!>F@vȁrkYe5u-~2"6Wl-GiWVj]oL &b"M&_Rogoк2tn2pG(IEPMk sl)v.?ѕ+g\9b,-ud>hii tQW:1S&I|2&6 \

N|\1  d/:c?SPr䞖~RӤABh%@3p()  sޑȆSk\L8 hvazf^vNd30Ȇa98c^ p3'5X(85;K|b(Jf xUϕC2{IAC}TEC@c` `xH6י҂DלfXQʃ/96j`jaiA>lE{G97'ZK&v"==)\ċ">}tĄTYWGbPLI@"[Υ0bcphFu4X1zY!r!tӀ|Qɰ\$%<(.>H<`HM(N&9>URxaǰ}zybqLN=uq% t(qS,@CvТ^0!a!ƭ A8qM-Lrpn ab09p}Dql##ycp p'{MY_'n>B$Ii-m]ܧ2T,UYeIux`*>ͱ)}t%j8آXmIs]V:H1j4Ǿ}Llʾ|.KXׅ$IwotzxȥQplppCv?qkku|?2-=($Pwc''c!T&˧.u Oץ)M^)`[UfLwql7±S}`y/^AŠ9ɦ  amTKk 1&Ր}D foUͬcƱ {bp#˷&>L\RʬރZ=-6)KokmG]ĉjW}9OWVsƱ pl˚ _V(uP+/{zŀc8%t7h> ѣ[M \("Ԥ#']? G`3ߵ?GrL}JZ¬k?H10U.eLrL&'NR="1b-TQcЬ+%Hmq&>b'/8y c;zirR}JXj z prdi87uz顏U#b29%1P/4wq#Yίc1J{{'1K/3Ybp̪1.kz|<">d0uB&)h5X)_Aݴf83J?ʼncF1uZp`"5:&2UGg dV&WB;*zhb˔q`:Ôamc_A필#nsؕԥAcHZ)q āSQ0+NqaMSsPIDXvdp7hE zR!T_?Tb tWc/>WecSWkf$S 0$|+( SjQIڭłpw•&!\L47h4n6IՓVʍo/9}}t9=t7Cs];Z6c^!!ޥgJ*ª& f' =!dMeՀ~+݋W*26@Jph((;pDR ٞ|ʳVK~8ܱc1OY_#a2PxYsEOg݂j.Hu =ZsWۇ3rgw3F#ܘw>IA3l|ej+/V`ɂ Ni8I-瞍ܿ2c݂f%ΰ04;;Ԁ崙8Ս7PAxJL LcRQrQ+e,rFkmuc?aK/ʖ Wuh(a)4Zf2kCxS?0j8f\6lF+l ̴hSED,uJEY##8xW+)`z43sN|fɓ)l18dݦNJK]ӘLd[~؅ k! *.9D營chf1/I3cD`"|Y& -ԄJj=p΁JggMN_>, MtG:鍳َH]-Bs1e4*h4Uclh`?ı'w͞r:"o;7*,Yc1-SIvʒdM|j3<3֝_H  ^PəoZ"ۋE-GMF>3uъ.X jLXe"[&o˦pň9%=vАB[Bьu $pl%g۵52M51q~~Fs՚1'}5^M:L8cbBt9  )4 @\Wu8 K4gT0eLc*~'`{;ƖR,c2(/ElF˟oW#~P+‚Rjԙ1z Zl@k"*RI 4W]e9qN\:6"_~0`uTJ66|xaX+|8+NkW(. J)c/)zM}Q$ CunM4aSXJ˦ۄz@2& ߤ2m{gVIi9UP5w*baHm}\0R|9zmAW1}E-,dXHBrUP#c0+)lI.a,)$XВ@ R=*fp-+5ε֐0U6.@x1l=rHÎZɑ{N[ثUcCM3GetAJ7lX!\b^iY{&fH_hk,#cf MƬs_X. P{s+WՀ  )YU5(Y(>|l@ִܱ<1dK2&KJnY?jYcEo0RҌXZd,TnMXeW{UP%0\ Y4 dB!F+\2-HZ2>9d{E\q P_4Ȼ!&u1a06~ c5 m֘2C*XŊ8s̀jDܜl]K<&. P%GZ{<-X$ctW#]S|Ije1f m(*NO ޷L*2ϜWMˍ. ^I\ʦ l}L͌($c0$,qny|؆FyA Go)w'X@]9!{?)gNc%\ıG2K|+ jI4cSOƛay@k#Jܻ_x" ~H޻ݵ ]zk'F\MH*vV[X86udlIsu_~iܪƊ2(=8qaK.o"+h]e+Z"k$~?Ʀc:͇ MsM?ϦbL LZL)T~k $cfR+R rLrhsw"OMK8| vGQul1|d&9i5;륿K[ cKj=_m*bQD#Bt]Y/.lU9k}鬴4l+%ע&2ߍf}Fs[7c/ƛp#c1B^D:8l**Zx / f:C3C̑[M2RA[UEBHڤ@{D/‹E6Ɗ=ԚaCr=0;TNj/A/SdDMt M4^cNOC% L], ԰, @eqݰFb& V,bD X#(˔ُIYٯr~w(:<0&ъ A-4:"gN(݉Inf#հIY4% K3og ٰK]4Z+ 89v:S*=>mͶ{Hy9cACbCGd(;G-$UfڨMŘ"2&|-K*zZ[`A+Jpvbq$V:;ɫTƊt(j(r#TzgcpaF,cF4CA)(8F[JQ`@<\w`vrԩuдǺ āZˡImZAiZ7qj1L_ c8K(ui qI k|E؁df6#åNDn4(e-eؖΖ2SB\"G& 2|l'Z BZ?ܩ':NQ&`NB2_VIyJk"U#."JcfI/sE0N1pBD0M--npm`l;dXE ]R5նaRve y9l6'X"lZ㌽:ƒc|ٞƉp݅5C=ZnRa(:!7G:e4 F9z ކk(QIq 0\:ѾH L3DkuMfps51{=g}&!8Nco"ǪޖLϗWѹZEw^Ɯg (7QGHs4P;1'ZDw 8H;#p4 &ɘ,\Hz޹ҫaXjj;&UZ" Ql01cGm)+syk+06jK[7nK" wܾ\57>q}'33@}QϽ{+wKpS.+, qwUDz`&4 'blpЀ3 &)m"ㆄzU8ٯip\"E]3@'b)Nϝh<{sgOe&A+T(tr#-$n,5% x8 _;\=7qG܇LtBj;PtW`)×>XnW& GwG QswXn*M)uNU`hT<<1`E0c/GOb2c' 0Rl^1cwK;wıtG]껞}!}!}n[wwsin~/KosNy<}=}ǝ:ÙX'y!b'D%ɣ*^6c9A+ n޾{|؜1*Xd,M2;1RMT(4$ŌܿV Q30[ɘNAZ13J{<78o5;<Ōs/؇g|br=] ]J(#q;^s瘈+cS@6~2;ka@rDc.X rpT6sr 5)eXdn }_3c VpV<~ыgM5elϯ^9k_\)cOţ+; q(A9^itbyg쫱3Ɂ077.FE9 B~/"\P|U\X@W^h2 5g7 &|ッ 3vsp02z$S7BK]|A;M) ڜrŮjҞ8 }ѳLƆZZː/nߡnOIwX<Vt=^C읞?9tޛ:~^~eвl̙{TC/'(9|U?d%«.^~Y_N3eU*Z0F/tǨ0V1 DBh)9d7޴޻SX뉤)ĕ48ɰ ܞB[KHv,0!sƠTVo(W斷R$>{2.{[ȸp^гۉ:ƾ3sV=t~fsݲ;UU\Lh7=6ڝ犭Fmms$_A/Crrb,6`C],H,-zEy|eS{A$F(!*Գ3Antw;^j{znQ%-ƱmH-1jU? ,bOcx׆1.0 {=g ] WcKhƮ_#V}r[Py^A.UWb;)U{X[Tّ2n#UzAWNJ ҩGV !s|_%S%Q1,cEIX !j2d6Pۀ7Υ\G~{,}\8&3vs&؊wAlByHj Lgלr!X`yoh1-Qmh$:G4FqۮBŐ"~` !,F@|'VdKZMI=/D_`_4d 4S+R4[KIrd"Or: U$'D kNWFKrh -BZ'hJmH6[x[V(0lGl؎ 5H^R(9c_~@ieledϾzp߻|8c2ޝ8Do.|m+1c3i./;JKj´-L^XyVGP\#2!F/餢Fy|Vt(m$<2b挅$1o)+X5!Ъmw1#%{պ‚/cz22T/L~ XzK=SfxyLCt {=_0ʲ[WOQO>S߶êNn-aaKut0*jY2٬6%Ll;6h| Egsx׃ ##dD6cνwso4߹'͘UOKtOŎ'V1ɮ zgr XbS"ydUE~ddV;F#yY8ʶ?VaO[|.h^8 -<|ӿٖ/QpqKTh*>WĖɘbE}7B.nr]ح_rӋ'}2L',}4/sz,c:2IA4B LS&k Ji#,2P0r/#ƘKx1hEUIc\n4^Ա4!V1#b1Oı1\ 2PXA 4UC9b, MtGx`P `7Ki]924nBr]驔njA>{|G91ci{ o\c}뱯?;{g[O}eK`L3"n_/8sW{_alR04ct"p R-T s54COᬉ?g5纣82h'VZG=/q*QO᫿]\%b,[ ޥY!Ls4R+KzG[sP2S!޲ҁZ# .w) Iw/cUSXϙ]^jڋGN >ϊ$O Ϻ^~mޞ\yx<1}LMh~3D~c  bXҌdERV<4;; *f+Ǜ51Ol)5|7Z9d,zl5L&V,2hT5?XwGzJ˭l܏g\Z*s}k/J#'Hwlyߥ2"|ϣ@0֭0$c|2#Gv6uDrJ#`,i"Ć Ge(;#k\Gj;Ie8 aTX\MtJ%ΫZbAf$fhٮHyy9'\a s7'դ#̄32v(N3g4 0ey m`сLՙD}< _fco<:0%p8t@p5ϙ1(HpQvgAAQ$(jd XYǎHఫa?:ۏX&R_Y%O|d53*wZ\;gc*()w"*]rNHI:G܉Un8HUjUodV&/\ܭ@iX֪P@Ш:̕BZcuNse7xuSs97rMy0Lp{)tiq_ ^l!cZrTFQ5ere5QC%c{c,)m+Uiȡt~ȌV}9gE:Zn P - 2c{Ht1#{(F+<`fK>c"J5!CtIQI,;r^\fsb㴕O{0VB5X15. 7H>ef.L]N.׏砍5>\Vvyf6f*۸y"}W rkJ`# DA+A,A RR>c*|RD( M1&[JvD|RuV*@'ZScӮ.z \4s}}`i90<%ؔcڹH_7[0\0cz\z?o1z5c(2F傛˞n֟Z4<3@1T55Y5Br2ll\e΂pudSEж gh[wWc1+ؚ3&yIs7X_K#яcLIB,O׳HAh\F9؝hh}ϺwoҽHk ?1SqF+ۤX~nM&bSY8j|_,lφ8P#0J kE49\I(c{v?@?׈+JD]r׋/j/Fz{t5-cwB0cwf-C},/;陡;w,cƚ4[{-q.c66"62ʞZˍeQ˄//Dh|WS:|, iL?+ל=C>e)_ٕ1bK{1ϠQ;gt{+}-[`E 4]GSW,D9cb7-c.IlnܧǘSL5. h -e"!j$C[DM=*~a5 @gB\5vnofբEE{K%T:A߂1br/_EYMmIc7lH Cea.c͂1&-c@,m~jKNͮEb,e7PXX^[܆~l$6skد! "d`v">oe05tj>Rƚ2bk11T!cf0L~751IJ$$)b?oci}^NcPk%elm Xt#!PC/-ۻ &cp|2ĢXs5/-cǎE1ŏQ)SOʀ1v&cw|~섖1 5ND؉06{#~Z bK3S}Z-q.wXd1-c@,jc1bNoܙ*K]s=TQ _z_X]ƌH$ن ءech0v}{Ly3 F`xW^*^䈂s-89t~0?Ɍif1#Ɗlt؈c;{Ǝ6s:~쳳>Ȉޚ*t7{.lgfӿ,<_Z^%'''cc120 gl*z}x}xsO }hk 9σq;^+9MmzH;a}Ʀ^EOD*dj&+,g옖1 mLk{aoZKgߵymΞmp32᭻{_3m[ әͲgϘu2b J$ !}Ǝib ϘwzffxEaƛw7;>|FW2f\p:YxY|}G-ͧz ߠMMSg,1dn/ܐ@*C b06̙b>l&?V ߜ,bw$ jft 55-K 0eښޞ>nߺu{{0y+66(+L.&#˅T^'wDrjv Qk gdP' ѝ薝:] a21&x.2yj}sEΣϟ~=3k2L"+rϒ2cbڊ+Ʒ r .C ( fF@\*7AMc c]XůQ1iD3V$g؞>̽R]ǤWHW׈1-b;w9ӱL%K cΏ0{۶mmY<]̥f:t<\H5ʹ P e!:S(rƺ1n0;+37| A\Wim2)bP"Ӝ1߾ 7^3Wt'Oh׽#dQ QA\ɆjNuSHZGhH Ѩ0^wRSTFsA g ]+ _N/BV8 DD%<} Đ+n-Bi#c+cGXFZ~cyd"bK c1#. c+i2}09s[clŮsX1 ƈ̙~L7ں-p c?9s`>/lHl]/^}5cloTǀtΜ#ΜĖHou-kި0íUbjzYjs (g婈)?وZƀX| >)5llz A63\D"ARňCzlOR: v!JY] ޘ3<VXUoZcN\B=etMZ$?P] P%Hs.D *UE K(kp=cQÐ1BaktDuw$Q0' kp00 Hb;՛afpal!a$"`:!4ڑ 2Vn1̐><c1ִ EiyRD.h)QKZ;1ov ^,r([z%6C8\TtB%Ef`a8ī fCJ~3v0cM]?F`Y%ן'V v4s-vrkYؘZF~ "$8/&++Yp"*V6r";.@TUuVxcK=v,\5tY cJSHk _\{2vBU>DwG&LfsG9e=AElfB*,Wz7t\==؇%QF6\)x*0ePfAop:AcZcMKXRx{ &Uh&5 <8Jlilt52$EpQYϮs;#I.B=I~|kBkZb5?0Y\]a Zƨ\pӷbӍSPZ2*t~:rЮH?ޏQStiNsː1P$q,DށW==nocN1\nwwAσ[-m#.w;P*p#M׻ݮ !={z?:W^.a,f+c%b!E:T3lU ֛UN~w|"{ˆw ^|z'O|ju$¾}\8zS=ѝjrA$Iw{WA.TUUUZ#=DG:dfo77KYGѴ~Nz`p|iT?kc̏Qw_:NKS#nM |Zᇪ\U@njmOs0_еwynU Z #ˣ#RAfETm)(|-{Tp=yȥ/, D5bX ?2`,*+sq1@q vIwo'bi.yGm.ʓV |ioO>}ݿ(g\Ee"33=%; ydHmXC*clOSR:))-RR.!:w7_Z;v}cǫnw?9y_dN@gÓMb铬3}LTgreLwebH?d,{mb&L  M;ʛ0mTB-d7khs+F?sϼgxy|9 <;V 63T2Xf+ `\Flh`|[kmO EN%dXq2otA@FNXuyDDhDhsw%mln>t L.b?_RPV&?;8t:/**+;zԪc[g K\nrrL?"2:8ɡ! 86@̋ *TTf; @i[=vPtH'4o*re"ţcvg~OՈ+COؾwwtiYY^ZZQݝ}B>{'M72l99xR; ZG1eʟmd!: ̹rC 4ps;^>au8$+円%6m|ԝ[c3j O$*zaeq,w gÇ?.kOt-kࡆwŊ[<:v ca]*ҀO< (d?@"״zPt4ȧ!pjI,w+zEmG Qȁc'^8*pr93VヒVphZC2h@jbVGXX 4dۋ{ǰ0rYK] UWe~cVl+ Gbp8%!=ZqQdyytRtv JXUy߸Vw,xs[ X@c^)ȹ{Ja&PQ-I`1;U7-I /`n c'ء@:֒ڜZY/!M˅h9awǂ}nǒh`9F"xL!k1ɍsXŷePcKq?P>}1 c-$eZLZmXi}rSXEJ @$(X(ԱO؏:(ZPv##4؎5υ %8v̝c^:*j.` .BY7Xܖ5u1L u,couoýc9vh1kIgi@ yR@ZmlXyg1/?^|Y 91v K<ɶs:4i*K\֫c1+]!<:Ԏ8)[ci&SFYlZ,ɱx)Xp-ٱ"c@cb{v_Er^ïׯ?x8$cKwHм[c3bac߶c~y}O_jx5qSlW-1Hr c7 Ǚ~"jUsW?3WIjǀ c=W3(_v_E:x`ՙ֏O̫ɧcA?cONJѐc4|n/-pj9lǧ.=;6;Lt{ cEjǀ_ph1O ||ɛNlNfvaͺG cOǺ??}ϻ_=㎭1~F$$0/ cEjǀ_ag+ 9?T~"pSv̗QB͎y <3OᘯAcEm? 3jX;ǜ~:Vce!<8v/^<'{E㏱֦8vM罨խoΎc{:+?f?nZ\XR~M_tLpdo8dOr(N?Ӌ(OQKwDufNǼ)l8fF/"14}6NsjpH2YcGp({H1؜wǨ|M@NJc2scbsP yvs{;ǣVcw,~L/?VފHYf4442 (=;Z!珡nFi@ᛞ81%mC$=vM`NJc/49&og 9v Ozўr5pq1l.4{w4ykXΗ}F?fܺus`r&"Xfصf#,pllɑ͂W=,ɔ]p,j{8u(pX/;$ [X7|7"Guuc*6zSBc(I79}mw,OǶ_k퉩ǓS7BchpՍ;-ns.Μ9?; j Sg\l?; W[*"^fժ8,t+ @TE-+iI{8NP97; s 9ow4_=yy쇗+_ǬD^-T'O^l>˵SS1- d9"N8JHv珽Sݓy{$k#Q޷+Ur̃c32g@Vni`|rj»ccc nR4- 4:l#pLŀ(7bKMHyd%O'??{2M% 0-њsI+$ {Sۇ +ӴAQPz7fEKU9IQiGy1E: z"p')p؉OxeB0džEߎ<*ifEC%Ubb,21&g @P}&]^\'Be<:}ɳg~&-c6`B^4J<NJz|br|c㓏}8f@^b>d}|LlqRxI)1+4Z[]u'R%'ů va&ZƓc1W5Uui 럜ltɉ~1Pe0,ci`#y278 &c ,O\'F٥)?ԐckF<{1JH+ŷPk^k=61f~`& a C X3HShxEN2࠮dcNB4rlM16ż:p-nVVEqݗc)ޏ0Qul a,/z0kel": LjW.ThEDC+3Q<4czToݞպ<=863/r鵺ۯVIX&Gn W{F(< Ȃz4Zx8Β,XxyWw;f'Yd }1f'BZQ8=221N Ee}d2r@侾[lx1Vp4+i؋T!t^17);cP:6h봐cq19<= ׌{G͹ݘ~l!{3s}*oeww7J3KoQȲ7t#`ubhBoøcm/Ͱ/MG?6y9+_ʙ"=[\pu<|K}aQw}@/KZRmTpٌ/fDp漌?ހ ֳ4ŠGn vݻ;N\dDN@ׄ&3 (u^'87uHv91fBoײ/;ӋG^ yyR B$Ç[W^D9O$5vH8JH{VɓS4qra2 0R,#C?0jƅbfRS[F\uZ]l5bk0Ĵ76HZtvT9VٜTQ1y{: ZG1e lK[nk睙5cv  DWɋW-%AC5t`$[ϣ'@R[ۯ$&{Zn1\WgḬ"~tlI`X^ӵk/ώfnłnO˒t\j>lnc,swGw=!hr!9,0K%)7$yz?||Czeŕx\nn~Kظq `㌠ҊԀ܅cnkY^2ea8 |пut'XNjYvĢ{a\"PQq_(!zm4aWv! \l|~lo뷙w[ܞb̚Td]( ];w>uoDg** =U]]URxUDeP;1/_,9Fl؋ʍ)M3YӼ~?yV ;dQ2L جzmeEe#g4r&N pKE Mۘd?{gԑqf=N!Ku8*-eo4/R#[zonZ7257j'aFB) V@jQj}r;c>}2<473gf~/zciɻxEƧL%E33<gGܻ1ǾqhoP#QJ:¯jhUxj҃6"TJ]O⫈w /\K+_\,yy>z>l1Fq4 DbiT5'%-)|(J*5BjPhSby1x喝3ffLc{V}Bb8qjATjdLeѬ\fKpFƮ=;8clj6Uw9k1=y2F lUݹkk/4VۂڌClÈ@o!cx`1z{y4a4r k~,,ƶ BC!%t(%T Dr O^D7 CRqE*q]Zmakb,_;$1VSM!B>x$Óz 9^O b`i2S厁r 1P̤7yI#+wn΀1~,uXUPkOtw~Ga(` *ŘE2YֱJ곀Ɲ Yr6eQT.c}]Lo+V/Y5 >=܅O\zݨ5n0Xց\R~̑}OJ뽃Q%ʼnPB!'u oKkL#&O<{m|ƮLⷙyXb mq2l'@?r=fm0ck‘=o@"%]-eڿSdh}A?Jk]0ZÉٌ}=F{& Ȕ ~(D"la.\xccnW=ptz%|h;pv:9GcPF# K/Ӛ"%σ#3"Ѫ!ѥYxCd!a_%ݶO} U|i1}=z̶6Ø0y;304KXBvUmlO>2ULNSnDcNȐLƈ1Oc5$cƶca. R"pNI ư ^17adh2XQ@C ե 2UaIX.2 f1&{g/bk/1-l5a+i;.hJ0nkWUMd1cg+g̦t>-اJwf1&dnDގgC06 Y #C)!Gjo60k+rΒ#b@=Z8L0{PF-VȐYT0(ʆ/_*K' cߗ!^8Jd1_됽!]9cw_c6CQb ~ Y>13g/)mgbuGcTl1X=IۏDq$8^c΢JdZ:AO]#Kҋ& `v?3X ;[*b,xhV[fknTGm<&47ŝY/6Wm:7 $خcⷎPkŒ^ 7~_fj{+c}AUbc r`arGKlc_hڅ'h9 $c5sN rs#' lư#1Ge!;=K'C֎VT/F| cm|ٺv/hicb>H{HR]ƚ[z"v CGDq޽-͕1zcBo3=q)X顝`!,YmwaCm(b'p^1O#Tcnxvrd ee8ukn^is{yR_ @0BCX$v ߺ~<+e#˜2DQ׉HR|Y_\Ώڰ6$c~R_EK "Xc&~-Oc7:ޠ'vZ.f}Y1> Ϩy2|JhҲmE%+`邨1ER :+XYdŋ5+ceo[C)k1fHa qy>[`(1cSQ͏IpuHW“.7wӋHWo+Eؕ?nA-.nv]kQ ۷bJ5#fo~/D>emDzwkJ'8f}mҟAO%g|?Z}NL318}Ւ9M:9RPП]+WT)1vs|ڐWMM_ew=cU~GԹT~TڸT~Tlgg6 y.طcz Ȉ΢}Dz]$yFc(TXżbZ*߯#+Y2hٚc_ ǟəG5c>suR錉 \RD k6Ӯ~LS~ܟȧ,kcW2׶Qunk[tF_(?- ƨC5Wcuⷫ,\v]Yrcs~?0&,X z;dY5`亚J\eLPfu !~y294j>W!K]IbWƐyu.9w|" ƎSՖ"cgCLcIpX풽{UOymً.ŬhO'+bh-{fg{/䚓37'2Ơ#m{i{mJW=@a?}wӌ 1l1B ;TOޝzto,c5^JHK9;K#YYU+#CK7˘/t},1Q؃[LQh!RAPt1Xr~,%W,ipߥ*{&h 9s1JrhڊtZ ?blW3D |ãg2|3XSP}ݹ 1vkd+-sSSsKHz\z~Y #VV[5c'XU7E^\ƾ5Xȫ]`1 o1иPD !k|Ye0?R+'!Ocyvc|ܛci"ԫd=YT&c~~{ksQr/1^O~Ř|~,mycgd2X&ci~ljnq?Fۊl*.܉CXUw&$= qETcfcxl_c<'qE~z876cȭu 1hzb$^ǞgPct೶z{ؾZ6b2mj롷cn31= cfx>S!FЮ >o,:B\CSxL= +5>hN7Ȇqwp,[' 6G/3e W%ău36܀[{3{0V3誩R?tUg>% CK 5/qGd , ;d3*CC0&ASHe=tjL&gnYr)iTjvqd~[R ݝuBbigA3iR CwLcKΥ0jyϥk={ ђN鈝=;U>1G`1RKdPhy$$3Ci+Bu=t[qaF,\'mb0'΂zg:P ƀػnwx0u (S/Z>B= )~ gG2c̈в;z1]bdu"Um뗿D-ZXy_b|( %=ShD p%cd!Rtƒsb=t+XrYNSbݥ-O9iy5Ӎ2.!GE(-BFnB?u)ԑh1?x2g=aZ>cRRde ?&n+cQ 5E6dlϞsc1x-]<82A*b]*cWrCa,CiD,,\1c1F^*U1c|s󼱸ME82Xh,_ߤ&&&lȘϧ`(ʘ3Xyttque2u{ [IK&%;qBcyRն)1S'pQ ; 2`L٭l[mԃdg̳-1,wƘ'O>uc{yLF;߇]cK M2A[1?z,& nVpK3Ѧ N?HfKܗ\4z)y\T'lw~M\YWl$"i҈&RBFXD)Q>$fi.JTM*l+m$ '[tiK*RVSq<2s'$*{^FGss옵2`uSclS1C%ScoyE9̎ۄ[+5CJM̒i85+}뙶;p6Y%0.љ]w>)4.cJ}Tq@-2U[g&nĸB"IAghДqqЈ} dLTZ1T×&³Q|[~ x sMy].RaJn`C2զAn"2٘&V,lOXUgL$LDzƨiIc3>YcɡgoX72Vt/fJ^KUܕ4 ɔ5o 5 aщB;>ߡк2{Si3aBW|Tt\ǘ;I%*QkӒ<3S41yl%1ߏ5xOֈ8Jx`/1c]^;&ӰP>Jsݔc>ǟϘcljVHKcL_>+\>cZ^;OGitfuƥv=vI˜+W,*.=T^׮%TE1͹5 N)SL(??&`*<3evX"XT&X\\R)#x$ڇrYskB=ϝSLϏI)3fe61VES6TD\*mWgNJ׮%T?#3Lw]z1}7S;Nq J;b"9Q\ hjDǥ|[DKUI]1JI].K&_<48& 4z1;xw01SaDǥ8P F=12FI0v#3|~6mgǨ+'83@MRc&&1F''&:f, [|m4ۖkj;ċbPZh1TYd>vcwԶG=YzkaqmM{;O]^\嚡$ȰZ>cbN6 Jovz?IIJI洚،i~3Lo3Vf׮GS'$wKsZMlFE4M&<_O] 2'v=^[=b\-]Oy2v[jekSQ\K* R2#c1*r5.P>dU/xHZd\* KhMBl\dI]wpT]wn:԰|IKh;Gnp1y|5*,oa"ǹ4e&Pº;M엋: 뢜,m)fCPIc@:w1YzYKSTׯKZpI ɕN|Qh ZFx fr*Z¦G^Y'tοe`(gH7]`Ġ1f!G%&ogp:٪T*~јxT>,Hq*%{nɄ`^i{1д&a3ڈJ%K;m~Dؑ*ǕVf=jPU^0*?6wE+=v6u:f00sZ5f(6]ht3 i0l&1j,S#_+64똧5gЏ.=w6^1X:v*%l9, d>˱6m5>dFQcg%2[l<5qN5Vo!V,,(mR: )E9/#lc`5vd# O~DDx A!XPc"5 bA!XPc"5 bA!XPc"j!0:>~}9P ēwк'$<žE}'8ƹ4wʅ9FJk>bnOBj}ڵj:wG/ΔrXn7;VЄEcBǩ/Êv= 1vax;H1Oo6 0|I7~ ˸ n ׻ WVۍ~]fw't0l5a [(t('XHLƃ|WZz_:sJc 骱#&GEw<^QHPccU81>Jdlnm/`V ϢxdhK5R }!OM- a c01i0 cØ6a c01i3zl1a01mƴ1icƴa cƻ"0} cӆ1aL01mƴa cӆ1aL01mƴa cӆ1aL01mƴa cӆ1aL01mƴa cvX04 0MVN4Y/˙vYwy4X`rl {ӣnݕ.xq\0f5f_2vc).^aǗ-F c/;sXy|XƊ]_#1.1 }ltAc%OK#IqKF< KK Z(V$=dN9k1.x Îf .ew-L[OiBf ACNX1c)c7f!&T%0q>{f7"cj؈1˔amJ,_+z'Ȫ Î͘Ryd}13S)8&<35yfDZ76)۔q~L̙I{ٸz?7$OrZ*Z*k_ãXc~I+MX,2h&j`IO 3/c0cS0/:){^q!W11_Xu_wy/dc7?⋓*QB?jAh4=o2Xe%DܛmcIvDiMŰ ---Uf9)P ӓbb(Z^Z}rckZhLa Hq3^:?snL[ʕTĐ`̽1YȐ 0VȀ^lLic_ƀnĘ0㘼;Twc8cBlۂ1;qBw0c2`1HZ!;qBw0c2`1+0+~x16ư0aVȀ`Bw4V` CPs"c/hcN11`s}51Rc?mlk5L=r ~Zܮ1ޛs Wc䳂w)A7}0ɸX| Ȑ]Yn$8v;Ø!1Y2KެϺ!.12#+g}\=OM?g؝ ޕۘXj3Ձ{^U8cƲ :l cYSgy?Ҫ*yظTa΃1WQX H1{sѯ{9@LTf8ƺE߻٨rkvqʟ6ε1ѭ+]u6@]~Vpϵ1` !` !` !` !` !` !` !` !` !c?"(7 BM+"{g8 qЁe{氈ݞ |yE(lh{:`_ڴ.|T,EcA,87CciM濱crkVS1qDPJiPƱ {:f=B1[B6>"fݷj57l#\9\pDٰP&sa4wMUO1 @,K}jc~DgَAI-`1m,s_j"?V RCoh8AL&>Q;Sرn -Z"7^"6#"I")& R[5 *GcJa1#>-^c3fg9@=q& c)<ܱI\:~ _Zh.ϵc˩y,l~\?Vud1#cD6ei:asjEu;;ֳ=7Xtc4r#cʟ|?c8o;rG",ް]ޱKoɹbAG%}ʃcr#cߒuCzpf'Tѱ7plg:c뾩opG< ժ1x1 8b@,c8HA@IENDB`awf-extended-2.9.0/images/gtk3-rtl.png000066400000000000000000001475731477403510000175410ustar00rootroot00000000000000PNG  IHDRcZPLTEGpL¶ثδɹwiL?̿ٴ\H˿ocXͿZHɾgPdL¶͘cLyi]E;]JbK݋]I^IaKxe^JȶuX^K~ȹŵfOpamPЏ_Jyfzgijʻ˼gMoa\JF71ΝeMȽ+*)ǻm`w[̾n`qU##"100y887ŹlPGECƸXWUӘ~wtq?>=Ž»ƿ~؝RPN~{xLJIŏlOChecomja_]ˏvM<4WEuWHgTeVܱ|aĿץ6NY8hpZԣ&N-Z܋a1Ks{kQ)ȷݑݥ}=ĨjÀmbGRk8Ҽsoě>tP Z<9֨,Bw! `nçwi/W4ΚgTu'o}zKua.H;`sVn1z' <!n m .̎Y%.V|`ESPz4-"$cKikc(*aPAfmkcs_{l -—_2vDEdIyHTQv!O=$kKpR"?+GS.ptߤH8IE؁M&\Ekxm6/9En2Dz߱F̫mp x8 BD^n* I+NhK۝'4 F†`( ! 4\FUUIV=6)G'G.yF9Vx[ KɟUaM6M16X6dzze16g ܂ȷ҉\RJ-{ԟn8M}gVgs1'B)AL@Cf^q$㣏hsMLdc~z?pd=<#ɟE ZY+mI9q0'IxwE)v)L"iez,c2c*2ijj"SY0ND!"&yE<ҟT"zdvDdN*M4T.H*L W1۩oTU-s}%>jT=3G'RV ڊV x" >-'|t6֍< QkbIT&OFT'-.Ci]=f!\Â,cFGI=eAW\fH-cfu[aQ<&9!-1&JXURM[b - D"U A4n2XC*3VAa}Aj= UEKTTc?Eh{y ^^$\h% WBu-l?E,1yYbpB\5VdIg.T& Ws&y*/=akK]{i9Þd^o&rfxFiZK|to%|H|>X [ZYnG[!csU+V.biEqн]rczl+#1=r۞A8]SVz=ܙBp<8}K]{i9':E{](᩶Is˗(%K/8.14cKHmyMQᦴA8-H}=`g=<.OTJczN i1g &-[{W(jd^M+zI$VF=W!1YPMzzRtЋm^1E/9=+&NxDSGU)4g\_75 sZ[D'>_$ѽ]rchh#K c~)/{Mx)}n?s7xȃ-.sEǎ!p$4qS;MQ}i9m8z'ZaIƝD! I '%w:江# |c޶/\^E5bUCyEA~ H5< @?"R w"HA!_պ!{uKeK`dow37^Bcy#+VpXYe^Bwq#I8HB_ˀY_9L\_fc=,cwl&j6B@G®sE=F92΃UV=j ^ +) ˌ%cWjqt>d]ȑ}s){C_;|J=~bx}{l38I0ɚ7aMb=64;w0Q7X?tf_9q5 Fc,Xrm`2`~L2g/W~>)R;2̦3d`6r0ide&>B<6֗_6Αuu%}MD\srAF!؝=M"~8ecZ:l{o~7_K\Fx,46_ݹ ;$[!^WC33y{.kZ<$ Υ)RTo׊Utr2i9~W$HYȴs=}6+ruޕi@&6l7曥O2ƐbZU߯t4dc`'R񗒍YVIfU}6932-i*/~}2p>a~Vf;qiuO'L}~~;H`L٥Q ѯYgT,,XFDÇ~V7RaZ!Ķ0W5`Sw5`>kk|{0|#!֖S [ZN~xlnY /OO>833?w\x;k TO^nX۫:ݜ>Gj?N͛{O=~WX|&۫1?kݵ8j_U8c`4ǚCFwrw_]Ǩ5؜/WV&_>{vJ 01@m):}m}rSIe6رc2\;v+;oGyf}i3.0F Q~|m0C-9Ŝ5)Ҫܽ镕iN?4EH22̝gg s-t?ݜ>iJ{PUTÛ ~ooiRj_kdc2[Xc-R;sx/zN EcL4k:`ilS '/_\GW2E{D 9s!f'O4n9~ݻ9^pûwѡ}0ڷ^U@kfcMŒ9@z_zuD&(tg^}l /Ϣmޘ?rԏͭ7! Pd;{hz}Meuۨ%I1&Ų^"fm 0 ckKyAWLJn޼94>{ou`uzz)x8X3c,s$h7gm./}?^>F?=Lr*, q,\x[I3Eߌd~qZ%- ڪ߱%F4j\^0V0}\Rқ3&$o@>1c=B'(XJoc9>_]4t+)@e+%nEQ7Sz35/^brEVJP:E'դJ))^zc)mYv}EXcJ))RJXR)C)َ(َ'D)v툒xR~%%J#JI1lGlǓbl+َ(َ'WQOݯd;d;c_vDv<)v툒x؏?uJ+rDnqIx8erٷػ2}ٻeXoRHcX+uGjv_W-\$Nˏ<}\tgsv}1gqտ: ʶ5IX)1c&acX[(>䭨Pf-z9Җ(=gH=X1|=bT;fqZYXW#7k2[8Q}O;JÄj#jHOװX]K66IF1+K[!rTJv6%4ZZsӞ(}3А ȾԸ'ˍ^&3 ҁ0h1RI9:qɉ :^ƎP11L?꽎JrvDSHXpA.ń2dѴ˥gZT5kKb({cN͘OКO +uYHP ġ lԴ> !(#[i(UG)KR3[{.✨\yG*p  $DʅΩ͐%B􏎐_ؑ)#vE3 h'L8Ȣc|iVH B ipL3҆QBp6\!E`LjO1-҉EdgpCI Y%#PJd['yLR1!Ӵ%ax`(=fO/I7aVfkiA! s";ŹEKh! ]DH*W&(.Fp'DN< b[$DzdCFL̛O8 i*IWn$bN͘e{)E0WRՃ[:\KyZ)R bGflV3DAs-͘Ip./b?ƪ#-1fdc>n€!8klQוQ u}]]…92zR#B`ҴA&\* ^s;xByV?Dm  "A1 !LV&,eA 8V䙁¤!@r`k!j1YE;*tӏ(CэG!ɼТ +2gi'8B;83BJO0.\JhҏՊ 8vbbF1Va~ƼׄZQ<}Ư32V{syE\yf Dd&I ~cڍ\BnWqb9*0rgv\206<܎RJ:KJގa,~'&~  dpwơ\HBnuth]qƠIJԊFa ЁetvΌ l!SL5xW<>e,3M \ƒ KC땞ұsY 顉õaqľԩu>jg3frd.4|rr )Nԇp}bp&qްߞ_F bY_# XSj3f' b E,aΣC@(ʽ-c4*@Vʃntb6V=^1Ԟ߾4v]Gba^?5~6@0;03؞]dMwȬ[}>xăbPqD)y 51{vvv?dq[J,ִ4S^^vP}bs<X^ >jgSZ.نҲJ2a̐mNhְ f_.#hпFӾX  /<.zBNHLh@I~>#Af)Wۯ^H! 9J܊3%6zXGP3֏atca̻"E޹sU/ y( 6*;0$i25}ve Æ;χbZ\#]^/J /j .zg;yv[Jnlγ.0KgĢ&llr nAZN/vs|gi ۭNSZ ~߈ee]=A 2mƚVmL&d6wv˶wQgo_QA>tяFf `;k xy錓/v.*۞tvXjfٝMҍh8Ms[badfq#lQ N˥ 7`[v#ǰt .GRNw g093Ӭ2i [#vfe>X =Ӟ:x(<ݯ~n4G$+':ENT9Z:tEÆ -[4؀D rEЎ5}M{QQLjuBF\EX fXTApRf;4*z@Ν4|?]^8c8ox<754.! g&7pC@6=~QUV`mS0fLx!LL& 20׿WILe&>ZalxR%e7A}}{]];Ѯtj:H$ $LA+ásڭ3%C!Wns~=pPmbPdȰ#\1X}ӎ{!Vt-x63uobtD=MRc= MqHQ m %:YJPUȡX}A'.=DmE;8j~óW@BħdD5ueaUPD\12P ttES@wF b34!ϴ M򵍌#*":1˜CL"dX8紀:<2qbSgq)}k9dS6]&5=2Y8;\ Dr X̖RM4QCI#!!;r@& NƋ1 a4"UU9lYUYYU` k]iptHNf`3 Qes /07 Q9UU*dp&[U62~a 7!jq]&~?EDIXhCK`pgv TT ](nj:Z,[Ɛas@ƪFs87`e2:jjDhͲVlІ錢tV6[m6 ÂҘeG( xZ0j~Ga{AӇj2w.2q$'<0#87F0'ɱ\P:k3v@K ʸ~00I??E VxёO+6ҎR.EQ6WEvQ JZNtDmpp&eѸ# UB4@nfB Fb S :ia';[5Ea(qa *(*HB0'đ`,%V1puR(nqðpI^o xFV~E]a "Fqh0' gL DƬ#GHY\_dMB>DBb,s'jo5|bT4 V(k'UACDԼUݧ{0YF&3w&3vBA'6]ܙۡc]=Yvwfl1Ct(>f(ʨIcSoX)ƒDvi#)TYtUN:Kǃ,cc>16=dX(e}bw2~# Zc1f:^^ox8ġ] k3lw}*c~(ZQ'|`zsؼ've$$*V1ɱ~Q0f,8;^O|yxȦ3 c-Z&y!^ğS9$N5ɪO͆}C3ʶjTתMԆTA*ՀqCB99톝/|>`0,xbbL,[6ۏ-ȱ3e*GmSac{Bo0آh-'K GhwhAñxl :p ΋|>V-c-ZelJ) Ʀ~2A.ڌwn0J5̒ MEoOyI 8%S1K-b+&`x Qt =zG1;HN9J9$e_qY-X1ڌ4\$g,1o!<a mbKE' $RQ3Vȁ29Bmr@Zh94jT躢0& 7gR1V涗]nGٖ+*ߘ~Vw th_{Vػ82GĶ1ܓ;=WMF"1GP X!Q1CTmkk+cϐ=1o7f{IÅ@TgڟAQKO]'P`L J6JFoUD+*0kfa)%l,W ˜JvIXٕ–{{~J?<J~88/% #BVe-& fJPbeT|I !e$7nZ[e <=== O_}3gNKU;731D 0{ ٵ$AbzPl Ipѱc~Bvw0jd1" l1?16sĘCYCfX{X{ϞNp!6_yt/jd)@h!i)rb>7?hu`ꛕB q.բnѴfClbɎEBH!HB fP(T6RWԌeڣV}c070Ҭs;m ѹyg,73*:_y|R ϲ by{$s_Frrw~Y_dDiZVMkRрjKg{R4q d,eC\0A͔k?ȟCl+y * !̏LT~< d4ycs#C~4i3iS_"c#1cfǎ 95pJKsHʏjDCLiTt+Lx,o 󱃌/YyUU/6ʘKќ =v93VD V`Knq2=-cV\uݻw7~{Y2uѹfǙ eȸ};xi5ll@D>A!VgZq?J_ clk Ǝ=c9_ޙ3~5vL ё'fϦ}2w};%Fk y.l^7Cy=^qW*BaL %>2v9\J"lvoG8nqf@q aOg̯fߏqRCrV vka%C}Y|TcG{}̿t`L1 OF{ϲԻgTs\cEԄU"jFB!Zk_OVA 3`ў2 ?o c(ӿDX:VnqY{ޙGx<̽W< 6=ǿI?: z<_ѽu5{06 y v w}=~tQO~?ȀfX~n{Z|}Aɣ#Jsf7*WȦ{?1^19]Y>%9P"ZXfcoػL1~WC1`#u!p~ʘO2==#_@2}s;,_NY8GoocNqÒ]]J1içg%UY6j=W bwj610XvohMB\!.Wܼ+<[+>3JnGT85A~vj8k j?d$^ၗ INIeE BYj4yı1_=)y KN' vI^z?ꜨEb'% -VB|Ԥ*]YWɍʲqމp: D\ٜu1cSTZ{%c=σ{jY X en^gƍuF;!93cm7oCy6<)D`8lj7" c9D-gDV!NbC|Ʉc31zerH ,v;9[w2c]&̰'a ) 9`C[7b¦X40vA@р!91О defLK 1vKB@bc 6.UjPv.ܚc3]9l‹P8Wn\=-DlHG^tu qIɞgX;H;Vj|˜'1c=2$TNպuȊMf: P0E+XEX#BHu\ TW76RZ 6f2$YMrhN83sȘd1g HЌ%WVVg!^~4S%1ⲇXi֭d!c.}ؤ OU65pvϤ:̜!Y@ne1Vq[Hu뢺A} r$u=n+U% 7z/q]Ojn-@ shKGLc\UvlY[[5>׌w=nͩM1)I!3!uq?O&7||t8e`7ūeiNJF9t)4t%bLK̈L$DQ}{e=d{)l|tb8{c 窮/X~#m@ `EjCќW\g9̹>Kj֎ϡX{;{v0)ٔm4XCCQrGz(W;`2K3gCw3Yϝ!ELAIV>P{J3nqoWF4f. "KezE~) Ck}q }sODf߇&77o͈kO o3cOq?ij-WBXdxNsPw]72}Ww#c_=~{ ZSU}hQ/R~BlJ1c|IuG4cXa) F1k؁];8,J- ѐaaq&ƤřK_mk 5tWm |~1曀<-bj߷ yyLs<OvCP0~>Xr>n48vߊ[~w#~'~ Cmp F_0^1h:1'gϿǧ&d.Qhز6Ʈt?!?i%!zw)TyZkR=+>(OOBX= =(&!ۼ93 q.cS[ha큈ˣwp.TY ƔiKȘxpXBƜ'()3KI[~H {~P8DtaB^;4 0ZAbs? ?gW4bခXq>HئԌ]DɥgDǛKXvMU^0-^U}30&E:,5g7@ u> }Ŀ*.=)*ͧ'UiiN]B3A}I;d0fhA%P&P H1w{E_lv7/I&Aįh|4z+t|w7?~?t{{060VLZ1y'?32%yj><Œ;W^o_tMTe&g˧3EsZ~wrE-WV:u@Gi°h q .0'O71_χ kO_DkJ4djzĝ4VdEa"*4< < '.dJ h1}^|P,nC: ’h`ƥKϺ%|^.$+`uVJ~[c)ڶt^>q}pmɌ]s`욝1̸-8| -1aQX0kJ =|;68Չ@O&i:ݎdɰ.=T7"4KwqFƶ@ ƍ6cMM0!82jC I篿4U4F+owv/hb_[FBxE +f{-iĠq z>4|ZcY2Kdy *nb{<0%>R~ ȳ#[,YqW褐3c[WZҲjii).Zڊ {@" CVX#;$?Vjp)*uA>ԏVT؃-X+еEvsf1B̙/??-=Y36W\)bxP״, upSԼkfZZV+?/b s`pv+G Ջuhn|1ރYB̙k?8yғ?, FO~y.3߻ݳl;1v/?8{Y3>h%0PRɰ%!J_LWgo vh%w)c6BjpVhQȵB,|Q1XyH4ja/E\FSpYnXj*s5yHyyF7T(?X0׆z?_zG?<5.h|%(3'gA;܏}3ݶh%v۱c !@v&{s=i2!a .UHyX@XV <]QZlEccvrV^D$Q K eٱ)6Ria.Ke8SQl9AWTکga$UA $y# ).;i"1֗cr=o{Z-ƥo|ɘda"Qas h]ZЕӸ췆g*@s֝J  ؾ۔{~1[?[o ё';^2W %boǚ %crl;vdAY>0XzA7!z4;p?vx ǘ_*9RA6T$ :Հ@Ae?s|=8zu^:fh(vl+u ^\Lc cqZ;b̘ON MO?:s= <{~Εn/H: C0(6J#"v VuK#Vid4tSRfDB.tdϘ~]vm~Ӯ]/FAShKG޾wQ,=:sm+cMoNyϞy~1ML!7%HH0¦"\VRuHt4}#*odH# @h^UQ-kGP&1v]>37Ԍ}|o.9x%?^?hfK|3g7wM@6=dc?繑Q VbIJXx%Yk;<_yr j!]Kw:Ƭ@i6TЖ0ڢe8,g.8#2Ia/B2֑E73ߴp?t,}>]s`d쓦LO6hc?nynwиAF+$6vIĠ^%[Cad⠪Bvw0jd0 zĤh8Ee7%,^ d#cЮ;̋;&cvĠqx2W>>?3^ytfCF1̍| ЉBR0FQ?*X Y!X]]Kh恥Fz\08LڠAziGʒPLթ{s gc6ĜCcpo%N 91f;c-?TFʭn!YWH&2  hrǑR  YsjjϚXU:xd?"HM)T2d8 6]@+Dv_ŨX{ldc{G2fd,he:D1~//>\$L ߻0'oAı?|obfTs#T ki"a)kDli=SUiNSܹXeew Scq:3J3Yb(IZ*rڕTTX6c-.e2+ uNU%MK(b]⯒^<cVژ~x[-~_ ~ɘ-ggp ?;V|2fs#嘱Uiqx:Jɲĺ6|EV(:!E#QH<t#JhX>:s,$(PИ9R0|嘱9Nķ9Urtq, 3~^; ZTqepl+B2*)ڰ$\AUE{C`gH>^ &&@ _@yH.[CIʓܲ-le : YJ +qj靺yYV[|lkjܠ`gV:5w\/.:\B CA"+3=v*  c9mS~ ~^0cM'l_ BP;53v:X[k&X*D5`>(+($žT+)0 3{6cf6^c^K^vT)do|? 'jd3 2^,36 BL_AՌ72~ WN2ǬU.9XHA#;Rd,;/'gaqAf f,+rE#GRJdKp;%U<QF6c9wa>:GM[Dh"½~*%.d>9QNR_硿򺍻=yH 2QsRd,;'gabtdrOXvri'Y8-ԤDmfwNMPdABf I0;[( ,$dЋp-pcRe>RF# gy.ܾynsZ(cNbv7(g2XEɡ` !G+) QdX`Bg:$4p(]+7AoApڈLdVc ,:v,pҌ0<И'.pHKyniNQTM7ڊ-=?1雨,c*7xr9R8N[(0 d$2"m^RQD Ϧ.7eUX Z(_Ya.+ؐ(Ҳn0O#zJ\BMͅ*Z;%emYW)q:YY"<9.yHlTCu&c r9@vX1%qd.+Jt8Xx$֌{3RENW7@P2*X4n_}[E #aC!D)vј(e),aEUAb-p7"6Ba:kX}ˮU cp>¼n1{xgl/!a̡H6+!K,:GU@CIuaevxʋx;YHi3v:_o4cuV#e(ΊI~!;?vLpLct/b&?| *nIeigKBTT7 cB*Hk:cm}f;(#dL' V+[8$ TI5cӏ^+Ɨ֊Uɣ!dǤK4$R| ŕ biŊfzkk{ki^ڴ F^A+ N=SOe|r|lX=&NTbƮ z{`bax?NNh0SC7dqF_*c`Y%6S36z/W{4=I &Ռi~?vّXdH'/ Y6_c1Z0suTn}E[}Eb,w8 5`tuUY!E xTTՅ( 5e[XݗKK/XҌWXҽAm. n iSMw4?AKkRQfri\)K(M?+n 4cWc bO =`*?(vu+fL~v-ݓT[5+M~w[?J\wZ;࢕ce!LĊSd َXCif2 "¦O؉r=@XXlWb:&&Gw n/#}m{tg6:p9KI_M}٤'AkF5cNA~Ccck'~L\ﶃm#yg':q/5y| FF<%#9<ɲ= 9{$`x\t r;#DYa'_0&MfzCPlk.P)9m;R/ Ri>w $&4H).͗RxWLWɁ%2lbϏ[KԹ֌eo;&y7rLDdjgxDi2X5a~zi"KAN@L} ʘ&ϦÚtÜoꭳDgXK` ]8h15c4Z'HY?A1#%=1-ee,;[{[_1DzR%>)KW2f> 1ެίcdlڌ5'_~̯_Hqkػ6mZeKO 2&0R =L$yu7X}էX}Ҍa2Q}1Pu4b3o k[1=\X1:7!Fz63Ϟq~[xy=1@+If x=oma֦/"mdNgdnc< F"ggԮd;dx8^}řOeTͭcel->I1}n g W26ؤح??y2XճO4Oj=1nD|}eL)~CbnN#EH}? ٙO4X>id=[H_1c'Z/T֑/X֍Zkmin f ~>$efԟymM٧Ř<:1vbJJ%{K%%V޽{rbcJlPu.@e#J,%#R0U,uJnR#9hXZKJ;<_B5{zŭF`ƨ{=''žb]Ǝ=/csWYN p ֺBkBՔqb cAbPb!WFR`wnf@Rè |@H16ņV )l_nFn]x="4y-h$UMɿL7뙇4NFS16ce455YKJ.4]`q > !V F" JrXکB.$T馼)Yh Mc_O[M1*o=w(KǷ}ŔCb0Z:C&Yw(ٱ$BX`%@; "ِ%C[;Ֆ저 ܚn%%c`~p~%*STCbڌACIf/s@䍤'K 'k/(u?˯ѻ}kXgdC`su,-%W2vt?Š9ߤsS~,iZ_Čmvecsڴ~,_V6mV%ۖbu1ym63^MXzP_qmc{edSx6zЅ}1[χ|+ aZ2Xͱtnݨsw* 3֘ cX?e64Piull=hT{43u5i1 m8cI1rcck0KGb$J#vBUtn ի 2-6;c 2c )4GkK1ZGӐ,RʗnvFGGd9ߔ{{&{֪]}>L1֖4c=?3$i#/F>I^/;OI&Fq锔I,aYfg0t11-/ ؚiuz7Θvxu^BT-v"g'\m|pynRMÁs}_C55jk#W^vtxDN‰J/k7#N4:Ck˘H1tz>8b%b9cZalwx1﷐f+c|`M{0c". ";:jw˝ÏGDT]_#RIx#ghn c8?>{TSS.w]UGEwPsP}aӃ{b 1rBE!ZGs0v_ 2j2&~ cV0F?^12'>A{ C`e>. &}qq_*'Xc1GDpV. >CsN'z `@p3c>nc3h3#V_H2cfc۳;c?6\%.R0b5)9ML7 C /1|hh3DnvoCd z7]7"N\UsoN]h 2Y֝2靫+d*-ƊH!`,|cB P#4| Pc͋K KNdf(9ywӮґg7.M;>'*~]|q9\$j !yB!j&a1fb̞6c4Hӗ?cK3(B.JB:PCCqQE M&8/M|ɩ#ރޜ·='z>>r߹.&ye]^.Dm14Ðrͦ-O.i4 ؀ ] /1z<汆^*H4ir?.e݅ysُ̙gvv|sғrTٞ}~]MgQL٠{e d]"A e r$9zYϦ7<(p] ,Qxc8r)\dbfpB,`dP)x6ϦV-S?՛}ͯF)@w-҅肠 b `aR}1f6 .1UKl1}%WI1UCϘ9x֥ R1 [,ߖdfE`Z  OHSǼ1 g eI+C|kjij<4ԑ3a01cL6Pdb>H,]([n`.dQSpِAi#1Ba7b],ɀ풤`Fю du!glw01[X[7 C2p"˭G5NsS/ K0U s:)`US$1^UƢc᮰W3^)& {E?+z.^0=r!VR-bGM֫XĿWa#ܾmMۤcs3ok~9[> 1,3M%<ٖ;ʠo[bl*91͛n"GۯX7a&5sc` }s?A߾߉Z1>0 5kc}x'>o"v~(c3`ldz `l1.^6ї aק=E[A|*0 nL?'@}ߗO&/^ӅLkʾ5`b֭(c+߅1neucC<[-,?c]yr}> ֺs OhZCajmԞJi&n袌~2z:cƘX=2X>{i?:c?:)GÁ t! Ѐ M\w|č(c2o^ WgLיyDȽuncp#4+PO~5]'w>yzݟB$>SH^'?Q|Ç7>F^1X6ث2L1(]e%o1*#C.?A{]|?kwB&yDΡ G?r5+c *gn?Ffb۰ǜZ@ycN1}5yݱK޽69 |1նuMc@Lbl"Xp:9c;g].,t?jW`M?&1 =h by7ޅ бafZ4>= XKϠ Pi*cȕg Q`&/fc ɩ;I9[MشcHVBo d%n uulB&DfV8 g12#)B"%)u#5==x8>{{UijYSze_drɕ-ׅwx`#Yd,ͫf1 1# 1Fؗ=@2!5f<QFlF/咔stT2`8V Л w7{fLхF]}])c -+u#{ f OV1]}?ܒ+M$Bm(~7%/grMaftAdcBiiInJLX{)EUc.ܴv_O@hX_evmҎ1AЀ1y=~[]`u[J>X̽!IFnr\JIK)9tEQ mn9bLowb l'Ǣ ޡ+Rz+l=z7'Xƚ>kŃ׷aٳ'h͘j&c[$stXlH[JKuԊ@'%&q!2kӭvDhK2d0 X ;eJ;YrVә,c{ϕ8G^jΣZ3cozT-*۾`ce訧gY Eڵd,/")BqY%""#wclˈ>w&rayrP1Z'XEư:Ž##)#/dZ.0h?5kjEڛӐ37.1U{0n ߏI(BI H63a-cco~7ǘJc$MDŽ9bB{&oBVlÄӚ' )ō2ƭikbXl<`@۠csl!uC˝t5Gޏ5 #6[csOj1FV`[0״Xf3F$}\рQG٣]( GS ؜J˔&,|ݝ ӄ;]䝋/ii͖ *1c>*0 {X8k:}4g\--uc>3glY#]u(c+{<ٸˬlwi\1c4c읙3`,, .1[Y+f& {'ʘ'cz!╭6,C gJR;O}gblG{bz?VdHV } ;nb?uZzTdR,1+FϜ=8zJ!;(uYPgeRW۽Hs9ߘDVI('[?<Vrj:3_J8qQ3Ke0al(U_R!VՊS+돣 y2śDk<%vGP8!D R<(Q@؏ `HbDy4D7-coJQ!d*&!. 9Q!'ׯ߹sqFTRHMO⌽6C䬂Z`b0bǤD4s&='oFLɱ۷[ hh}2+99jZšfoܸs>z8G41>4eJ~\Y6z5 <"A&.)7\rm4v!6ϥ(8=c60v̗_A66(LZ77€1#ʋ޻F?FR63CқbMӾdEĦ`)aŨؤŅ =E5t~H=OQŒnkX"$tZƐ~ عf!T؈C+^[EpJZWI \bK ͸tKR 変?^QQs@n?hR` 1P3jcV#dԡᐽa2øU1Kھ3A 1>e;wbO`w"%v1];`c ,J6rфӟ{kTMA xd >sP7YƠOCØ1=ahd#|sHPQڪBdJ^&q1<؂N`y {==4e/ٻM*i(لnۈk'41RX /MPk랚bUp,RXWUCv4<<8؜<&Z3kޛc _^aHLtA&"01-\@!ٍ2(?w=_ 0,K՘[pWobcb)7z5Y @L0h*3#@ (cjjA_Z[;WB:+RPU/ % iXc֗3_wx؛1 N)%%e^od"/?3OiS {Tᰳ?>qis99æ&굱"t- x 8dPAyBƧǟ5,DYg D hہ 7Fydew>b%w>%ތ1{Qd0BϢ@C [e])w"}.L\>b)s9%Mt_C"hl>1nٔnv$:jI [ϑdlMsXZcup/{_e47(ŝZ:@8s;Mȓ9t<@ ;nJ͖ٙ,Xf/\`"3zz?b 4Jr&HWevץ`lX Zao6*Qd#sԧ'RVmTsb(!aIFNX0OLכu zlP|0@@Quzjh=~i7w W\7=cq1cYdB2,c\ 3^)ď%\@+t +3{^dF=%T{{*WQɽ4{w:Ccls=BM%#[▖9/xHp¤]L?9*1S50E+֘D!%\BCbaR1<4|P..=:9rscd-!c?ٺ 3Æ,v0L8DO:jP@ǻz!cFSO➡W57^#ը|ysHG} -:c< )z^ ,.a B>E|BBNR`ѻW*KLa0Jd,h1V;jpGR=hթYb>ƚ똯Z^\\|!ky0@/"ldtq` 'G<*o `1)s _[~yH@% xx>Wl.XhQ*D'C&1V!\rV/(Tba\=-_-_ -* ʉ{w,Ɗ`lտ%>A ,p+Hο|.bGr ØbV/ZP3/ޚYZx%jRzWE1&I-Ɗ`, +LQdyu Ymb߆;h _=K!v`pfcU9K1ag1mq^<{~sKJex濰熊z^5=E)^4V|֜9ftzӟ]NUb+d2 `SK1 6|ц, FU/ b0ŢIٱvIǝtP%֜&qn2.#σDgeLԢ^JkoɌ1ME,ZY}%I( ^~. mE0υxS>E@J>Z*ӗ> c m\%d+#ƌ\k3F xD[$ABXsd BX10a<EUυAV 2F'`B ^1& M<2vTkpaIl[zg,p 1V H጑RË ɑdTc-Ç`$d(EJex0xc_a,ۧ2|A,DSư8r#X zo2F䐹K?T3Vc12&=2:dʰ#HXd13h 5\ 8Bҫgh,1/BT'a=Cm%1f,1N"SKj{ZD9 g=Ì1zm{C!LxDƶ=!Rnc:ڊ|e?6_/9g(?fc&s/j&wdfb6PXaX|=6 XS\Xaƶ@5FWϠc}F{w.b Xt($A1Vl=6q .2lCǝm3ADPY{io16n"d$fHp c,x2MOŋE- 1v=*ZXs>ȘapQ /AX z:RJUb:+k1al}|xsk€+βdLt0O]plC^@RѨkv+%vF)1CuܼƌAM[1h"Oc eXXS @ٌ2 Epel1'jbcP&cs?֐R9 ")I'ӓ`ݥȠeq9r2~J~Cr^Db2<_5'^<6<;Ѓr̋ 91caXW M2bSc2063#w(8H}%[ncW儦IW3!j %(Ta~rkÿY_1WʄژaN vHP6؁CL,@-Q7ڜ0 vhVPYJ_޿f4~HrƔ\fnIc9GӚZ9nrϹ {H8c˩hۊ5`:V dL\'8+_,Xk{CZƾwvNqƔ }Pr$XD'4凴c5Gx\ov/>er*H*Y*$uJ%]޼PY17.HD`9t2 Ǎ=?F)=NRBhg+JYcƔSkC:9|y{Zn%'[ⲜrY9};弈7 RQzOGғjx2-402o$F"49q.̩۩;N]^qWˮQx(1W9%C'hrjz>o,<*hQƂ291;??{SB`5kC-@+cl2c*7%^wTYrԍ1JWV:꾚yrғluT~c4AƟg*&ɑAMɘ$-1mjAJz8b7gL[9};?dPhvz5b2&ydo3u$㼭2OOŤ [ɱ/r*:qpeNHJ<3{Ւ'⻉nC(?c3jT[YXz~,/5wOF.^"x~A:vzftדY@rЅ43taz]|3qSҽɺ0cJlMغcAAA*P=}A|A:$jyH?Q\DMN_pߕD&f b,4{ޘ 񗐱5l1^$߅QFM?"#x~Hy*;Cqƀ5G׽ɺى`̾ҳU,c"_cNij/TZ«ܺs<\ۏ.n+Ϯ]CMJضӦ0VAl36KkbSz{50P=#7tc(|Ќ+b71tv?v1 Wt,Ɗb,<3gBd* iE}I$6{cI,ubK'y7Y1+#'U}s\j BvBlA3~?F;xr,iWdFnR=!mɑq3R)W2eLt M~ɀjb_}*#B9EJ-ݳ';蒩ɓ'Q{o_SHjiR1džo+uBNm4WZ挽¶+bs 2 Y9@%;c=K!v`p_29G'?KJY2v)S.4TW=͡RA;2OL9-~Yeʐ֫ER,Vg h *e #7;&02Gf1Vch, TK˵ɟӮW+*)s4*D~/1] dƸC ^P ,r?&"+cc7-r=1cFicP,^=c,bUBY"1mtv ƎɌ a#Ȳ1-csA҈X .-CZfcwON1:dʰ#HXd1 cW;cc9~}ٳ˝xbb,cD!렖b{R;s0i ˒O>\=a =¶=Dس8K&Cc+glR㎌1Le`ӫ7ÑQc-cc(@Sܱ{ϏKc+cg?͐TDx.9e=nS@.$s%cNX19dtBnTʪËdK/V2ץ[ ض"zAmŦFWN0Pss#jlZ8~Ƃ2˟Ͽ4"wF2wfwMiWM.8!?@@Ł&9JDحBTN( =FTV)݀wJ ۃBFT7/WHH ]7׳ޯ̳3Zz<3JJIvLŶl+nќ$Kfyc c:K)z}S.R5Sg\9U𭯱g]DF+!)cޑ1ߠܐQ)A1gIY𫢌Oy cƥpg_\\z߸T026L{_+~7~rp|0z_95X).{*0.x@̴Rɹ%Ȉbr>RqK%\oO-S? ?\QIu̖Kb5bvPKQ'(`_Fk3FYiYG̓)-ƺ6$vEKǜ 5fx#c e,HĬypKE<~r&˃:}[p#4hV&dOgڌ[kZ[L-Ne5q&; lR*u2񻞳ov$(.[DkRɃ`yx,$ߢTl dN'QXWSc'Xf[irlLV 7(*'`Cl6wT-2& #:!!֔R\*۝,WTm7h2Y0@I7-A@Nʄ늲'Bvb%@}hc 8YG t CD<gND v( blƥ½TƩGK՛^"]ͬ9@4ܜsC?9 ސkcl6D f ԜyZ] x?{Z1kcT}sa}ͬy}՛ .o٤7cٕQ g,jjW}$ͦL~Sb-ec͗8њlHk)v?[7w+]^ ^}M#~2U{faWs7m+<')c5\$/󘢫ɌŘl22Ջ9Ԍyɋ c, 3Ypq<%ca ` ͭA xmgdbGX +e|Y<;ɰI,MfK|# 59 &0w [cy䞛LL|)cb; e9pf$vc&qBȨ+ǥ0qR\in,Ut;<Ŕ19 &0eBL\=(ӋQvJ,Zz߾gtͰ vֳb{\U3ARATE`˒['*dA;@-hy乛3n$|!q>DĥAG1eL"G]U~:9[@h9xv|>F71sUk`{\*Df1i~ȴ[&cavlfݔ{ e}S5XɀT9fw\*22FD80G].K4L7Ԏ-ЬHW= b,d@\*aI1qA82cEW}t$\k*مb,T1/9.bNܓ9}CEߕxgѹPPe7GN߸9.45Bc,*2Pˀ|/li1[XeS7K% q>ߤXXQQ~:Ej[eĘ_uOlť]B0W.1\,cbL7cANEʌ!\.Wj! Rd pVi1gA~k_[N3&C"c.r3Hyd,\d1/i0&c&#wHU C+##8AA(F^W^>'_WW![@A8ZbWYqǰJv%̛k-Ejp>^مskTh Ia_8«Vc勋+/__JKMb A+%vŘqedmo uFiv}#Ghs61xV<-hW A(r96W{EZbWYy4qC'|d4F6MI*1EDg,TJƶ' [0RmWi3&sjEn>O2[ic̣9sc849sKiR#&e]@mh̛~E1#^lV`:TMZ c/2y(/cciќan9iB/Klw~I2oZ> sUObs6[XqV-Zsk{aL@˕/^Bf1vNM^4w~I2oZ?QcBm>} 2_4lPFAcDq!dWCkruE1-ƴh~yvyjxY4]@mh 7 1?/#Kwy14e,ɦ2Ljh*7 >Nr QjdVuyջwCڌi|pO/\m4/]@SJL6M1@^W$~)e,lNx?8G] >.S5ռWtL;[\$ϒ3 Cٯv23׷6 bM#rzw ɺ|ڌ=O~yOc|p/]0̽'n"ϊK)5vL&vIsy|B:T9}!y KY cej[N`}[hD-^0nRl #ŸAw1(G}/ o9$p!I?5hKl jvh#^A;wL8ucƭ>ŲQQ}/AzwPv4c^nKZaqP 1ZKKk`6^ h$qTRValjW)j2FeM]kдPBa6룉~ĝVa16&`FUM]kK2 Əu Ei0.{)]$%ش 7i4rmttq 3iGS'e}/D36I&}1bʱk/YdlSIznɦD3bLiV&M,X$Of>j?Iҕ-ٴ J3Lb,2d棩T^%Val4ȤTZXEfޯhv?c/ݑb,e;RYvGfKXa12qKĥx~|{\*TtƷ3Q+ϊL|9ǽ6cFbuncǥB0.J=f}_0]՗)yH84XE%ҹ s#WmťG#=ՊTf߸TA6ڋ+DvaZc^/' eU̦`gW_|e&k#ljiʼn%8_*'`aRDh^B/&po [)+ߩ$ºHQrg̽0˽H y7gh}Xkk̎w|^_*}O?N_*J 5eM>ωB>|rؿ&`|Nc>g1y0Q1he;4?L<;''|7~~;TX R/K1~8عr>59Op!:f9O 2aF+dv>U8Onn| _*7rTJ9 (*iL+1<{،Aa_0A_9([F{k $ggӝgh]Li  CR†ϩE9U+=-yLWJr1|;nmr҉lzVc1x!k11Km4,|4RA!tE /7Ҙ1)T*|V ~xx,Xh_bS!ҘhQelgމ:8k}9dbFl3[cXFWcR#-"!y"-Ҙ-"!y"7_*)_DRgKlt29hlt_*.Rf_*Ηj֘u9ٸ5F ףRa%ܚ1̹p8U;/7N3bϗJb_JtsXg6ذu5G:Z=ڛ}UKT֗JUB3ij,Zda}]KR֗J5UB30kA}"lhzPcRi5f`a`K5:Fٗ-RU*cí3.b1͗ju֭otT*Ru+1n~u) ݏKŖoKUBcĿ 6:fwձT{w޶ٗ +A_;h9-"̗J>l#[DC>E$[<1#[DC>E$[<1#[DC>E$[<1#[DC>E$[<1#[DC>E$[<1#[DC>E$[<1#[DC>E$[<1pMc Pcw zHvC#{!^Hca/1A i 4FB#{!^DXDrif.f ծzE0˗Krq=RzR yK!S'?JJJ:Bt_fxҰQZE᛬b*XZ_5U- Qv=!X4.5W4vqR& 4) ERb') Oj9y*dhL.Fh]0ƢA{9v?M. Ae˥cLǓr0d k (lc?f@5_`1Kc5L. cGct~9vqfw,{jqJԺ7~ӵɲ~J; m >}1#0Dl8}0l^3XpטCOʃnn܎Bœ2p.Uძ>e(^;zKQDlX% 6+n5cX_ϕ`XφvUFn)mx'֊[1?osxuVbKg3UEXL# IaM%lDPh /+zXcwOZ~ Ƽ%ѨD.hQ4./Yazhf1AΒƆ?%(8BtMP.H+r }W7%Z&7phj5=Uk?1sKc4FcJ4Fc4Ec4FcZ4Fc4Ec4FcZ4Fc4Ec4FcZ46hl hiј[ƴhiј[ƴhiјiјiјiјiјiјiјiјiM4u?6@ꞹN_u5˷PD~hK&׭]{F v>{wǓ+7Wig/N)2Iz4O=1q4@-h Т1@-h Т1@- xPX`h,84 ƂCcEcZ4hEcZ4hEcZFf׏/VpWpy+,moZcI3kX7`s1z:}v04'i`5u4Fc4]Gc4AV]Gc4m5 YƇkfkLYcNc:S֘okcO/痧e?U7{g6a !aRH8谅$zKQ b7$58X¦C/&=c{Oı"ב\}fϣT_h6t/oEұ/Iȱܗ ꘸cp,EF1!utVIY)U`|LS2eܘUeQ|dž c%k6R;G+G ÓoBGTdMVc/=il`cŽv]EiȂj*Uˡyq$O%ƭ"uv'4nzժ198pL#$vJ6@h>;5|8 @ƍ[E?F 9&ӸeuqcEBb+u8@Ы_>37ōJmy"^eUA(*^\|]Lwᘢc 'ogGK-:xƊLUdܸUmᅴݼ#ҝG39&S8rLr^,:]1g`g3eܘUMddW3XvlurDŽK1 cc*Hp׿g)h{[y"^[1zK2n*!٣wO$zMиM41cy( X%UHRnF:vpLeXȱI2cDS8p,7eGpLQcK8X8د,f&#ݸD;pq,v_p; 786a!iX6& fncﳓr,sXf=2b1O/ĹrL\wo ǔ'cQΟ/z&K@:vJ)Odǂ ɱ:덂G Kct[KX&SȎ:c[j ;X۶zn&Sl%}88#S92]=A4vTj$6J8WLcVO̼lN\Q}b;;bQCGݧ@1Xǫcq{v̰f5tcirLkcu81Z5չL 9Ҽ:W8:x^QU"1v)cإ 1Kc28,ap]1v)cMVїJQ&KEl<$5 b:@S{l=KޯSU{Ef Ù̃Y1f cR1 혀cI1T cvr aLO>/;>c)pZcx AWWc XnbRiy;X \:I2|iUwJ&c@TǚM~SrIX]t-pcSDk,f+Q'ntX)lcf:1~aϩ qxJwLJ]yRcBk'3|c7~l/۫ :V:&9.ɱ|)L⧑{EױSԱ$+~W$V:ASب3VXH۱QgGw'X c^I27[1zK8WL=݋itٻ":KW1\:Vr,2IKt6eD`Ipq18_{gadB׸MCB0=쁘=Hs)|`X2c! %$,*ɺQt+%Cvf58VQYo0WZgMDW68)x cpL+p ydcS9:lOZ̃lص 1ضs`$B9FW Y"ǧFo󾫪ָciW*eî2'ؽ1:?c ]XBЭsg︋)^Ѽobv?'{ķͱcE:'Xum>ұMxMFAI5(T܄D>$p=JGS=؝OFlص :+c}sUDLjb~W;#t1Jʔw Gh7hcoƎe3.ōNQ;&&v} SűP忟ֱb- Z&d7|>s&TCkE*ȘWW?mdt:f79c01cbFAaB2iyGb7:K/p=iUXib1&v}`1Ɓc VcKHViQv?up}bv1Tղ 1ϯ>3k;;5V: hC8FPƱ6J K*y"\]&TUvBu~u4ұ`8698FiA>7+l4s8X>1MbױOr=Tu(nNoM~Ɇ]1 7 m[jDTD̎NnL6 1}18{lcpK}p9m#BM'o{Owg ξ47ŸBgdhsB:ӷ$} ='xocO^ξ?{5ĆmDo7A쯬p {jčw+Slػxl؄3Nu 8^zc8^zc8^<~@: W@7p 1XAz8N~}ݯcL<)Z91c2Fw%\t,ԡ^10(xbRču87;nC]C{E"{~aG38S\43WȘ0%Zv!ߦ7au/q.7YI_4'XX:N#8c*'t-u210FT:7Zb%W:8qSn2'BX0;tHB_ϕj]Y[~7޿oQ=syw좗8OFܽ-{/SK c`J5;  sS XMqSV,J6c`x|u,;/9 .aCS$)S~cg4P2ƥ+.3c`0igyqxj.]Y%q% 2[$BoW_J #q_1p˸B蕎UrŅ*d0__*U/:f5f}y1=c@+7c1dlJ2PEs|ѱB/_1C+z8&~?6zRFŴ p 9 @/p 1 r ^ ݙnPIENDB`awf-extended-2.9.0/images/gtk3.png000066400000000000000000001523161477403510000167310ustar00rootroot00000000000000PNG  IHDRcZPLTEGpL¶ͫɹഢwȴiL?̿˿ocXͿɾ]I¶eM܏_J›dL[HؘcLyf˻uYyi]JbK]E;o`aKgOƻ~ijmPȹŵZH[JF71paxe\H\Hn`hPeOΦzfč^I·^L^J̽qU^K))(/.-#""HFDx¶x\lP̧{hŽ@>=»OMKӘ~Ʒ543Нǿ:98~zvrlPCƹXWVL<5}{xUTRɨΒxsroifc{VFnliba`qc`\X8acI>Ŷpa(OgX~y5LZzbTتߴlYpY֘qe4FumR*֟ʜĝԵ~eiv;etBΨQ miً<9է`nAj0Ӆ4۾Sgoq!گcFk߆^ fN>.CtRNS@f|IDATxLW$vm Fݽ1j6Z9PB}AQ!|D\٤X(TP@v$;\Mzc3 r;T*{*JVVtR(7ofA`~CP֞Wd"a U M=oQ(,  B[QLQٱ: Oc(tc̼#.4LBQb>#} wC; ᜟ F-w#Q6KƢ< IԔEkGHQLph7:CuZǾ8t^hH ;Yऀ68,+ hd!vJNSt49κf&;3fmϧZ- 7uBK񸉥5>f܂+XL RVX55H`Ǟ=Î5P!M!NB=_цhdffAa\R wNvEiY!UjB A쑪;:XGWe%x$cϾesgհCAo B< V$k䔵x% ]TOk -dRTgkhxgھY RR`wuQ:XDA.K+5Z++Ecv۷oc1()tSDW]D5Ơ6<2Q&83ȱ duΞqbIG%s>=4+8#eNdAF<i25&im5L VS*}@\PVj.H J[ mC :y4<d5Ơ&l"\jxp8cP-# K1)fĉ6]&  Q 焂x$cuʓW)>m!-\$R"ʉ 6B[= GJVjT=kCk`pԦD T԰:ϐӋY=iᴢ *}V9-afl1>-td>=HgYQʧf Oii!=[0'n3c3I{PfSnlFg$چ!(|"AE ۔~!o&S#|H}86'lh!C)KjqdYµD?f>8wڜD-<م->qEa/7ͪcMh?DmiaQI8jǢZ9,3Bt?\gƴz~ɨSv1CxtԕWc"Uj{.g~R]-ϠqTy/{tpϯ Yly\A%үrGD;'du\ R6cf.7Zf{Q2 i1R^ 9Pg|sLvK)f`}vFj>oyxP 7Q]8\b.X OGӅ eaAKhCfs3#hPO +ڬ:.Pgρ\%rX8iݡɛu8'je53R;w&pV1p5R+fo1k2 ) ű `z1{ByYP+2-z91f8/*Ҡ8 e=P{Bc;(z8S (Bc?P(zC{9(2K itqg.oBr &oB{zz{{n5ooPV?k/=?}5v~ٿg峭/=cط[)i*M^P(ke޻wji'ÉDp\ٱFB%|)nP^*Ƕ.`ݞc8p'pبA?1^<LX#9e:V/ÉЯM7%cߕֱˤIM.m|zG=~8xܰ'1 2 7;1&IS|<ǧ}og6BQıJ~9v7.^["ǚmM;VXys8962\c C9C 7̘4 O&9u,'YK)f2Z1RoݺɱGkk?.sX2ijAD,^.Y ;V2H :']s&ŘIǽqp7˸j؝;,;Vn*CŔ͇H9vLjZ.v`4m_5{{v5M˥}><;ퟜD%&'o2JNǦp2 d7Hv_c,"dԗ_>BEq /b~*+(( y0tG#;ҥPL!t3MǓ7Lȱd|,tb'0t&a$NNw@±ᬎS_>x0;uKbPp{ (ߔ 2Ȍyw&{ycD.c㓓q_FtAgɚL2$ _o/Od7ͱ={vSQ9/ZC^,Y)CfffFױ۟ގ1+X\9G>_.\Wivٮ$OÇ/>gw < ;}zdޱ?Mn!QdP̔Mc30sc*pt6CЪq)gc?,"xx&hSv6^sm>{ѧfg:͹|ᒥ(NaQ ߹woOn/Zhۂi^:\;TXBٔ:fZG]c>+qL'| R~t'h;QdX%s݋O?y/1n:i~5k3~$2 Wm޻ 6@==ֱ;SҸK1JmLٚC8ݼoك n0͘ M͢Kv6  ËqUP"*:2&1;6ɾ%7ͽ|?yTUwhN9O:T5ڽ}c2c7o޼71d  [ULL֓_|qoM|2ٗgG ~uvbމ&ɓgHOH%>/1Ft(?]ab,ʣ5ZH~C0m)l"d"Ď :&Iڱ'$cCW}ɾ=:*LWn0yci"d~  ӳbvM.`\X]Ym?7ǎ{܃YNǾqGddyTyJqΧw֖zD}ľGG_y?/INn~~|v<X]g|Hx+IDZ, k29AO~>֥'/dh$rkF_'ghtΗ3vN,G z«~d?`wtcC@ S~D,~G/_Xٺt20IU֧j$2zŋ^[]^~"/:yL`LԸ.q?psPQOO-߆~#Nᙲ,m~8Lh_u36xE_a6tFf>s2[g#Ϟ=,?BcI#@|t??_46_* \b Z?3pglj2[;qYGOƺYwSǥu]kI.?D·h[ G"Wߝ =yqTxOBy53Qw18Fh5YzX;kVMk;vNcs_SuC-YֳHdeuzqM#CSw_85t!;+###+w=I+JVcNb)3\"hhpXYm;4;q9lORP8r/J+PlGYSCG;Gr;VX 45((YXE%z߃cN/dcK/bLH$X!0UVi c] Pc(+X27Ixc!qB]Ye k`ӐFiCTѧs厬JMYƢoN7&4V:jj7_caoVY,c2˓ȟE,3֐UVYC*cYeU:0)iדW,c[Ov=xEYƶ2z2񊲌mmedeʴ+2iדWelk+Ӯ'(V]O&^QLL,c[[v=xEo`l j5߃(d d[NSg-.S+J]{P.zxs_ztǢS^=>zr_U̞07 RIT `[@j $w N,ݜA.,S@K`.Z*R;ϟ}H$>R~K?sb!)6^Z"=^0H1#؉}'y|*qX { S[_ĎVx6#$؉T`Ypp0椨Y1z44!7Q;sҟsLNXWJJA8ԳS̕p3D{NÎC|QUBdnj1[ATX=w"cErS)0(Ŋ iGa,PME'__%vMx3)፭ F8t$Ἴ*ݢ y+XYr "p1Ie{qJ1J5JIKb]>D$/DV8N' bq nx70JdIL[Ifs]HpR=|1Z8GzD8R##}e|h4}ް4>ckk@=[PF] S0h2  |UU>?HWKV"[iE˶NbOإڀ ?_Bz%4WU)!}r|蓚 Ž_ Ԓ@o <ު*oKE:t籮> - 8%zG͊/tU+9586݁6 s5n6)cdFДd֪%<ؒbŢUpc<1y,2r^A}oXD|XP)ǵ̙A55:f!hk^Ρ3;+ *X`rL-(c%ň.HT+lKb9\<ܡV~099Ï;\ޡoqu&f+Ol0ڛN'Wf{\W ds߇̔q0Ht]iwJv{DcQxƕ^)8+>7_ՋxĻ8 4S=[w>Ty {gg12iGNy'{Vt:P'Uɐqhme ц,ƯHU]u^4 "TCJB)IBTv@Q.rYWKbX^KPi =O4qw{΋F܅ܲ]g/+skkZf;h&U9Z(2|~HGv,+ -U^˷]]6eY>Ƿ07xzdfMvʏ{nMNhR` w pJ2:IZHh34 )so:Os Z ˬe n4!)~SAh{\Y݅Bx!ΌQPlݘ3Ęܠ-pC, ctsl64i[2&6n|G`' H#fEA|-|ypR+ZnTսlgwDZnc.햻ÃUnjoЅ#p@dZ,Vks37rA{Q( Il&fN ߎ>w&f'ކ1+z^uժ EȬA u'd>{o"? Y5b30#CBYpB-b1[j52>c6. Hl]ŭ.ew7Z-l%qo-,+ܔaQ7"[].W ].av||N>3c' h*~GvYh)n@tBJkNZ18yBى7v;tl"vH-`pgTO*TP0B.aظ-Lbߥu=,גVfu7Q,K.Kcb[8R͒rX(dZx6p|Ȉ1pFIλZ _BC˨^XP1-0g, ͥ cwnPVԕ]F +4D`ss9%~e@'bpfI@ԆKge҇w;ҥ/B׻16 0:+?R ԚlX,HN g؄dΘcI*$99/7Głb .68 @ `#v eUl%WVfNg \ ҸR'B}/].Kuۮ~~ B#@Zf u)rau%9CWlaRLrdP$ҤdeZ18Kw{\ÑhÓ"EY8gl 0QZ #/yI+S9.B]>Vƨ$C4=,K,cNnNT6˜{k06IE`ކ%Z 6jK {OI*F.^prC]D!2q %!R" j+Ug0VD9OǨؑ1à {'B'.(v81fWc/06L"(b8@q <ӮF 9tEzmc.9q:1&b (/z0>دo}bƲ۲i׳~f̉okdێc2Ӯ';m}eژ̴IDžc4a鞛붼1ۘ]Lڷۘ=X4cCgusv̗LLw5CX(.[@!ɾtpDcH܃r-'\vc꾏?Bu Yؼ%*2M j\Ba`ze8g {&J v'A*R'B>lЇ!!$䋶JVXN<#}؝>ͥG:{ƺKXIwO$BoX5WN7mpc?&8'V`D@G&6!5!T`W!RhMT@{ q:vZ6яt5S36ק_?|%;ǺL cc1A-LJ+%F0yVV 69DRO#D)iNT0sEŹUJ|=x8]s~9PalF+ pUp 1Wv>ʛ:cQ+V E*x7\G*9c:3 Ġv,r*֘'a*ȹb7^@ڙLtc70%}K7虨A7WAY|*+ }/U}ݳ>oNS:SRfL>7q$?12v%lA?(ٔ*'p`9s7/Ŗq llNBƁ"Kn=nqQ/οq3=3#,gznA={Om!K;^jO6ťiA/&hB6/E_ֈoGejlQwa͗r!z M@TWZ!X6![c9v 2alv8|yE'%&g6% ?"!OBf_ ,/q'*"LeQF-v|:|ƈў)? 1ƝV! F/(]jTm;upF_}U1w̴"c;88i^Է8dC8Ff+AV~,DWDZL:af8΢fNB>oYkWcQ \0S-'D;V Ύ"kZh +pb1) "5,h(ir"j> s7)/M֫TuJ.B#D"Z[ufebjrkl1 c*cŌc #bF8JKDi2 Bda4m|2}SSC XZƊE"9J!jqTƂi"1v&bv5lv~l+ Dl6>W%dTSFPVqvj=E+lA[@&z2fl[W,ec{/..W42%;1\7#x:̘$ZQץ)ߟ1AQV4& i :ALևΎC3Ѽ:LStE50 1+\1$(j4P=eW!cL⢝Zodo%c_elQߏ%c}Йq{yb~ziKHadƞFUH/JU62(Ĺ=؄b($ķc3HkbNF\xܞ(DEdХ.c [=U)jR*Ʋ;,jfp8yzvGҌcņ͎'T7U<޸@}`W{4\;x&pцXY։PUB\$JFZm\1.R@4yRr) d8aw`((vi> vQP^Qi\'BsXϖG7QAE:2īYcx,!ƚx]6Šx $ &D !6zHhr,sY1w%vƔԳڶɋ JSn0F80i'Hf34~' =ɧ$`8ZYb uvjXOqg˝;S? *&EQ9x;Mc=Rs;R[)cR$. E)F<++O[XkfQ?L !Q`yT*n,VQQ_O1O"G K-$D%sD`v$R}vbWp) shH,cʼnr&GXQf%єM-:pm`h e0i,XqTBC aP:v~\i߾}d!q$yBd7KHG&qKԺn=xSOl=ZM8V8cUec/fiwȸ " < W@E0x<]֢lrWP {[YH9fl*\+y+=ۇ >98/FMM⌛|yLjcOX{׎ #^eXfy*v_\Aރ>SP"v^n=ڮQ]: 9 #m,V |Cr(=c܋]e!?wspЍÊ<$ȅ#;E(ǶT6.Ș{ՕU+weQW:a)cVc33f H}4 Þa7z{ol|Rv& 2^tqXgWeU]uj[ڝjmaG c |esLǁ+t|<N2*Iv^1pn빁<AE6|ȧ8 lPJ@M>|e ݏ%kwb/4H+GrvHyȮ] C4zϏܾsg5jj 2wpTVqH4~z-zŸq0Ī` dUbKcbuH[sXs=^Yb~;|t ؝ѡxcc|q(,} 5 #{P|'qX (t14X)SDEeP唵[ł]IxCSq#M65c:m1Hf-gZ1mu5ލv``A9gD3e$cmLXz6]􋽋Q-tc%P(f 0ͯ,ǚ_ՠj#(29Yw$D?9:7dC~@ec%: b0 ư#:l@$ew<A?@$tH*' h ;z X@?EwGTJӎc;"ɛa1 5l獃ڀA1 mk0 =B7"0* *3dYh ktE(/(-v8Cc(.-*c&z`W_8`kZMMRwӿze^K}+N%}Dr[[a}?/*8 2v01xaP8DcZ|Ȇf>}Jo=d(iD~H|540ftl^?pPe}b6559i䀨Ӂ-ږ/ uϴt:ln;6r#'rs=tskqB0j5cP.*ٝ1Z^Tu/ˮ3gdlꄚ:1}?/|ddą3,$o`܀ٻym\ ?5OzС=xl4Ct򐽄Wf_D#۷bo$k IB Qbk-e =E O!l6ofl/z, $fg8 4|;60l OO'0f{CX Nh@IJ=ǞdM~M@e~,ou?ffcu܌qSgv%TB)Cn^dzߖ{žC^~6m*?GnkBT%EEJ(&2Cr#;\BXB-Od, th)6{SK^0d tiuo.OJTi['co?䇚o\rOfs>DV}3K ܏IČa{}^oEAGr.dC[!&Y%z8]+%)?T x8X^Zx!PNG^(;]+J#h0+~ݻ<$FVߞ232EK ,Ƕ \5^WS|D -GJ:lI~?D-&i)ٟyD~G($@mJ fsҸ||᮴mi f.@`y˜W-&cV"lyW2co[܏?,>7ޏ}u?o<1`RJ'~|sgFƾ֒z{Aeʂw XԼSN>wo5t5)P*#!,<2XPxz-GjаjZn؁[u)R֥U^ɔdCݢYH덱S_L;'܉7ߏ}Ho݂OOd iX.}IUY4VA%#wv-?=qD j(RFA$EX.8ŔӖЦ 6p+ ܁1k鐤%d\qݍc*8~K%eTe7߄U*7aM4t*F K^w!\] B  1jUc:TL04ppsA^uAZdbt+ Z4{Rx-s@ o.ɔdq3D>0| 6|s_+ڿ HU6ar?^9rUWRPv!`X ZKQU7 Dm[0%yy4qI{S] Pb(\?ϥZkZ੖SiOW>}*vm"' *EEJqyY.iZF?e[MY1Vr`5>'k?~ glϻٷ!rmh6 {$*U\Co&dգ>ֳ`,u[V[ASMmkO׳[y3WnYk}rBzk{16D׃~ߓVV6cUe+n\ cP9;WrO[>M~W~L5ÈY03}/ؾūD'!ګuR}Z>å-^[0]кߥb s ]9&bˆP51'|z"CՋ)#âi*~- 2o$NIj.^9]v];%H 1 QX&"NV [$+VbeDMWaZf3۳scaZ~zV'*4b|<:D/~xq1QkԉިhLm0ݚ1;ś^، 98ɪ!NZNy1sFôXDZe~֚wKwI<۩?l>_ߠھ?w1NgmQ1[b4Uޙ9;SmP[$c+ c#Ib+0j&>@ Ne` Yb}-H/%c߽}i>}kcw@5Mݺ7.osr|;z>!-cgi"\Kbl`2r>$m#r߼b02^ˌȄ֠ŹtsE'22PU- ll8Dm0ˢ6X5(TQ82|-H )147w)gqт:nIr_xWz>` ߣgIvf̘3Lv4݂ x}{JII1+M6,4r+HhmV[LfP+-TLOc9Fb8M6n⎋` ݅;HL8+6pR3sEoH|e`i/8H;@sV^g.16nȸE]8v%aeEGjHU5cgjF> cN Aɒ-u҂^L 6Єm2AQ_"˳ߎhd!t m\^2CUҍc޾mUo&b,Wg3*Y 2a&ijMmː1Vd. 6+7h YO!IjoeE,%JS++DMI*-cia5]jTm;upF_}U1w̴"c;88|3}Iڡ4lH,c& dQFΪKj׿g >?v؝gI]ᇑOЫn)Lz`dGܼ>-Dƌ F44We1KFRDA6"~TS*Uj R$?L_Oggs* ^F`Q+? ъFW0>rܾh^6Y,?v(" EhZh&H-9YU꒚㛪%1vQ+|_A'ݏݹpw`|Í ;1Ø&PfTչ,ߤc4 d 6D*ñVLb NMN 6O>1kyX!L'ÌE|`0rDKNOC7| /DGRX *Qix9 n0Vn9)ΘsBLֲP}'ׅjg"66[AkltdE/R,ׁb *4Ύ@mݳ(ض*HYuIOeT%գ-1wM̘6Wt-߯BJb"⛙c3u3ᭃxm&➙DA3JwL쨘&vwMp*02dH8'sPMŌLά"[6G3~q 1?O h`DtlRCLB~AZes{7ʯaST@[MH~KƠߏ%>5u{|!! (\E<8;d,N;COPN}Q)CC-"xQl+N9=c _qNvC &w[{IQK Cs,1Bhjۡ36BktyBuf9dq+*45fWA١ 54[+Xog[OSF9IVa Lq4GVw'kj&iJ1V@cOء&_5ԫADw*\jo)pwhVNhj:?U. ocGμmwXB8kA4E+aqaV3n ߍ:1`= kGPx3X2Z6Nxd(w,1Qq8#[j ̦L2W&X#-ſM5|C[†@vxEЩj;H^r'arAa9 .^:_~^KR:cE2\f•: JH 8De)DA,&j%ޟ73˨e+[Hi1p3MkKmuXZ-3֊΍. w:񏵾։PPrH4ƪ( hG GS@k6a*YrWb32Sx9ib;yIZRQuɧP AMR(h9_ni*b,GWLßҒ@ 毹`0³WbxO6,%^/ Tވ"7h}~ 9֖OE6G3 y ۄ9q"cKLmJ7GonCcmcmD&{smN4NJexT4bpiP%߁;R%ܘbj5w^-8_:4<63Ad)xѢL:M)!ԩ|fXY~S Gk[$cq~«+ǃGyU,]`BR>"Tx"R:&YrQ 0bԅrљ,:EI6TS"I0{ F“ZGe<Yixٙc{P5GλFto$'uo^e94Ôr}ꪎ|"$*I%xPQa\X~RF!2Θ2_ш݌)*ϒ1v",b5\D|:^2Ѯ)KKoZ]}}SdlWNp3|nރ kk3#X 7 UƢ~; X.ռt 7*Ye=~Qm>dlBn>6<< jdyB,sfǛP|M0dtHTRϠpafʪ4t{j1пcEq7DهcXşԞ0+N54*@F׈4djg4QGT. #WMQw2Hǀ1b1a#JdZ1m1UUe|4 Yʑɉe쑏MTqlJ]C.Pս!Vݛv?yEγb-Ԍ=yE!w[s޾=Tns󽷮\Rc`쇹JuFZ b1~ eue=jIJTFoNo oʍ=rv>'_|v\{1zPt y|z/rK`OpgAZq^9 \6<`ywџ{&Yzg)ul֭ƘM9F#9,eELVjw&PLJ˅/ɿgb_5lٹ$X'|喚dK՘R =ctOȇ{tkrHc)L;N 5pv"/6re,Ò~S i3fy}XQM~l >a %d8$]n05TΚKYP4Y>غbk1fL)c&G+7ԏaG_ۏX1~5ƖA˱ gc(~0uQrX"?)wI1ֱ>J1[vV`Lbj%2fͽwdƊa죤CUh}ԭ!11dw-鯹^+s,؁0uRܪdL}7xl7d3|.1F_a@xÌ}[ 4>kcwa e7A2֔[e 1v`1}c(˖~l1qqso!˕1\b~c.Ob岅jwڶ{ z.f{71*[ʼnt1OYstտgG wIs} r1/wTY.r1Z+!cfK0_ g^x$ϻ_1?cvQJr䌧3Q$ĉxk? %qƆ`<X%`*B1iF`9~_]-<~~{q*<ɛpN1@_ܠ!땀s 1?3}&~y&{Ĭc{^ǿEp/<ߏ!_ #>|'OƙM13`̽Le7wMXL-bu&:c3Ę y@,bϿ}m+y4yGx߻1o@dkAw_3}g%_3V3fU_^O*MDp3:wkC"Y:s5PoQ0VYYi!*b9X1>lޯ:V|Gի'/N3V ŵ`Œ~Oԏ ѱ Xn(cқ7K++FJS#j GuUUuU52UU1ɔUW#d1Y,2&#^ŜT˫[@0e ͹fURohqeaL^3'$dC5$KC10d?i:b?`j06ضJ&d!LaL3=!~GL0c*lQjj2(bŽo-7GDCSaaL^3'Bw/ Q=.al|fw^=FHXў1%bG;}i0=/5#vbVmw,Y B\ሱp } x=K3H$!2G*BYh aL/2M8<&ϠeԼW߾MAǞ{ 3ހ#D&u vٳSf \+w?kSvrӦM7a*J+7#Q2܆ueRYTcD&rȀíY )-d}.cY;蔾KoR-w.uT֮q2 J=DDIR $d+TQ:|c09>IYk im{c% zbtˢ<1E#qYH>[c,JځLOe,ɾߏ^30B׿JDg2Fd˚9׏FZ۷e0yښ9[ϣ@Mkj1y1ښ9\j`8e5^Aˌ`l0o4W56>ǥ)XAۗ 2;clƊƚb}ΫV}?) |ED#Rt]3Sm^}`,3k dc˰Jf8y-53O9xVDIN9P3FJ2H6 K)eLؾL02b^ҕSX d\>1=˜1z D±ȎdAEr~ȯtwJsƈ}G"ƾ c[k`3Uc{P5GλFto$2r"v>\/MuoXQ|%2sS\!DE;dX gK;+ U$+3n/#5VASgu~RF!2I=ojY%cD3Gz?ЃMB1_a 8†P=sd)eINV3 suG[8VQ3Kb{6n6nl:4wzÇB[p--׬6 3kfWW$gn~ cUz[(%ƖkL3L<1.>firuDIGnF4=<٪v$GT7m6Y+JJJt:-&vxqx` ].g6{i^6kkڧBW(h>F9l~f94G#jwPH[[po-5D` Bۮ{fҌ->blC .}vi11J0k'dL2LնSؓ~ߵ3@Sh9J Vٞs`.0۝./-YB*9\.2!xAAPFHK h0v~0 ?q\>8tbF>_sAvGN='l;O{ 8gt +.^KL`n?{LQc~y #r)U<ٯ2&Q^1Ёmp&hߛ֝ Vc)hx8:CAF}nP6w}ޱ>8x ׳tQ;]BEdj#1ypQ5v} XbN&%2f6Kw1Qy #"*["7   L63rp.6=PMVQ bf4h\uox;:a1Y53FfM&f2便_=Eu74B5oz穧b}|4KV<R-1n̛963,qTL,7qY2 NlV*&p -Kw-ci/_ f:?? g0ge.5fyL̰ٔee1~EʬA ]հcǭdf(b‰XfD *C$n@f '۽V,fKtc_OR {g_Ql귾3b )xʾh%ÇW1W`|k0`"0ȅ/]JZD-+2.8 '(lNx%t;d47co|B7#ڭPd~0fh.\/5GyZo$.x}Ȃ;eGF$N Eآ 8CM9 %H2'&(H=bК s!NsPc |s7UW7Mka(Ȁ l&df3&5 d6@Ԉr#q 7y(* $S5'򺆇.拙RT貦Mj5a&17}T%&[) 4QCkjVG(ӓ1\(age,ȶfu83eEkuZvg*dyA?=c.Ƃ7NO?1r^n>?xƂ c؇]_eß8j9?tW7^׎ܼOwƂcc3z݉7F_S]{ݕ#Fal)g}ߍ>-!g,ٷO=ve*9k(ٟ>؂F^ko;3?X> sӉO|`Cbol0gumX+?E^nPiO c^ڼ?71ޒƠ1VG1cx'!f'Oy,OxP2[KٷC_4ȫ1c6ǚmL99ЕU}}}cblmCXc=t(N4_89W3rmk]yuM?60c%W1N G1A1te/Spc[`c~3gƠs6E֍\vknxXS.c0'Nc;x '1qDa;/ONCny!g =b2f=;Qْ~$rt)23Fé-H2N_ܴI& da=ժcqr󢚛pcLY1h&/dx&>7F֑1vL;b=Qj4qtp{jt7/|Yv?F3[OꀍÕNIou&dz XlLW H^aRAmyl`,oc:3]7Q󃱿`Hj?8Øecz 2 shtuCz1ZgDvlg1Na3e,L%D+fB77vm4[nX[w2]'1001Fc#/~J<̘G 4'mi l$6"yO|@Qh!8#1v`~ɘ%c,0pclCW8i h:,p'hCM^f<]v`h1X;0Q9㘔W1c,6@G:)MOiߘh rNU2KRLҍUݸ_Ȑ0T$1! B˷%h|d/+X&]y`E R_PXp|?#c 6 ʎcŧl16\iOBh(*xv!r7@, b11}4KeKe5pN`%+_KwW(ݷNW,bJRg 1|4| ۶H6ٖ=V)$[ܾ-?2fh>?kX~I!)5\RSOTN8lY b|{+'1VU5$v:qST;c;o1}9sfgzv_}+bnju޽ۧv8`{1?ZCQbB0\" N;a3M>2/*VbMTUj +&T%~|c6oWx0ĘߌYObGڊ kZ7=cY4/\\a؎"ך1E8  '-yXܾ>TQU~w_k(/ZUK [m c)r{',rKf'j(h|ZjNaBh鰅RXfgprQV6\7-+rE22ƆcR 1aD%R&g,4gB5XP+S~Zh hϧv@NŧPnG%)[r؁O>|g"|0[ēV*qxq잧{Ebo*d@ؐI*ŊόF$HrTDpA3ΤNt@s=[_,w"<0^Q$b a K,͑ '0 m@gFK^L ƸU- %8_p'Sޭ'Ʊ-71l#cPx4W2'_?ANO1P%pLMPbk> T֋6J+#+a.8#|L8PF-7|x8spDemZitp/-_6yb5*oc 0VDb[)My"veWFX hp2fAe52"Ϋq7?cӇ94Ǝws$NB힎޶i;ܤYCQ:}=HCBS^x=tβ@R:|˩N dl`˜T_K)- ~rceVSOf'N}yX99dRTpv `Xl`>FdȩZ ά԰ze0 wFf$ë Xni_ֹ}81o0===cAy`[cmÛ[0l$ءVS(rDt`ySV-5Wy{@\\ƾ*bX+ZcWJDN_y iBv} aR4Dh&/eos9q}LJ:~Xw$Cjk_cKrk,%Ce |3+5J9qDpFڛ1<ٙ(݄Rd˰(gfZ+[2~W:މp[^mlAƘzud+?*˦~6zeU]bbRd.hc]V{ 2ӒWfvAdYYr$Ǎ5U}Da(X"╼p#˂2V+'#A݉-(+(EG8\(z0&ܿjGy,}$[8<\TTZаŵfI)Rfp3DdgKqeUO;C*=zA呱wc[cKd:RNNbRK>Z&X:!B;7S{lYJőx09K2Ёp3WS,ġNpJ WB wz݌F4c/O^h1::tdڰwhh:؎.-,c3}&}iao>ZBaQBK<,Q D C iI@IfgQo1VS]ҥP*驆CC͕[]vCHcȖKt"DQB i,OS1!Қ  $:*NrC䃨,1M(q3vBAƘssG\:(u tnѰwR:^yB)6҃0"#bi3=au5p+ZH$EQB,@L8jS-t֞&wM,(X^d?{ĕq٦Lv~A]j1q([)Z\J^mtpMl"VD(1ΏV P S~) %*H" uUސ]^ygxd\o9gs按s̜H']K'%ۉjdz;]ɤmшdM{{c3ز;- 2`ˋXl)'{ Ӫ DU&؋7Z9 (?x#1yz4=-XT0dRJ.x卣 Q M$H)v ٛDr*fI-γ=R@̍;0geY^.cG }fd81 WEYhˎQq4 óIct+dcL:{d:#1.7,fax0FB$$3&9!ddƤw7co@W|7Pȸsz37md m)^u 7dhcߜί^5&=璬S5;odli%c먽m&+ػ`—@iwg/3~$ORov9k m2j Er/-r[lJ_!1R!w5#a2Գb͟/ ,J. V<|f7 c]Ogҵ940u0fJOǃ=$0& + c[XaճIgDY FpY`5jA<EÅ,!BX~uƵ X-u I $R9ګ0<~qƠ,| odDax 2Q8'S&CFju0ֺ6!a c,cAyb; 21)":_QYZ[\٢zMSTcl_w&1cZpx AGFtC c,ch\yc%y,.d c,c0#Ĉ0ɐICʊczU5ߏi[3uf芝xZ6c.W:c&%rč`Mאb#1n5X  vmbC@p=#CazOc܍a<;eClU6ԺTk3Ycd3v}|*v^ZXVLaN#[< :pS*U3`n_pdU 7'cce$FB&S.ةz>.W C E C{1%鲂#e]n[Pp=F862\b J#VQ1%d){g/"3e1c;( v@&5C.?FQmn.v cz q1ȊgSg k7Ra-"39J~c+xbEw,Վ?&5Wcp`x$ clm>fnIcc)1?bb/--(d1{.O/>//.ݤf.fMo7^z F1& ГvRg;g~ Excܑ1< dܘ?N^u!V T+E+&c]<яUQ#Cjoc1f=W0A5:] ȖS[Pd[fgmCQ5 $;lo [t5Iw8u0ܱ ΰy34VVL 2FXo_E kQF: ='o1zYXcLw9c}0:ctu0vr4G޻4VVL 3Fjs>ǡ 0pd.)rd@?gn)7E1l(Ird scIXø`s#JCjhd\^+cDHW؂xpGõ1pd!pc3;l^jheЛ(|y+a  bc@+E1Vij/ [4 @$O8k0 ŽȭVV Xwbd򰇭AF0@pW,B=QFSc3v6Yjhez3lZj2Vᨉ6ˏ6bd hQX-/K24 aI~1#g1 ^jhed%GM 1TW4J!b@ a8ՑDQ5RoIjz z;hi6#Z)ZY7G c7zEiq%hd" *櫷GzbQ 0H BrPRb=UAO<֎ȭVV el+%E1r!/Z&cJcDu4 HG^o$(Fx2t?!kFlՌ'X`*z.]NJ6d2&.Vz a291 y ֶb/8+ge53Ȝwz{~G~=4wQk^Cro(voheCsþfb_eD9ǒ}4o ND%hn{ Θ(ѭ;]ccXW K8LnfbG~4/E2&+ŊRk Z ,UG7C)Θ((wq^6qV`,rZ!'F8^ˈr*Z1bMֿg3Nu-8RqX2tYVr8=0уۊr*2<6$cJ11~EtgA0& `>+@f{taukѽ\ON\9_b`ww3y31JqV)23xv1_HcS xW䌉Cznr,>ZV`ݜ(M("2\M%dr?3dl5p]En~Σ>y$Eče 7֝;Wwf<5~ϰ3lcVY]yxڕ532ڢ;8d2ůMXnYY;if8;=1ɘXQMetqHc cxwi"4$+$t|Q^9~WYM-D%$0|uuXid9u SEW V=؆fՉk ͋rk[I9yftgG+ Ygg2 $iDLƌ`LS3T3f}V1_W:sFkbn:ӏKY3ua2T_IL=dPkD|L &c0)R 0fc`E&X%nKGG52&YOM"s}d*x1!31#qB>wH ouzobcgcV,4q/4kpIn 9]&c:Q[[0fK1]c|\q\>;˹22Xđ7|c3X4qޙ9f4y( U73 v̔mϽ?m1Javz\L2bBNr1fq>w׿b\k!_t97w(B@+]dG'%]"S(+@f#a-,[bhv0a4XQ {3Gh]Kb L@Ʋ UDi,J. ?Kj5*&=сPz,>~7K4HLcMgJ'+{U*+dbgC1 LZ81(!X{% H_0W0vS.s<]q\Zc?xhS;WI@ycC 20c >B R!c>aBȤ:4cyO[x*KͮfWL6,]1_h cAb ōΘ2-d1OQYD8u@0coq=FfX1riT̻̪fOz|B5V~1L S/ޏ1rdeŠǴ3FS-ӌL,x~L9y5EVelӦ}0& XDgV<ҳXT4 *S. \nY9DU(}U ?߷dESJ!rz,2q?c`j %`ZSr:=EqE]~NT*:&c`];G c[n2+( YK>> m2s,dcn}Ƹ|߇&c11ĸwdyZnk@:`n0c70xx1ZVIcca,[dɿ}#㊻# PO1XĖQibr8pdg,A1{dGsN,c̏Hvc{ϗ`T~?cCы@ƍeK&cϭER33Y04@ I0DCqK#CH_HgL1!d( 10>:s1ȍjGdĮR } CCWpKg0d56d«x VT9J1zE4y.2 ĠK [ >No1m(7wf=,]cdl-xV@h[K%|_ah!^eq A0yI8bm.yw\JblSj ʐ0@,5i2sa-U0R}5zFgS+lgF y#@xǥCvCDc\R ;P -D `j6HyK,RnLJ]faReLʓu+ cõ`*%Tt6KgO?=pCiM++Rҧ_k`ݮcX1G8ǥ `d-=pv|G!d]c;"v(w .S|Rܺc")kNjaB1iSY;3KT׫iMx[7}\- _8ѳb1.;!c^\Y SxeKh ڗŘsWc K8N1o˽gECѤÄi5 Px%|<8*;?{1?T0?ba>b׸T;9~q FA.RߎCn9_i)S_&c;a$OA))Fc&D Ԡ_ "OKܓ 㘒٥1?50w?>k\Q^ܽ_\*vøTL#Ni(k)0+2ÌuL6UBg8좤 38Ac&2 Ԍy:y7hb2IߠooЖJ_1P ; yDK5S vB|Sx*MťMHU|H`TF1fsu;7!03>>y_Mv.cԿ|4kRk'+d8y @=cЋ f*Ebv2Q|5\|kj]0Ll P[?H^.>6d ̺.xOn'wx9cyۙA3 [}HK3Xmx^7ǼVg.3)xǥ)\*h{nףe`N.K>UɤnN,V:{1ԞScQTޫIxǥ3hq#ӣ*Rɤn.@Q{y>ϔ=c" NA9.ԃI]1R}#C; AWOM7NnRXSu&qK%J:I]1Ӓ\*OUɤnNnRr*/ߧLĥgEq@>V9(Hz;#deT><߸TxyKeiƶKA!)Ye0/XEЖlJ O&hN\%LpL, i_&H@{]+Ik3[od c9g᧵e,'"hdlp{L;B"zkpPZ$Q0F (Gsie>X){F>^jchP3, *j2P6df%%U\I91AD((i!c(MX:lVbcAKH"xXR m'B'. K5J8S1Zo X46LG{C`]91rĆ-|BBSŞϊ%_` 1ZX&ΐ7ņ*'^At,cCoISaueiQAwPQC o/9!TQ{W K=!c򅱀]v_p42xg-s7w/T!L'*CɒdyHo."{{UnGWNKʡTF 2F2!n+U5<Øf@0QWoL~~{?$=GC7ȃޓw@][dRSuh0Tɽ C&0Ge,֘1}ͫL}*[سʵTiK=MMg^/X+,^cDnS 9ٙJKd$?ItTRF?&3cUdQ)jjFUM'龗~ZM4*bL}*`2צX3Vh72۝G&LjUcT61{HGS')^i5L?I&dҤa,I]ORTR2wKhFUdJu4LΜGޓvMtdi5ьTifI|=cyvOz |4~JKrKfTEJ3LJ_OXݓv\h/ힴ81.Unnד)R]߳ljKdO(.gvqKYJ:*ǔ|["5#R,KgȟuP^2&O u{xƥ"$dڠo\z*,`hc lgGE?cPrKN' RqjZ:kƥbg0/ K:zZ 2ZZ@UuØ/]8ǺqwUbm rKΐsW?!b+Sr>@#vgUWl3m㸶vuCHƘ&Al^P7$ uB4Ji%hi֦ͪ hIQ]!U&x'k.vإw}}:|wG):)湜eऱ7/EMMG7.fnrcPc11qh 7`2-Bc:=¡15st qtvR%&/_5.Mc6n7!&kA \g09 hy6{y'VS):$z<:ElMZ bJpضvℶy#1SRٛMu<Xo\*VC߯q|.z(kRET5s(X4:=W4FNa(ƛ'&vK|Nv[VśyMR ہ6%8iִt}wY;.ե7]T>}ǧ |81y>Szl5klYcd 06={i3l9Yݢ?o&gCa #"kGKu-=.W>:!2.ZV|B{=JS-Щ4X7<7<'I$X$Yyt*yLַ?GL<"JSƤ1KsLU|7ǯ0fBm F(` 1Ϥ-r R( Ƣ3fDAcJ #paâСkG&/ŒlhB0#=2Z 7#EA\0#=2Z䮱MRA\`!=2ZJ'c\*tcG/2.Q=mk#Y!A>ȸ(o11.͗?0,[X_^AᡱHZn;ZZE W~IclW#BuKWsHNvEPBO'#8ҶWVE ՔŇfrI9)*{8Sd+'T6NΠ{bkM&McӮA(l-n"{{'@P]a}⢱|bAzE ՟"MmjYS-S.gZmTV^EV (0dϦ]nQ ɕZ->TWtxIJ6 "_(d2NFJ>zGk]~kMt]AheI/4S'<6,'.DZxȬ?Q:]F~%ާ;䑘IZ%#3CK7&wwvX #yz`E8;y7f.Ю1NLEcDHTZOw~̽Uz+z5.=f}oM&]Q$h1˻ V~:Lܘ?ZSvSމN?wDo䶭>hj#5G;DiɧvNޜl-iCs-]X EhL8蔮@Eݟ1zDɶG#픲JϊUj} Q[tKտPJ b1OqߛI**ζeepN3OӬU"z4&Y]_@d">^[Z,hsDjù5Kcq@fjl|  c}$?Vh 4{w6q+RC^]u%}_lл8=*k[ҟ۴[[#Y˔q̸ꘐv "Ǧ]ΩM,vcxWswXpXDcx`5셴+q,"cp p,18%pVx`$wX iwWXDv;±;¯c8ٱS$XLrlsw}Ź1Oq1O|r966Kfmɤ5r" Id X`gXT:Ǣ $p]dpY`p]dpY`p]dA;&XuL1vHEӎ ͨc, cB3. 8}7c88ǜpw%Ǩ IBq88.:eKP^8 ʻckXhnO.ȱp׊kGSXܸV,ɱAg$TqcUbKR5̛8W c]7fgJsEs,׬%cT<g!rLֽ6Y yϱ5M81*1IcXӅulߏ1clKs :W" c\Q(vb$"cc"cc"cc"cc"cc"X9TuEvyu€cwOnjk8Y&;&OsQI`xǢ ֊kEṽY`8`cc"p]dǘEcύ 88I~1QJkv-m±` R<`1k7[cgc F/cve_Vņcc$QqPKCѝbJEivؙ_Z=kp,X9kGqrJPt竦p,xuL+?-ޏYMf؏̨crLV*j;7>~"M?Udsp4#ѝcL#G)7q[9n5Zp,pFbW628gǴdq=u%֊a0I&cyzZ+wc]mGːc壍~LmpUٓ>WH{#ɺp,X8tHw^p,󊧶>c2yŦp,HgEǘEǘEǘEǘEǘE1~.2 fF|d]=!C:.Ǟz Kx! w֊kVx`c8#pqKǖvw;qM v)m<-dY96^z\dEzNP\V%6_ϼ;u-yy^jOƙ%?s819WfV--!pl? -JTj%Mr$c^.p$O+Ur^Hy}̓ Z܎$Tm DC{siaiG?q6\ be|Un%ވ^ޙܞsE9QLbNW@:Wp~? {q%vď9sy*+F13. Xy,Ü`莝17G_sV] ;VUdWL:yD/3xy/cŦw9Fck:'Ю$ms9ikH@G/N#OObVEX"GzѬNm!}׾UaNQ4:Wʱ5au( ~u㇇*-I rB bxRoB!9W){HU1EsR߃cJ&oJcê3XL@pwÉNTIbg /c$Ü`hslM9)?j9V s,Ӊ.I=ž ʟ;:(vv}cy s2tN}\!I7▗=r"9st%*;:(wfxÜ`SLqlMca]`PÜ%sTKKYcfcѱ!%18f8fб\1ǖE;8m'ۉ{3I<}Bɾ㵚%gѳ>{v739y)5/_9}8vyN#g&鎕n(۩qkxpuNΒl%qFU;0,p 10 ,p 10 ,ʱ&sg Y1b1Zx(daڱ冉7ۼZa1"&)SW{%$i$2A\κ5IBeXB8[JAPxQ+ |]gE`^nY<9'MBŒncJ2a]۽N2 AoXaNWA1ֿwng~Њ7|.~s՛=Vܪ=ߎUϣbGY X?'[B/IG6HccrC:(PB+oY0$6HXVچzr$n؍0Ǫ:oǒ#ҜB;(P'V,X.GwacJr8.^ǘcG2'?.H܉~2mM\q{ bc5Np=FVq'sa; r҅*6ۛ )Hy,lEyCs,"v?OlZvΚX+K_E'sx8Xc\XȊWzL#0Ðc!O^7鎑 >ݱ́E's|i;Vw;r)+bڵ[wp =aMȽRPOWVU}zxþЮy]΃{ætrpԙj[M<4ŽzvsaPމtakVligãdbaa_]ؠgMŷ\ZX|VFǺꂁrolbTfS6NYkPDomiaI>׶שuRC̔|pZnXNݲpmmm8hj`ş$OFw,Yɩz<9lh뙸^|k%#PޭcrtRNS@fIDATxmlSٙ'0B&a*dbW&QamHZ7 +]i$@ah)ːtD*D%bBzV z?XXB/J3Hۉ{s{sk}~3DRx`;$IIv*H2CXbRaI*c!<$Ď*#MU0$rDŽ)'OuUI$Ds;a"j[U3Xg%ɓ>:4&Zb̴u0 5s*ʟ_M904-7r'="l_$0YJmxaN#C? QbS xM&D-AxBK !j܉[k{sP)N ܉JfdqLO,}ܳ 3Zׯ.ǡA#b플mojxixp*P%j%ñ?$MN1AQsI($VL npKO1CUxrjI ؋cZ˧\MnbH"O4(ٲM DR wXe(I;%G~Ra# 4FBcF~X<N.1?kK1[5oRcY4U(IָZSJ$p)^bQ9b&aP(8,u'94)XJ;Lkң]c% ) kטzH%DdXb4֊{'/zUAg6| OAwB9T ݭW*i,ariqjRnl(f,$h  |"fXITbFaGKϐ#oCqO MP/M*mXVJ#1y ٕ :PK_ +>h%<âqj -6 )#K2Y"( (᫗.X"'xk:FLGZz\Z)@7p*+A7[MZ oWQoL5X %thA 3tyaˊKRrvr:[*Dz"=,Mx"2UJhW7oC~%3{5e H4Ep&> pvSidTy~ 昰O"I'nc"@b4zJO+W֬+8!P0ݍkxN:v#@7MMBcMM?CcfJj̦1vv~ԬA++LxJvہ_mYz1$f +V8abt<Q$3[ZΥ}k⓷ѫǔS2ݢ'mǩc5 Mhoȕ D&AcEcLe_3@_GOL P + K->4FbXb_t>x6L#iO ӠU ]dHXrpIѡM'd+7 MLxC|LcMG$ii^L&ɼyͺyƚ}f5K Xl 7K^(y@2ی5V#KAj$2Hr25H$shBH$sGrD2WC5>+R[.HklËF~ DbChL]N mm| Y=.p~}D"ɮ >L Hlpms&3}D"aXvuM4*l 6Kع-WzE[vK4DKWf;^3!gam^Lp'Xv)9Fֱ,Tu"&[6VؗN UIK4YvCKE𿪅sC5^S.skD k\,i4ʫMgHc%C%<{TGmBXjkm=x`d LlZjΪh*}p#Wi#&i 3OD9Z?i,Ɗt]>l?t@cU:Mf.HҲ8JWZ'Rji5\c:{X߀tPחoQUU6ھDJco"(/WI9,*饮#C{y,g΢ϏtGprb t "3"2t)ȌjVD >d?(<uDOUAc~*pXG4XU6Hj+cZ]cn7?n9=Gwж:;Gn8;q1kLiH ΚG4԰a\W8'iDjLL],Nk4ủ1xQWKXZU5䨫F4V,PIIv#]hOFX1.V;؃1ICm47I=b8 )Y`pR7D>5߮a#z1Ń`^VLee*)ab0XXI;Q62}/]{5Q,GQ\la'"l11,p9h 8_X4 ici-b2mA[>tucc H{#~lUX*b;ד4G##uCX ~M`?9DžQ?54r`zSچ?V*xhiՔfɣ ]W8n簄A\*h3:\cKJ/Uқڕԗd5^isKc$ պSbZ"0h6NjL"ɥ-zغ[$3`5< b1 B2XXZUo.jVI$ ケl$ׄraدR"$+XK$)h n\HܯxRf~ӰB"L{ <N5*pRn-f A[. 6*u*3 ">Hc8(Ӥ4#pD2L9~S8o!3kǀ'־A"}[ΡB[J،hPHgNJLX4fcJ͘2: &4ИD2pm6k,_Y)ӊAf)[~ ۷6Vf4E`ʂE*8:G "-r\daƶFY+6LYBc*21d>)A5m)cwObU4"DƮuUc$Z:ֲxc?gY <̎ J$`D&mj߇ʆzL<|{LsXgsRWDQ`5\%ްݨ}񼭭 ]_A(b&'jwK frV>+B1~S;-?Rw1?Ul:͕UN(1 ~5ͷ۰EXǖSSk2LLd oa9$WX:T3[dT;|?f;1~$Ul2xXvƦ^XԑCd3)1ɫkk7/sN~igψϨ\L =Z 9!!ỗf5L!!qؽɓy13#Og20=Ɍhlo/3ϼ1f><'Ϙ$X)rX>X㱿a~ q^BL+@1x$~woʰK6R~;u} C}]Xn)9 CNK ^13xLLp/k4$jRQ۱(k E,u4rJX!)>iHԨ@~Rs!Ǯ?†UW,q^۸,S4HZՇq7me&&G30?Vwʊ-mՎ6 _ bhyyztVpyƣkm Q?!2RudKAq Nwg[Ob5P Xb@1%Cקdy4 uvÇ0"P䫈kpZ:V7Z[7V2^ldJd)oV{PzZ]WG 1pkhOA[ab3۱1W"d/`>0!|GLL=sV/r=o:fgAX\D%LX :ϳ_v;w,:\[;&JB|N_/Bj1lmm:f7رН;9]V/H.^ 8v Fݻ<-2IYw@da  XMB_I G1{mo'ⓆFȖ2;ã_0he8Z& c#3=G'"sc+|ɺ?vWh|.mYx8Jb6S:udKX[ ǞǞ'A ^ cc",u,fMZcB.i , v$E;Y_Z_nd.z1YXGQ%OX{H7x$Eb8MN?u cfU˅l1alD [yH̎+F&zf9Gcc&{8&"k42Emm?g$?YVql_o*X;.qLȥ EN32;kRؾ&ޑXzy{d#ӱ&{GcM푙Lқ#37Gf;2Ko2o̼wtsTxӎ Gwt&8l:&qm]v>й⛢7GocttLXEn'>|ɶZӽ2 _\U hoZǕA=jx1B)V* 0cRǼJ< ;abEaphzh]yo!\oAqN{DY IDdBe1cEbykGb(:&2*;4Ů=Dr,oW'S--Z t(PGTAlw%EtLC(n ]#rJb)r mIh>"En>TGi&`Aagl6{ȱrU%[P$͗qO1 ]/NZ)r oK.]@2oiXq^>P1 !7W"/ Qp''D?K "R.i`?z@>R?%nmǒX^~577 5 2 J(%&|Fb6@c聇 Q}I D8&GBN)dB(iN@Vzi;D0l@3}BM/]< ZA[DW#ǔG86"DXR.=,L汻N,q Tugjڎ%O9F1.XFA}dYmC'L${NIrh9_Zyqj)-!gױy*~׾Φ\Q 9+26bC2T\d #HS\;P 6i#Ezzk}]% 듂tuٔcE9* Q9e9QŘd̥瑙W@FhOΜ NkQӣ1$i,cc@KTUH2?4:~ \4SAF!Ԍ\l`Np(8V+:iI+_m F ~!""vO0ǶDْoImfD [QRWADH*Y]%w"4ϊ~N; kƚ{,>>IBe7B='cS,Հd>}`L Xc' 㤀jMyX2vr9zA07`S ^m|1Po7pp~vf ׻}Ayq|^ѿ0763"GI¾r-CxS426 9`xy!|}'9^0F T+1*h(VU 6[=ڗ"( k>'OF|xE['_(&@quŠ@bZ$ho~z10R *hl|Jhϡ&|Cɋ=oxֻ١`3Ȟ¡dn.2sujBoFf\Q0v~@=2vC1+u:_U0({_ Ԫ*#ASXI=eN6^قǥJ84Kb,ᠯp),IY??pdWVtB 3xv~_)oh(*X|b1cCrXcިl5![6Ƈ됙]8Кi%dnD[XKc%%7%%-UHZ_ UCtã(D0cr:J(v5hb뚥ꊩT)sQ^Xl/),wT9Dz2X`gvB+h[C@ 6,j4b)[ *3 TSUWb:etڎH Ԫ*FƱRث ѧ< YE|$pv~)D+deeBTE~7@BC@ >fZc cd! >@ٚDe]w/Qv,y>k:VQ\V@#hʱ2(#EP8L3 d狶8jV\Q`AhtL2D)@݀,LJTʂW_W CW ITFZ9 K3`o2HK tN@jm+u:q(˜;m e" $8+),/ (J_U>hZ,9/ucG@9SRd|^>mQPXTA}ō EtL6/U{N/l0sO]#R sS{`WdsuK4NW6w<8cRDK ]#&{!'m%o su䟕qppƉlK:,%Jtُ+<\_Phtvv6 n:LRN>[sO>Vs ;3ޛ-gb=q+WZz?>;\>QG;|C`Ǻz{cx p#O2oؾ&Ʊ^1DKxlp:kW =Ap춴X9a$OmSǦcX/qlR rho؊G=BS: (,suOvSJ&/pqiSAOu^Ι](vXdf[8v8Vs6! B/hw8pwfVԜ|105#3UAX {s.{QH˫;X͟%©s;v&yXط#_y=v1 f_tmfVԜ|H(U{°@cXy3luUR4KmGps _g ('Ntxf+7̱YcElc)~ql2%±]Tɮ܋1t}(IM:_%3±|V g>~k،+.-%Ilx9<| ?>Gc/tƔvoO\*Pϱ)vhnЙ$ty |QɎǠ+xc} "V.%l_}p 6y!WQM|z+~vX[F=%l3عyˑɜ/#7srn+!Ǯc{eȱzW JV3X"cAC>Yݼۂc/_uv~M3Njӱg>R qԤd5hdN3"Œ+<hg|ׇF% (bE}gDZh]}L;]nnM }979J~H.7{r|<{ՊF' ȱq Cy`' eK JfzuRDkN&e-Uulg;VШB+UnbVNw%iƏ Q75*S1:Mך`p̙z%cEdq.!s JE5nSP B70dV1WZZ!YĥT9vHs ;&Y{NY6?1\1 + ¦r82Q( v:x~ YWԼTZVX †kЩTUC$1 wF>zD=.ێ0tlbY1IS%bIs,n;&V`T|D9jicODM1U ѫ!Q,IdPS1t\z)12c 3 _Ι9%˸}(, $9&_w*9Fe;#SS4|#h/ n ?@l߭9VR%\Kag xcA2dwdF0SI8m^~4355xnO 2αwQ;փKDGR.*R4,at/I:ocMqt[ra~o33HUրb]8J˃$< q 3w OL! Ǹ5̑v+cqɯxxϓx),8dX#X}ϸ!n /~^1˪ٙ=`e0Ǩbŏ"G18O-8x<8,^X`Cnu2sI~ERXIV,p 5!FMpWp 8Q#iKu=AxMGe^1[G`Y;4c5]-UW|aG QƜcK1c/6,sԌפc"d <ʜX 8mBVT YQ Hc[d81J-GȵXuaCiXBO;ݧNoю~:-o`jp~|Xk(9cMYlc}@i#,iF&]xMv)!~'m/%lO$DA!%@hicΕ^Eʰ2}i؛nqq*) >V!p,9Vgkp+:EniQ<5*h8W;ocs5X1rET1*'s ql^!yڎh犪u6E [ ό\ %a3-+j\W[+)vcead+#9MuO|ub-SwlI~ [ u%3$s;iǐc+1ezQj[Cnz=pxAS|tx@0/U|HABdp7e;,_ժ-a[6Yԡe>Xh#0qN# ĉ[Nt~M:Vws:% +?7*b10`^+3degS;&N1QqB\g>W|nju )v rSe4"cCFx =u{za!~a"̀𿌢G6h,- U2bqʬŕU1ԩ8-؆]a6]:hN4'8s$p ;6>pw[XWaLk|:o3 T1(0l¿V=ZH咷 (^#E՗gW>׋^`X~ƾy8 RJ&B{R>Iǎ=1ٶ];W&)ᘇ .E=V͈6VGc> 7pJE 5L1&^͢90xo^4e"q7FU*zD>]}nWcxphc45&gn#>v|_mQXSZ>B \iuIa}EX{W~a;PYXb/_8G_s//7XR|c1:^D}wv㻙f> tiףs J Kof}ɱ}9v Ǡ @p)$^iqH{S{hc^k9Z(tJc c He9@2XCAc2^9ن&.-pCb>^;rR0K&yQ7{vH&ń:,E3x0j%ű@C2`AXqnsEo)w.5Sy|4)uܱV:9N:Y L81t,U+nfyͣ6aHpSؗ-'f_QǒB[(%8%HcG37?'I\k $c_?y'[?y:jbB>o>16цh˴cM&g yfsFAn-֊c2!N^w*+pvko ti6Jt+m4v̎)0&bhs}3#KX$3%h !sQ~-I$TxCȱ8cܺA+^(AS !m@s,ykq7'w}Kc@Z~+0fKJ̛VY9n>pX0cds1Op ꏥǨbjec F?Ҥ8FSt _X{.K,j<44RvL 1ͱGZSH:1X ڎBs,&OóNs,m74I_ i2ǟ$昼c%ܪry*;|.)Gs +)'$ʣE ^NiPw/|:L~ݓ,1w,XIRξÙ4}+;\G@8y6Oj?;@19lȱVc<,hR{&dy&4oրb5I]Ixp?DCq;!^`mK!tAyЬ9XWWisC8I8бwH8Ǩb]a#MOGFI.v])B1α/|E:6b,XU|Z;1yW,*%9Z GXןe>3)82]6羅oem7R+~Xiȱ$W4VQʱrWORS}+OcIDlnc8kǗȴYML9CgOȾ7whv]9c4gB|ǒ_@*J:&V4:Y]@^G5ldO^:HX1Z FÎ?wGy1So!ܭ6vC@,|G[c<Nf~p8yX[B TKd#Geu]Qq4}j#a?_XЕ)96TAXqÔcl+It",e!spm yyB U+"(9~-LLykcv5 WmpHS}ikwɎQt&c 16$;&s Sߋv\0Nv\\#퇯Q&+9ܔHl.[U0_YAFv/ݿo°fv oQL'\S:fÎ '9b^RɕA8겐sDl T rt GE#Y4*RDyv*%UMեP;rlރF܃~LE+!ó.9HSQL_-WHԱX+ra؏ZET@b zwmܺe\f($!]Ea6t ߑ!rL0cK.$j#ĵ;lRΎZ*bTIN74 G>>i19};~w!#s &py^&ƥ$<ӓ<)Gs}?牸%vlFEǺH;Kb%ȱsqnm;M#AB1l~5X+fm[6mǒwHMl ɚc+X$cE.k۱ n^eKNa٦{)L˖-6kco@ r@slQwD@!T% $Brwc+WEXa#>c#^;T? 1i,s8V+^6UpZ4ǴcC$51UuO@u~cZݖt 6*$yW%ԸT׏כ m%:.߀D׈cͱxF1q+? ^I+jƱNuS*c ;_l]$堻t#7WD}58T1%6tsߘ5_zo ̏;2T1mox5c[7N]yW?wΙa뻽:*X i˾>c wkJXʗk1N{}/1ql@ı7 uI8&.̺]0 /\AIqǨ 7h*)׉}x#xn,vlVX1t%:Lҕ/לczKNJ 9#Zj+ ~;}T416jkG8E^(BO>b_bDL$Mt :^Hrs"E|WaR?ep9t'NT#E߻Ow}םg,c#Nc1=}.\&c3 [~Ʒ.xn[@/R@б@W11JSfgAv H?'XF0 *2Rb%K>s,(v"wzߧ$8{IYwouX>ҎIKV^*&`YyD| )Rq'C;MıVwyc8uMԱ3vIPZ>btg;a[T~V 6( 1Xk6_;;)Xic}7zG{Pб/9 a:b ӱ3k1ԜT1Yц؅X cY ٪ql?&M{ 193u & ۱DŽ;ʢcj5.\xs 1PLs, hy:fLL'*+qrv[sɡ9F8VYoa8Vvj9 $/ڎi1CEE<9VQaDZ qlp;s,U1±xs ulhr;ZtL* [A#O2bql;:Bu[F?c1cr+Ž8K[%I;6td9 vpsZB6 ;X Б86|D/Vcjc֐5D(MI;ēclcز;.:r"@1Ă$wMZӰ6ބXl^hu@O#l~10 ͱŎ]b16_±8q?pmb}Ld +oc_ê7o]{]-Y%d_,XR=-G l<9 Q@1u88E <̳co+7/\7Ok3]z<ݞQ0 ;V=ǜ~q,999#HD:cxS4}{VıoF1\^t m2o敫푥I?IKF>s~U쨃-9FQYaƞcv $ǓcɛQǎ 86fgn1ӟ?\ MDx0?t0)CKvݷG]g/]`b #H>O裏oıpJ03GcE+aoLN XNJ)S'%+u7-5`AԠ&M5hb>6я>g|{ k&8byz5: [29fHsq\"WnRBA_9i|)B&f߅"9t%< *iu#9>RIe)cqD"JVǺHǀ/}9&x`ZWg(TǺc&k ~uxPdqdX:?9}uNG,:&L FD~"JV ǞM5|VO2Q˖Xw eSڱf:%:6ĸ+97IeckƱeKul-CsLұKulj9Z.2lLıKul(0ϊ-_1>Y :`U2sb1XQ(փJUc{pL̜sL~ zвuܞ#pL̜ث"q-3G8,eo/r&JփNeذJy?TZl=h9Qr%K3zЩbj8vB<yjk3jU+X0M;VUK"';"r]UhtqG1 2pejVCo.@Vӕ%xv1 ;fM>,[D F=б-!i6=o|;w]|]RcH۱~Z7Nnj\*@3Ӏ"8I<9pvt@dbQ*d@19>ŅHJMt̒DqlMnn<WZN{ǞT] ] ]aCݏňB$!ښ`h~CCMmm&x&nPw"w1:[ Xz|8$ J ygcN;negSs[?X */{Y@.?;$ hb JF#b,Ia:cRGq8H91cEH7Pc',F/w12]^q5a@^Ov9 6b7~=|D~ ӵl3fs3e6m`M> z⛤8&} ;z9)&=<@?w 0GJslcy(BK#r#=q}4^^8^8V)H1`&bϳKK# ?h[~+{|k7rrz{zA>t+Cgν>_,X!C @%WW:)OSIDX4V1chIf.RDb3aDxrmqLN Hdh- o0mF;`đ[4[~bom 5 VA Z@1%& VO^+vԏzסc0/6E1f>VcE{;Ӎ]5˽1<3s{{:x>vsrPZ$ 5l\bNKn&vWS04q~OÅ,PBGNp¿T_,GJKTmd.G$yξc]= 5 *,+K)aQyDγF{VR ~#/8R^t:zq_?"3Ǣ{ \Xcĭc#iX#v "$VqH9IM)Ǫ; a[g+ҴՍUTTWvi"۵c߃d q9Fu_B61+X ;#j`!{$eS!\"$m/4(e☫SVKYݵi,c:F}M]"1ItYJ9%q_R7J\E3 tķ-9 ۞c:Z r %cW@&t,7lcsG/#-9 F‚]:\tt쇸QZ}wD+xHHHx*\tt $3ȱ}8zGt~W8M ع˕]L Lcw9v\Q^,0 S`R ?ѱ;qc{w$bH/q϶WoE]u+{%x2Qcb+g4xC1heGͭ,8Z cgNױB^b"^7C>~Tplxbp!|T10Q c:?Yج%Ǹ7mx}Xхf6haqyXOz|9J$V E1f>(Gñp΢vfM(:=X@GѺ_QC\cGҦ1x ϱs*c3EǮRs~103᩾869}bw,iswD:42?j4D=X,-Ǣ\|hTi#MF}^O ;mA7=Ǵừ$S',2T 78t ءi鏀C@dX e0T #f0lo9fD>%+c朷ƙ)6*:,\i5?~}ZRK z[n!2|E3"Cb7au=U=5nGezlw?>9OT1#ubn;2؎C?1|FΞL3nibt+,5ǮGj6iu28Eq:0cfjNNwc~{?+"Tyeh+(;`:3W+EǼ/["aα><6<<cqx6^ux]Yymਤ0c?(8FG@xp{<}%Km1iQ9vl9p$R 8&V0cfnE1j=y>>wl7ws.^C[<ØY,LM3#ci Q4<:kx2W,hƒ 6< 1fo UA1YwWFGW)Ldg|,e,{۩5_t샎vXyc6܋3a/m|E1͝1y_0,p`";EŹ:Z1Ǿt,~tcr܋sa/u+m@w2qڸC{dvLwDCc@V#۳ދ\8w2oč<]23!ciC8?_S CVGM\9%T|[q{%2s1311hc+VX:-dri8\wDt0 Ǥ*9ըMR#G18 /NoT=Ⱦ15:ӱT/K/Ӫ +њNC uc {w:Ҏ?j?Y,W`uPd3g1;PԩYuc2(#3g1Y~ԪHԛĶ3ExֺQ(BoTO)֎rgt̾472Yio#AM-xXX]c϶י,P|zimǎvұn@!U#D+FJX cmfbR 6c:YjP_ccZ_jht/tv!ô8VuӾ?u:s+yD/AprƱq6H *َ?FFF7"X 6:aniaCl Ps>WODla}yVF#:m //=i5aʌ=i,6R-KtA~:jw kh[!ÿ_/Yؾ n_+]߰{%w yDk }JdѨ_v^c&yޱ잇#"c\ ]öav:!YRJ4Iձ Qb0R.VF^^K''h;pT͛wcn3{;F$ҷa7%N%5^*"Rh+6Ƽ^ߒ744}1-u[BK8nYͽeK-;yM AMVP JRGGoɕz&gΎ _jj`Dc F؂s<gPȟyZڏ}GDO`I}O(,eXi;| 175P4:S8Waq8քp&h#5I~A!Ҵg WcP(76<5v˷tO7[nܿKZ`9&pbs9a$K-k)Rj L4 Nʊ1t/(OcGo>\ioGDžvQ%$̃*@4'}"*/1! %98'( IUpRԆ@O航TT!xf~;kc$kW!kg~}33?fS6e|US@yXtiTKhEUǘÉw.^|@6`8E1&el>בi,9'l 0hըP]j2TjM(K":Uǘ. _mfT1r'6bwuxjN&ːX=/Pl>sR9Z9u3Vv3cSFg^_ !FteWd $]tuĢD,2ˑg,haΘ ̬1Y<j"ec$Ơ,X06jdTˀ3薵gLJ+;&jl♰ X?CGXXd d:^Of}ЋY![?&0tTc_VJa>,v a]/c@Y/*vd0U}ЬA/ʈa,Ӈ_ҝ+27cX1yaqf"CYfYddbI؆2"WDb J`!6(AVck;{K5Kc"rV~dt2 ʘ|TٗbkAEX"FREa01{K!TJ221UlX1׳>x<\ffc2&Ͻ3X)1cݥ} c"*2qƘ6`llJ^2&3݌#aa'uu1KA1YC#SA>$1JΘƾ⊷O[$L@U1 ؎I};l V(1ΘVlHIZ OoL">{#{,Px7{۝-Eoi w[-d hrJ;ڋ`x@=\zgS@rDqƴ2iq:6;C]Kg-iG,CyoŘsGfZ(` !x m`log5 G\PM3ʘl;l,76 6jc jc- I6jME1F9\|tdw+GgL+c5YddNEz1WFcJ#N".#+z13Xc "d@Y1/ iŘ JodɈbP^NuёݭQJgD\C2k3V:1[ @ԋb]q5c:@ ^)G>pޚnbcV|vQWS +X bn'gunb@Ɯ "A(z@B![3Z ~Fs>XAƢ5dtC.w>Z)d tcb[8ёݭQ؟cA&h5PCƮB/^Ds 36}Lɜ:L8d.<-d!1(")1xk?PnR&үUXheͩh͘ 0;ӝbtIAUOM̉b>|tv/Z Mێ.~"_ؤfԐk1s2>`cD)\*Q" XtE"952VC'C+5&.3RdxZ[]Z[=% [@Wʐ&QH.510t_kWxdn/e` G?' ƞ*m kGV0 x=yڱ)xNeb'Z&_e$<G#s'k&q>.A3*!XCѡ猙^;tڍ1'ۉ1fz9}G0J1zH,NY 'o*{z%xƶN ޹p +dpdIcnv-;e҆^iem}S16Vc7c7zc+Y^\3gL#c/W d8cٌ},YTp s2$sxlulZK&^21VXoŷuB0H1m' 1U7gGazwّSTKɇ9<,ebtffĭC'ķY ՖI*e-f̈[Xp6 cca)'BJWy>v_VUG7A -4ºև;2`F9cFQacfc_gݠ_";sgX5ϊoՑq = bZ{'W XXC(\{PRŪGͅFfl?N@&2Xb&4scM@g19r<ŠBϠQ 9#%baYl=0"[XP/3L[.>Mŕөm{~r=Xd1Alk*7q(_;uHVspY$s0c1M{1lP*.ۯ)WYsESKCL Y 1EIqt1[- l˥j&fXcTǕ&tk斂1(32B+ lL bEƔeh9cí|늉m SJ%:q ]YPqʘ 8}.c8P1BM|>VcAtCm&32|lPLd0U$1jc'_blg܌st0 hE%?==ˊ0f !dU c&<ln)kF֏bcS~jcm ('dcTӱg@ƶ8cٌ"]00E} FԛI̖V]U1HE[[-d -nƾW1h[ <-XTL3#R9fR_ţ1VLچP r`nr5`j)<;l,76k=c (k]!E=ub Duq<[ (YeI:D۬LRZRf14jcTĦ4`%@4ԕ혆?V&( ֠F;`M}S={ w.?7{;g^;qcyۿhOivR0lSNd"1qXٚS&2A2cٳfNRƈ7fDKo9)corPVG#b囩ߦgd b[c"7 tLm!`11Ǫӹb2 cgEt$ bgB|1r[CqVɗ?$M}Ƭ]skWLzI sY0{N1jLT09CJJ1 Ɔ(}-I-/gɁ[h|# *3Bť P؜Α1zJ NX_l~uLz;i d2zC,FRcrk,ddR  b[+3Ę[RL0Ld6k>n6I̛Pq):b`1Zo3fW>gXO1 cZSP j^Sbl+@0) ,C޹"Ԝk3I)ڄ *-2H :]1"(ER__4#z;}Ni*+ZGUDX1(8cUeɶC*A+Y3f1R}=t;Ғ̄")14y?#eͮ(\2VUV`/D,zG" c+Lh A,VUK5AanaSV}{a111"+bLϠ:e`=ń5Hr! %@ RIE.H&QQp%rI"yF[Wg j'Plm""h1鶟W㴊1p$`;aH/jz}ųbSdM 2*+7TYYF8v6ةCU~a<2`vsL@.Mbiac+6dt]` j'յ;Mh3x_+33yg7z 7X8E{_Eqnzj(uV{\=H3 `le'bcۍWl6Jg`=E\n"Res'հJ8cjƊ cǑWH5#?zͷeKKp O1lH貳@gL}" }XOq1j)iٰN1l}4z|Y0:YXzu+ԕ^ƲByϘӳhMf,$o^SWmd)?Cqr]㵕MQ1U4g,|ĕ1&T.\}V1XK!")z-7X-&KSME14@L[SSA9L6'LH鏉 F #d 0vY:[!cڇg,R(mH.'^Aj_)]1W^w f 5Fo:3fƨAWF MdaV䰖ˆy6l ` fE'@X=n6‚оVN1c^я5BFd1ђqlL#cÊ<6p#"dX`'}^~ɳϟ-ٺL38X`'}NC:Mڷ+Խ%Z`,:r*Q 4c+c2&fX1񞐥JAel峗M.a>n7lg=8A4! wJil yL>J7dJWBr׹N!K$^<{?L=ys8HM'g\ekߔj~T[xP*K}7M˄|c Dw޴\qYƼ?Bc _0y 0Ew:wpȩc {V5c:>g.:~n?xx&VYib]&@NMiزmNZa̹;@cOƞ<%ǤHXJmsRzjnsar,DȂ͍Yz39}iB` C,4.S3bN4+}#NɈ(g,؉XAkGdM4j4;`:3HA{Z*/cv#A1ߘI|ܩt 56Eړ{ Q3E⌙dLO5~fL|sh(s fc $:ӧѻby ײOH1s}NfL|y)8#zcɩ6eDK2Fs'X#Θ9>VEt Ì·K>Mh J=;䂰KK /z.C{n/yWn23 ``8c{O4ytDtMDLe)%ll5!,ޅUV*6Ø+Rd;N#m dFj PEw^!Lc{dfvkuة1F?hlDQ4y&IB9%[{)jBv!c&㤩^aZ}BMf_[*DBX&!]1BM-XelϠ\--X' lk a؅1fzm1WLNE(*Y{HјmASgf([RAᥦNR\]f<5d7 -^A)'yL,%XO J3c;Mn~ <XnjBvaܗI{W'FTCR 06R!=413B LM,rKV° Ca 4S|XC[_ xruU_$=كk]MP#HɅ4\5ej45uK,dm5! 0T朗TE1|QOp覂+KGDC"bLd%sI;v1h23{:Ue+SN'|m;Jcg,jq@g,jq@g,]%WII0j *^>D3?~r&S忝Y*ߣQi4N V}ˇ5i觫aLL;8'}x3ԙw,ʫvQ#Kr@ƴ6y WǔC;6;%ΌDbU1}< 1$%)/mI %+Zb$ LI_]?dG(lH|K G{/W:_ciz=Xݕ4߱X!8.6h~9kwFٔceL7 ]]' bQ埿N챐M <@ ^~J^N-C/R??'$r ӧ}؄BS2U ʱƎ\r~S`|~,^rBEc[pc!@cY0'_Ih`6(k2yjM(:F7uث'4~s0f '3cVд&q֟k(v:V'%3 #鸗&])aRӟ& ͽ7GT UOp_x {O/x{Pl/XA[rVڱT #g\xa,KdݮПutPu2&gi-t3.צ;?yWt?b3W?OS&X~8&u옅i`,])a$̠W):c JZ(W|W/ۉ8qsw!bX0>_~-e3Y8VɰX[*\@iޕLHxпN4w]I b;޾LOuB(ӯXV+cNScӱ_WW7?_W܅xc,^1.c 奒X(®czڎ8عÍSdcǃ~K՗]‚ V쨧c'D)ǤBZǮȸ=>K־W# 2е^}$r0~O>j1X84L5Lny|vˇqıP-`F X46N:1oܪc^%m4vwqpLƆ\1/ϳl[qTildZճ'*nVdj҂ck*AkJ%;x=%g$ÿL'J>MǼ3~Fމ`8 㤰@~ dh8F2֏8ـ]qUCukFOvձy'C"js#u-Y9smbDs%B蘍cƳ娷<xO c+UނvK."L_?I&Q'+&*D[>Nt4Sutp\PgDŽnlLQ=ZLǙDvUď9c=Ҽ0'oԝ # @rc! EzKddb&H (6;@tL8fRh.:&Zcc҈rou:VdRLSgb|%PD4@^w ݦ]gh.T "~tl4>%o i˼y8@ZIz l+ǴHF'a IM,H`㤻!9 [lJ[m1F{h6jt,c:: q"VXhq6ݦM"Q EˆcāDӷ G?(^x R3(Ʊ`y -'ݍX0[EcPgDŽnlLQ=VE'Sv,:F3+oH,z *B?q̸$[7\/3LMCؚ ǠZl12Ij1 [$T1F{c:^> /1q"+ҌФ2݆6rbpQi`m~&%\za&9m _p 9,ãw Wnȝ|t7O0E.Ǹ8&tcc҈roul?+Bxr.K ckf Um\|-pUЍ ۈoul;RsS^xc>mfMEgyl1{ Ryi#8d"k`.9DSf(a9.kb))clB=t-"d/ $OfTIyacF)$5V_uo:þZrR{e;hwa9esG>֦ۘ5NИF yt~zkИhTƼ 14&CchL,486l14D5Cchsh ql ׊h m 14Иch̃ƺW3Oɂ4eyhL4|?so_yhL4scbq>|׿מ(i"~p"ŝ9r)1YXύLqt~3OɂhlSDc>";_Q_铤84ژuD78\ⳝF~N/[?T@~{Uzol kF7[PDpĀ=kp^D@c ~c {g&ۧԿ&4ݩk1o: D7~?v@e) D~?6f\:˵G)ΒH4vv/R(5CWc D 'e1  Bcb1Xh @,4 x46,6fUc=ޙ )WƯ!QnTy̐E#K2?öFXq1'zI1>̭ n9\ =)i&:k 5-,,v)=YKt`OnIt ?" ƲB"_yZuQ`멱5h7S]4dgʈD:WRr¸Pc+1ս1{-ƔMctx,C$||0vsW}k7lhLi4H,ɲi]Z1^JSB% ][>I|8C*ҪYF )ͫbYL:7U4kčS71:;a,T-ƙݘ}LcD#ݨ/m_u63dfU5#čS7өA͹r gl7gGrimfݵU4YEc Xc ickrk,BF=%4OKI1~5ƉAj*Ͱg3>ϵU|׊w>i&aǽL}K 9XaC.KIO+CDhn%(F% WrfyǼj4M43߷·gާ7ceCDҤ)ucĻ|H#A>tvi<+O7ֱ⌓~:{ﷀqG"<1Ycd$RAdRK. U>Sb]Je'.ciz2ǪG;N ':&5qMz&g~~gFC;=<]{:q q{*cq]=*TDd3Ni2 :flԠc:&t S(0wLcVv ytnlԠc:&t CĂcX1t  :#t,Ztlo9^m5_Q%0!_yt,Q/KJ_N-MSc):\.(㌩g$ &g8GQUx?=lƱhJ":Dc}'j_;eW4'OCx"1uPW\8}|Es1t'B{2LH|Es1t'{f F)y=昂Zǔ+:^xF)y:!G[EG[W4%O)i0:Ɲc c+bc"_;x)Z1@iR:Ɲ:4cqx[+u)cG׋fxqw[w~e+_tWt+#=b''3X>q7Rt}ǶcZ1n{+S(jK|ɰX9EǸt c.FX )ɂ-ǒEE |KҰȟQxYADzc@k 8\c[# paxRSJw7O i#֕؅o|;?&kԱl፻nlm9.(վExX)5|: t R"dŐc2cX1t  :cbA1tL,E{7C$c G̡U_cm!-2ЖcA$#dõtfyR`l9S LWHy':&3v"ffX8b0d;n6%d5*gEZQf:sp43ѩ _$!f1ǰICY."L#~X3tLD&HK ͖B*u b%b;VY&s_*uLX<=9K4Zir}Ǫn˸ DOg:^hRѶ嗦Ϸ#{k >,mc n7\.}:qJs%39M'oCWbõZf?5:f:6%K֌ZX}2~[RKT+gy TaT9Ū.sX4bNv?& 6 '98 W<58VZ[!J4>c@ѻ\#fHkr) WފltgTm}ݢJrŌ;KO5ZQ1u*ccTEql9Q,91vcl_юezg$ ;bqIł^r,=k]Mucu s2b_vbNbQG9ƮpvL, q۬z;XU U~p-_I5ł gse,= :1CÜ`^k7LcV0W,1: v YcӫR9|~9tla@ :0tI֡cC1c:tsv?GMp^*Ǟc ğ xggw8m;'xtAb ^B_l v<{?K蘀 sCc—p,!NCR:8IK'=؍,g`DZfA@Nc—eq*YA8N=ɖ ТHA)`煀 \Xǒ %!e_@.,cv= * KCC: ܒ²8&p`8 gJA’9&U+ 4ױ [htN:yXIEfc*T6Ca=Ի젟F>)aJM۬?|hNLJüx\zfhQû~YXV:99igdTSQ554ƿǘa`^L<4xtppolj[lVaPΒx{xv|yڵǐŷ´շ{VEtagMǺcI>(QnPCfRbT6g6NYѐߴ҈pYӠ٩qmYNNv׭tħ桙l_ڌυd1}exh-+mR)s3GRw>P xt?q*@sէYi,xhO`n۾YVB{?u$iPU_tRNS@fIDATxmlSWZ3sVI(#/hw"ȫ!9*@qAݶ@"EjJP` -)`BKQ kJ/J-ꇎ*jVy/~ᆡy99ڹcW$. ak-{Fw`5cJ^9ZR 2Ώ *d)+4dF惑h|xS 3K.AG|$A1yuoF}!ᾌ۝W&Ǿ+ZNV]bii7$NHq<|Mnݧ4H7۲k|$8LxH7#Lr) -DɽxLW/B3x=c za+#(bL܌L$2HM(>2+L( qڼMVʼfϔH@7En3)%zNv Z vfl槳(fekⱅSXGe?z:w鱇<b#qu$eXS]Q?P̜d'o}eq)Hjӕ2M 'tbM<` +W;gkX=Yn܆+"E6Mݼ?yswv{F8&$m'6N *ƩGGc-/>'|jX\Lþ0Px[8TP\w? ~l X!|,87•UVVIG `M ; Aރ\8'$}(0`܆(u\c(V[d_|LsL5,.&aNLΛh")AНǼ(<Ml c[6nR 60֬IɃ;B(}eRBPB?sE1ihW"*6FVy+;Y&s=#<]#؅Zx1du+H$Dp=[,=Ed@Ť-̮D:Ux k=/8$j=A"wJ$-3~("~#ARW*=:z#q`ƚ5Iq`z0(F_ݵ'Fe#]ܒɳO~|ݻu Ɑc+)Ѓuk$uBA!2)QoxˢmZg[&Y^O^ vY톭 ήK.nd=&j7qv]c AJ`ƚ5I{ y~bPPLJ*o[(޲(iۦؖvlOZڻOX1D3GSSk疗qf9ishc곽x#|fz(~es+ՁxA`ǟ''D[woJtT UW I _e=mTmlETs1 Lǣsze*;}t*D,88ZGLDy?]9׽rv}^ib[Z~h7tYnDF# *b JM<&,gdcx̩ˡ ?#ʙ=zM8Y$t /O^}o_=͋KKɽ֮RXiOվ3~ͭ6"&}Uc9x=Ojjj>󃹒O"Sщt-C!5ylh ˹'&o[CYT, ۳yEytQ$1 *bX'1!ݺ5 <6o۷ocONd498Ay baNB.-S7p2P'Ǟl|ORЈX&i7+vPʤίF龅-mѶL/؊w@D ͰQUcJ?o?< ocT Ԍn{8/Z;#M]vmrbw\.7WCYT,5gA..-)C&Rbe9,3]{# fr΍}l_]5CS?nFrOl56~EIc~<62ûroׯZCYT,e..$cP?b峷tܹca;؈68*XA8(]8~Zhxx/1$X*#=πe/0{kV _ほ^7' Eǣx\ #3E> cwyWuR6 gQ} wɿ?&?.&,_i>n=A "!#$sx^mC.sY% Z,B+]04HHƄ>M6r݇>}S_Oj *G[}͡ڪ +Ɯ1d~ɟDd8RH0o{#F3v^ޫ0`////pj<,'LJ1~ǡaW=?|b>wEdH1q"'ň*![-.0IV?zS=N'lPÇ? c{O?DP'Xoog'glG 5yB8yhYK3ؗ,;(1ksv[] sk|Wޑ [ՠlce$p fRd L~Üdq138߇-[MT q"G7HGxD|u ̰Efzݘ1!jkߡs˵EoX%)y3LY^\ yxjRW  ઩Y eZ_֠/SWjVSqc"g_X>x 4ymhn… /߄,9:gkp}(b8{pv!yy.0rmdXQcvc!q{R?RC#c[i]t@ܕN'OQn~,ߛE3/bψ~waKlqĽpBED8GTn8Ȉ"9'$ÄDmA1_}ݏrv0 9ȱ'p%|_p,+$1͜<~ϣףVFwe)\): C+YMDC8l K/# L彼d{aNš?VGAOpoɂzp,\C$9KmT:-=;"$ ᘰQGXXEU #Fojj<868/ 02VQ6>˘r򟶠8Vϳj!x"şg»td?v9nw^qXn10B-s(Z7sct)8z/B K`HT[_GBpx&~+L4} \b?CGB ۅ^!28V &ǏR+E5L1@3:<<< C|d~Dt|||?M P(@w Z0$xC<ԟ8,7k86 RN\?0wPK`bbo' ѡFp v!dnOn,y:[KMD(=#SH$c:[8q^b@ze\ Xf3x"ͰdTĤ3ulݘBwLgKl㞙r1>CxWPD$ik 1MLg#夕dKP#Qp̮c:::J;iΧi HkBwLhmFZڌ61im>cGk3|tԏf莩HkS?Z;~6#GwLhmFZO|Nk-8]uW4sųBh5WJq04ύYTX]U3*ofG;Jb;Ex$Ŋ!D9&/&;q W1K\% pd_m;x%ĊP1{Vi8ɌpD5C验FIj>(~`~;Q9n(DIA\RT,K )$DM$ݳs N4 MX18smg;b)H,I\0o؞"eSP^~t|Gv)vB±(89d<+& ݱ*R'z/a0U^lc XVbn(C\˂rܐQ fcۋmXb%;V+@'HTc|FvM4-q)F9$p]9 jGM1ְ m/Ʊ &ٯCd8_11h\fkg>x>a3tbM10C2YM?Q1%fl~W$4ĊYcɑr7 ˲źo_ӻ F<ܚmص%3pd|xs3uw{K,Ÿ ObE/RKU-1Km[ϟG+p=tu?l=C*I:}:T~VJ&DZ^tup]}3vܘr 6 iSFq/Yv6 ۆ cUݱMsɳ_ Xg\c_/Qkߝ`- ͋sdJp@ hq5pUlu;g%X<tjyoȉ6CCB&@@!?AV%ye\iH_ǶԱDIFw!+5ȳעu"{0vUu主ɓe6$ӆU8Iy݋^R ˆI\ gƇ}˳K2J%q` ?h2'@! Vt< 5?5C,kc3$;fOfaWoWa 1kSw@+V-L]̟`@a2 ;`ŀJcR:UIyZcډBpZc]y-Ięa96v=l?mc~"K$⒡ *YXǰgdƲXӬȴrۇVF!nww )V.~ cG3PQb1ֱHW 1ƒw]c_KȂШc*A2B  բ5+Y.)~witgsS!P8Zo⨔t,9h),+2Wd_yEUcxC4oq䮗<6]lyuL1莵_*ɢE-kX89+8ԛ {BfCa!$fZ3Y)U d{@3fm*|]Ρ4ac+"ƍ,p>qܰ =pac;oE[1%## Q ) Yh eq;֞T g2@KIYG]п籩]FKvYddAhT1TŲ+ #8 #;,A*@w̱+ Y0= ѱnT["p,`سg.^ 1$|ÐYm q!ihU^߻tv:f^#硤c/+%Tǎg1ظ*] Y\ORTR(߯`U$fcG`hEfaآcwEw>ٯ} WTFaa"[ dpM0ѽ#;gFEÃ^a CCyźcۋsbW D.vO"389 <4)RaPcuݱNLcA+NbP:|NKTmbVceɲ陙Uq,UXZ] O6xY(x{U*F0'=:H}snV;PϥdG2"׳ئf;ǝRz 8Q*XsSr^k5~2ru4H:VcHkX;zy`[Wtj/3u4#qKSNw ߜqrLcc]|:x.G] $*H'ͱpfyQxu>ա 8\u,E1[UZZM1p,.Zqk8Jqu#% ձx)gR|Ҏ_ϱf*w $K:!] G]*,ٿ~Ǥ]:rX8> wMyURl;&˦Be1 ǪǴ Uk۱ W5,1g'8#R;F-;ҹjcGGiGѴ!XcONp,|- @Єi]AנI}eccX+%#*L Z6w?MeRL"ihu&:60pDy b|d3#(8(\c'&1 'Z]{v.XSXgZܳTg#C6'eǖ`uFWP *%1~5-sH8ӟ$(u2eK3ϒJ9RIH㫮6Ld}&glbhV gB2XDcᩍǗ1XqLDV1\bVʱl(` [<>V09i6O:V?kXL6i-C1nc'F#|1Ox/# v@68 bmhڸy s94F;;>>}yP39"1[|iX11bLV+&Hllq051@9h*k\r*Es 9opyәg{U9'&&?^;"}(*gDl蓞75!kE3!wb'|(7D*EXk#i>%f^6 U>"bw5Raz#Nq˄6sg1޻uJQGimmN8jI1_?a;A@lXy Y"7g#,.JsnŽ]d[y42W1z>|pY(w(`0D|ihqRs++1pN}8srAL2a|l!;@&}Sbk>^7v8֌[RٴQ웏Ia0c(px@F9"oΜͭX1 g_+An^U|C?y ;X2͂ $C&^ ;Ͼdjg:<žy7â++(Mהl^+FSecz LPnzpWLc|t]aGsIq&@r#!I-ˇ;E}z55>Vqc l4By rtӱu<i>7WdOuE A7Bu@O*EBwm>4m-jëX'?}mp[1| M5st5pQҏ Da99? ]>4q]!iR6 n+nzhl h$:#""¤)8 +mj4&GRkɴSLƱeLcSlUR1k; tN:"esc1 $FWб1Űqt*4D[%mcS1[ȶ} ;rѹ,yaΜ?q! q|x{ ǫHȱ%hI[l+Oc964X9SfQ;c:..Ʊ 8Ǡ "x. 'f滻gNnÙn'Gqr- 8<Ş&ӱtDzNIFG1 J"lkݱ,nu}9䈕K n.~ J@o9ޞbsEUF˵X2{46QsGƔ'Mm@i),0|ap?&KV)XbciR# ]idW X4===sݳb ?nW1Ƕd4ReQj)zط (d)Onl"9Iccѧ-W^޵ .KS.0ұsz\J]Xfn}$*.E5ӿ~WCᔣB"ڃ`"ql?2wyn[6ͥ118>؁h^Ovkavv!0Kk1T'H"Opycts춳{ȬOu/oAı1V0Y ;}>1̿gqZsLoԥER{t?vL]a; WAc]•}1hPb1X1OD]WDNJ0n1u vykɱg X-\Ta<򘐳fqCn;> q;np %vK9V(:֬"v {pj[}yr 7sz<%^v/rISӓYR\{& K%V,18c,XaMVZW!oqvI7݃{ ,{\~DZfݳkʱU7X n-(Kc$c@8G|g/&,e5XɈ9Rgc*Oi9Z稈E'j7㵔)]ɱ}aygnnفJ,4Wް_1}wo ,v~6,cBzt@.eFsH;γI 3xJ = 5ZM&V<Ŝ+`ڕ~|(YαDcWИSWqs}1r&]Kh1<-mp[U5>.Q<!ݲh 䱪*{`A]{zFki$n*IҢ/`}c~~4@bJx?DL e ڒxW_vw޻p~+OOKڽ𵍖OFS=L0Gp/N jz!Z==/7n1d~xK%&C6\jGK .;koypa@ <˸Vk+c]ܷ_`qv x}  ֏^ͼ &_ϔcmasQc_ Zm~8WWrgg]7h|>tAɱFbiFM ΝB)lhOب qD`Ql__pT,1ǀ!=L `-Þaxd?d <A/t/9(9 ek!\J|*pLWɱfc_cVؕ3Fev <|6%uac;ucCUK.7+goe^WQp &04; §~@U E. r-[0%nxgM$&!)|nx}'2 ~ {N7e}~Iɝ_|U~A/8_{{}GNXϑ̗w% uX;?_cUHr[-GU-B% 7@4}LtᦦBcc銀Z.,Cӧe,3l[W0;GTyiy@G%B}S ̭.D ZRъb M׆uvl7tk _Qw7tWO䱏x) • .+>ֻ܎NTPY9EnTM,s5{ 15R7ba0t:.O#ٰoDv#SuB~m/D,l[1}Sc=oĺTq`[tR(O F[XU9] xyn$` l!* eP$X+4\+Gwl~E^N;̫=?g •~n"6=ͱvl:&y iIBe(+E,&\`k.ƋIkt^L.fk& q}l$ELo6|ȝ=ޛhޕQmbxz݃A)cς#kα35gjBm&gcsdr`4<1x2Țؚd -H*~0ob?bydfrReRrS/?~R(Ԛ'evm9CH{,4@4e@*\xeYةrDo17K3=ʊ,Ùw2Fg)ؾKhf<16a0 6a`9چ[wleQmOOX(+VVnb/K>OQYr?9tUE{,  c?86. ߱k`O)OKQYws(ى:Q5tlݱG?>Uƫޗ.]oϠ:z{aBc%n-.96p;c#))B[/z;KJ)kLV@,ݢ. }I|{ͿXt nh3dk8.:ZX2=@?*xd[᱑Xǖ`uFWP0K0Nٱ w IC1TP(y VOl\91UgrzJ1>?{gD7ۂҥSR}IM9uM= #K"6m*=u:.Dfc"fMTcB;Ͳx6vë1X+#aCfQmjx+FxM0Tj^F Sw!i7>ʊc2εvoJ|гQY v.sڭen8Uw]`YxS4RyVN`c"р=~]`" 1(5++2ʬ(:QNTcx؆2vbX$Ci+U*GxQ /V>/O8n.hܐwT_3q,њ}atAXUIB*}ip,L 6N 1dbq Kvaһ8nDJ/*-fq`XMfl m;6Kk p!lht M8-7>5|T|Pgljäp0:M]qSgw!1^;u%hƒVٶՕY=V4Y=p0by"]=o;qL(~ɛlJul 9slr`sRp좋r}w,S7ٔX9\[{9WXoÂ>m`hV;;c>OGXE@T`39NVf7ٔ蘊vLެe=[c|zipXLt)0[XccncEX?9ڐq Y_g &ܱ.^+"s˱G8m;[ ;~4|-xhK cEz{ud,1D:-Pq믭I|nx~Dy GރwGwo^|VwXCXR}lNwI~k)øO|43~SPZx` Iߏ{{Nױ 3OQ^h>tC״cȷ1X]0csssЄl܎]ڶ"n͐fN=ܡ㵈vYΠO+\}ODdHo,~?|t"'}ÊXyh̵TZT5Σԡ)m`Nyj7'>MKs )VNrȜz0MRQԱȕ/Ε]c8Ix@f65ܩH]،? v ~Y Š :aؙcDrұNb}Ev"ii^LT ϏeRcn$\c&};#(Ŏ Y?CXf286]K^iߺ;6qt@lv̭\Tl \ v9#|L\pu;b;On[Y FǴ}ÁϏ(LԮQ 6O3bن0.y1}/(|wMTIw $٬q,x78K-{\~3T 6? ?/^wwq4}oW݈7c= ?Y y\83-u.*@`uA!H-vAc(6+u|ث7o@Wo71+F<6f1ر-'$nQc"̦}~,P. (Ftlf[bKo!g7_(*泄ի7p e1PLc[nQc5[,t's'MZM֎@1cwxZ!Ɗ:bQ߼|p~Tc 86Iv R*ɱƒ@9F ϧX}א- sA8|Q3 Ot+~86[ Ǣ\.}>ة n?V؟Ǘed86=\ ǻŽI:nck΅6M!;aUv+)Q¡Oj0_⽈UUUyh4XjooW41c ]D@c1ԋ=;v^u$96fcX.9={Pł#Ubbya@KJNX c- ;3cps6cT|As7os4n1A^Ͽ6}`D.X6U ەw ql2WLz9{Gl{?@>\MI\*{Vkhݖ ʺ;s]c9c ;Nau><3gvM4;ξ{Ɗ`sd$O0(Xnԃ.کߡV:;%#'&#gvl6ѱ׃nKʧ2ɎN9srnā ;6QsLj=T@[&b#(qͅ8cb 9"h2PVZzy |;"cTs}56kc8Gf8c5d]BdEDDc |CN`X1)IwZ/1Z1 c~1ܖ&NKpLo2ɤ@HGNyi˗?:peDŰcm}O{O6 |&;QJ5(F8fD"<1H xN8pSḺZͥ[ڄx@p좋r}#ݱw[iw鸠Pee26c |ǼKtX;8-ǎa06+FvaX6Ecf.-b^E atzd>2\G3$1M ٌ5D۪i3N8|+HoJT F[ۖS+(Ø[owl X3w*u[zqs{jѹXP7 9.mk`qKwyu 8!7cGVؤhM<#J睶CYMRahBӮ{JD0,L+G5;Fj>9ԇolrM$J@8#]Tx5;fbԿ6q[FhrbbMc\6 q^차oi_3?L\=~v8_Wwy3,u9k֕[3f$"9i^"'Rl#8~9~4|-x(ѥNHc=6cu q,XN'Q/P _snc T}%H1<1znCϟxnXmc0zY,tLotkXEjrT7Xms ⠈c+u=GG8Ϟ?('$*2mET(TBb2#TBt7cr@q޽N5 01\\c"c[Hؗc>C:cV>HjDܹT[KdplT1cCOyTwNp&r8{@"?fw}2^Wi49bmɱ8q1ƱO?4?sC>}E;qh D9IXhn|󕖺;a$YiǢb*ՅR8i1XW[]|/~FqǮytl8>EX 96?36L?W P)_yT8&Ӄ8ck8&¬?yvoGﯭ86%ST@9v ǀ0!(~8+ !c ?yL?Jlp@\ou8$F9y.Y4 ;=B=ZG a2}}W %u3s%E-cV !czDm}̤ұys[ yc@r-m7̚4>'xrmeemrJzt[Zzn阑-%u {"cŬKEň,^^?a 6A G[&/Oc\@KNu1ӸÎa.UY,uhQc~5[1w[u-1^qN0?p xi0aLw.1#}\s ?Fv pNjι~|'cFK.Ȍm11v=2&c.1l-m ZDv} mߠX e Y8Sơm,ñ 6ն6k I;Ne:ڮ<y` v !c1k4XWF5k!8FL;;OCr OWX+w11)bmr' ]x_;7l7l6ut4 B/L܎yHu01 S,;[X☰cƬb]eۓCh3LEiΎf8^)tEU;Vڤ;Ř 9c4L6u3bѱVhSbJeΤ` trPl1&Uo(!c^50c%c9&;xP,1j$WϕϱHp(єرؔ,yT]15汶@ǀIXdǢcwll1 >|Aӆ?=iA1;UօkcWӱW[Cȱ$r,cTP=fvXeD|]cVN;i;FC0U>l c:cR8yC"njcVJbin2$nNsbS)y'}~"^C)G"B8yHcnK!ch~c+tLy߱_NE6)b(#cdrl_=.jp'UB;6lWss {R8#cet~1LSS&*(|oyH)1_o|35y >xۗc8%y͜M<= דc?!Ŧ;;o(${ۗ?Sq`?i}Xxܾw~w~<01-c S7G/5f2 >t1t׾f- 4 8.o+x@ [2x1 1L@L ;659?1Ywsjj f~[}(<"Xu(2v86;?c/e̼8=5K 1-?S9!cE]cӣ*R5NOMSAG7llי3zfDm11Y 54;UBƟrxLVP6 K|%y=Zu,)n$.dB)\$k2,Lgz#4RFsBhDD1Ob*XYa/8v5yd$VVvھZ]2iȢaӸ!lM&‚1 -lI/3URNAE;lZU/yǎt |XGG[%9l}t+e0c$p[sfo t\qR4m6A8爻..r,a*++ںq0}#2;aX2i*,v + )fh(t[$,^仡9κ!H_X9OD0Yd;4DJaX4|?)!!E==ZҮ0r۱qիQS5I;\0hY v(I)g[%BeuNJR66}]SCCWU=7{ڃN$;*8~:3M1)ܖ<ϙg1/-}|PpZ'gLpX.ms4+C?l NǠ yRJ*2O 23+33.}ZNN/camN-C;o2f2VReSEaOˠ.BJ8̈dd2GTm4ؠnd(H /5 &c&c)Uz2F[[2N.A1 QCU˛(ET1tdd2X{盰!4cI18t1FS`m S HddBΘ0C=()X{&gbQaL"+15ll;$XЄP($Š1Y$QCƻ '` S H DZ}Xɘ+r6JŔA'.8a/cmM;YB0I&aY@`2f2z:,AC :%̟:TCP}I)ՓU͡O[wub`L10lǏ_G bؗsOL_QۗX6dcЉS'#IS:d3臇xSW6)0W2g:oA(Nz|Lð3 -7+Z1Ì0F!t0zXGaLX2b,r0fiGͭ[Vm`TX<Ƣ\mstu8Yulf-mV,D=daj҄!X0I{0 T`ez g`E`L6 QCAZ}߾_G5ރS A ĭwg4#޵#H}s4Vcq =A@L7c̈6#4EhS c `چ[. S HPc|Asuhr' )V H԰?=3ŕ,kjŷ%h[Q'cimEBؑ#Qzz&Db 8B c:4̌%L,b HwW j H1(2$;b[uhCV c2bG$IX5Nhڂ[.N)$j(`G,qx؆[.pr~΀ahN nl&k%#r+[~E YG1.< )bs\ M6#%;5 : 0Y8Eha36R;9;]nj5Ud}kS#q@u?nj;|+7Z[: ˅Mups@ð;.$Νa'18Tc,XP1Vccj2uꆪ;eL] }Ș!:ۊ !h[Ѧ7uH=`1B8Å+M8ŇbA?cݰZ9Iaxs@`2VjefV /le2`11@F:=K1Alc^FJ"{ fQQ7D `^eap9 X4VEcJᅉ1)>c`PDƹ/-.vKcamhz^x@ N9U貆1jQĀ8&G1NC2L1w +t&t6s3V+&GD[p`:]5@O@^lXP-M0Ɖrh^xYD',2+c֣aE7cRxab 7!` @65 ˜%T:u1淇]Q;g>o}[˜%ØƸ>-]2D:TJasV{Z)1Ȁ I11r |r A 45X?. t7 sfV /LgF3b@XUc sHl6sb*1uZmZYu T! KX^c8 Hu3FZ!NͧBդh2?%}5`5Ӓ;wPg  c-(HFFb(b,/xFMxUsI}Yxe1v1_fV /Ld(34E1]cQ0 L-bE1uDֲ16@@>݁--M[ݒRo qĢM2֥˜g)1Zxy:t`+c' a$H$r )7.Ś-B$CEppBCܡ"DŘɘc׮Ȁcͻ`,G+/TH[1dp[ CH$"n0\n&B;D124^F̒ ֈ3dĘM? .}# Z +  #ta۩,/y5ϯ>=na~NʃrHcBZ[!~ey ʸ.Ua>,FgQ( v6]N3Ku r36ԥGJ/W5aK^kD Ɨj9α<#K'uHC&c؏&cEıYY-߾=L#RE"B]W`JLrHɑo!gs;;I gs1&Д`HE!r%Aߌ|q2Gdd$a{W]o8N$1v0ݗc?д{,Qn8[h q0F r˜D0=HhF"A̓(Rj@zh0cc2nj9aduv$dĬOB#͌qo+V1XqߏTڠɘٌ:X́d1X2b2fcb H@2VcR}uxx?؍H]3s[(c De1}$Nbty0L9}ʰI2bb`PIjKn7CyMJ"ܵm]*sv>+cZ'fG6hkEfXS Oy=+fw\e-M]\?zO/!c_Źs#l3vmoik %JICv."BHcBmV JlC+ҢR^JQ@(\J[ [ #6:hhlL?_sox7AmKf,?rfL>pKoDVMӑiL*rOy~,6'}ܽa^* 1ݡ]lB/cg<z1 6cL5q&pkubL(g 9E%%X_D Em=E"=P=}>eJ6Gb{3lC?N`韔hcf0e/! pف1sRq_&w?{jk ={m^* df~|#ʺҤɃwN\[G҃JtC26?eL?w$7{qF#%q&F|H-cPgSz] JERs3o_.o}aJ>>z4Lj#Iel&6q9-HK'0$WdlơϘ0,HnR 2FLF!`1hm L]JB8fDc%LR{wc6~WK1K}OMKEQ祂ؖS,UxŸOH6cy(3R}; 5py^*ɐ1ZRND\WnN@=c$>#ٌLK_龒X" ci|w- MƌsU2ylXS.|18Q@c!1A6˕qx&qfNc!D ͘IbcԅOR4^ S{}MѮ }d)^ |&= &?xq7n/&Ef %-C^ BդEJ1dul1u4/t%'MG]4ՊԩqxV8ѹ+o Ɛ[fx⇚\pV+C"1{71ٌ2XGsxqcp> ZQ:41./. Yhd-/U(E7W%8 ~ߛy!= %ٌ2XGxqtx#:_*M,uijqsV޴ DDJmnmqh+DCנE1$p], nlDyVOOxDieSM pq*oڌq!VJE2bL0u -癊1u4:ƎOx:ti"cxFb8Q#7m͌FX}ʘvF:YXTyvuƺv4(KdL&2"5Tys3wHXTnIg}kyYYQCS:sh$}ci;/mYEx d'5d;Je fOЈnSW Yv3Y]SƌR\*Zl6c'ov[|`#>V+6wEt9@)_GZO{~Vl ֹa^Uwt)|p[,Ad`رXv[mqu«]O u%qC%w #~`J^>^Qt7g[񻁮kHwg r0N7Ux< AwT .^1tR9O(Mhzml|Uy6 6cc>C)lKb3յxkn yxQ}ScKEܻ^〼"|y6 6cm2oIe`QQ`<ltMޕkn\cp EuI{w=%hzIgFa;yQz611vq`-[a ݽNa) %ދ4H=FގE5!-Yš癁A1ށ,C)lfc\ku\h]GkѦ}1t;:wwvԦF=窓·9- =ڽio^>/3b샤.|1lf cf_֬l^V,Oh DÍd߿6 Hh(jlЊAW|xp5uƕ] P*"Г,311FWҗ<-aKqB82lj=Ҩ)c^Ƥ-nXX*MK^&5SȘ"Th NRejq"Q`gjJ'F#,s5jR3<)x4RZ2VcoЉQZfgjE2N+W"ce5vL4өJ ۗBd4R&5Sht+i1Z#O18I^JI-5jR3hֳ&1/.X`͛Bd[€g؊s6? *RoK8b ]uⳘǔm 3Yp O!Rar_ks~ ۙKh^U&˙/.wKUPy[[|-ٻ6;9ק4bREwiC4<\)PǾ]j%|D%$|K#Nٵ^,|Q\b8L#W.>O:W+{wfwAY;w]j>.t^z$-D+y_cEv^S}/E2h,iY_*cD~yzlK|Nq(%g 7Oy=q]]Nɂ  Ok dѺ5vyNs`9yzHߟ×Jŏf*ᇫRA^q*t^RcsYH2.}~0& a똥{u% /kXit^-gO~C~Y/_/vs_g|bxa_*C*1z `0<9.L9aI9j<~0& c(?.ZWJ2Kc^ݥaak/Ճn}t PilI_?|׮ױ'U^tAb~EC)<0Mʩr llK%b3_UlT<>ŽƜ/u1X7VxƬ}3~o^ F"8s]ݗܓ]w} ֘ NLKϣ/1Ȁ1+ {1G/s[KR58Kł 1 1/կc_g}AB5fa^5Z||mưƜ҃FjlvkƜTn R58K{aYfطୱP4vE_?>|_* RAcZfطwz+R } w?tߧmXQ`4vu_*OV\_*&?1r'|dG;dc$Ԙ!#5H6>1C6FA1jl|Pcld?dc$Ԙ!#5H6>1C6FA1O4@8د{EmwC j p1]wC j p1]w1h$tDZ(X{Hbx38XLZ{l./11ʜ0NtSj!㦱zѣ G8QELqzj)jbRJUݢ8s2R&Zִ -^'Slՠ Voz1('3qVw4&&C1NvJ?dkL}+R MZNJ &$["6R?e*a=AUIzŸ́?h chB+rʇXcb2 1ND'=X3"4]v&e` |M4Zd/4KF9O=mCh:+r|h t(&Ӑ9nJ=d|5 M_PSP62})gh>tL!ئ&ʇfí>1̉pSj!.Rt>Lef0Zo!!^pL:+h6?fy6Л0iv=W>Ùb!2݋4dNT='Oqo߽V΅攝rC9Fic'iӢM4@3IZgu/ʚB&Fhi4W>Օ 3^lGAcb2mȜgмNrJ?dAO[*'o!ADiiM#0~ =$BȲ(9h)Hx+9szR"/ P$k/bŒ< !o0+jv cØ6a c01i0 cØ6a c0XvƸ0 cØ61mØ6a c0Ƴ"ƴa{ c01i0 cØ6a c01i0 cØ6a c01i0 cØ6a c01i0 cØ6a c01:ƚةkƚ5V1)}&+ԛ[˙.'Q_3S_|6pI4g5Wo0F cD0F cD0F cD0F cD0F c뽾ȗ0Y.yƼ c1˜ga̻0F cD0F cD0F cD0F cD0F cD0F`l40޻#8kզ<6>A'lJk4ijxpu:1h`~fV٪;ߣh}AgXax?ۗ,VճNlq 8o9ہW% "ߥ]|UGuqtoz0E{g*7یM]}`7ۥ]71G0 cØ6{]uXٌ%r]cK11]cI5fj) ߶?dׯTTX_Φm, k,˘K> v3L袛`܀1c8ѢF4*m?kν׮#+J4eEɕky:ֽtlRŹNǎkXnCM٫eu1Wc8rX1iG&UZfvDni#"ͼ WՆDqvP|N{5ܬx5cKp,IX1%ye4)fώ:4n6LvN:紭EحI׼#~m;p9Va_є4|AYb_}nTGQWuS"z|;)Th81c\q,VMA-{[m'eemnn)oȽh\f fK)p˼:s>K"=*JUиګгBN(ܛg AzZógvo:F 8U1-.ۮݭ҂MmDk.: U7eumؒBУn;4n?7+ᘐ☐>G~p}Iv3_)cQ+pG;<k~E%r8O_رk:xs~~AS,ƪfERRHXL }\W$mtwǂd~~K!pY`p]dpY`p]dpY`p]dpY`;&Xc8,Ilq1tL҄c'<&Z?7<&&q+M8z";:c}z]+Vp,vڵ|{04XnH"1b'{\&K=3+ʆrlP 8& ZifWñٱj՘) jгQCG+Oo49n~a]1Dv➼=!n7t}V5ٱñtl%A1Js|=T";fSFG:nM1Js(M8vfϣIEǘEǘEǘEǘEǘEv/e8 ػ8s;c从=݌f4±9ic"Úp,08.2cK1&c8V,: KcgI,ϒ `zֱcbewTu0z-8#ǼK"z6f1hڤ3'N@1eё}:p,ń+Ӕ٤cnk\\4<8#1)>VoJ4ORL5@{!j=rlTTXhǔdȓbёߧ~{;ʥR9b3qmcs<K1Qnz*z68+ґ+j>汔1Rl1v=(_tp=1]kǽ#\q c:O$"C`fO0N!XdXK<+nFu!cp,!c!(0 =pJlym 8AUR f $&|ŗ^,6ݰ,Z I#Td\l =bCOY}os6Z{;<0O)O b*L>g*VbS@|;hU|Y҂)ٰ;6?'8pp,a9c$Xȱ$X~9h듳E_Tg힭mnncʜ`GS`18ѷȟ9]Ţ/mlc]?7oc`89 8F߂f63CꓳE_D *c8T3'97>*%vm0'x$:'x+# m\oc*0k`$2$ cpL+p 118Ƕ~z18XJ[=tul+qOkꃯj[rLnN\6n8ovکltb ގp֕xNgߥש|V8vY_ڍg+iam>TRa81.zc8^zc8^zc"c4@!p JbO~}1" S+ӜIfLk\|NO;48=9Aq@> A, Z, w=yfu[FdEˎ z_0BX9l1ligP(A6;2sP4'\(8"ZU ~E~=KSf!9q8GDsa rUhny'rWp , ,r ޏE+sc5Ϫɰy>Ke1וP8ssg`I߄T?WT?ϣ!ڱʏӘwj޼cfkzc@+"/cBɡ ڪjy/ѭ;6)C˪~a4p |419{c,8^zcدmcx&IENDB`awf-extended-2.9.0/images/gtk4.png000066400000000000000000001325121477403510000167260ustar00rootroot00000000000000PNG  IHDRcZPLTEGpL¶ȹѫӴwiL?̿\H˿ocXͿʋ]IۅZH_J¶͝eMڅ]KcLn`ͰnQyfyi]E;ŵaKpa^IÂ[J~ܷvZfPɾijtXF71gPdLdL˼źePbLɺzfbKxe y꾮˽HFDyfӘ~tclP-+*{h@?>aMOMKž:98ü0//}²)((zvséYWV443ȥ$$#L<5Ƹ{VEs^~{x^MTSQhecnliaPsrokVΒwk[ba`РgMÿcI>ǑmTHbT`]Zץߵ6NY'O9i4YiZp£׭Ivyۏ}c}j_enx:f5Zgp=P iO(xZ-)@rYi,up! 9@=犇Ϻb42Pb^6KUu$kޓ^ ^KcxtRNS@fIDATxlg{wH/&$YjVe5D?Q "YDIǮX]"XݐNi% Twj9=ў8EBъJ東;x盱'?yY Tʋ(Tb/@ (nYYO ;3j ]aԎDU@t SYԮ˯˃my@fVYˠ]MKR/,Cqzوs^Yt^c +iz)N%-qǑ._hV PЏBGt+:Y><VT.@74E!8ޡg!5v$F5&P)^"HywQd2gf%3t'j~7C6{jbZ>l;[< @q4n ݽánIFAʸ{.f1YJ5`Of98hw+(7h guکNRB&ՍGd\+&kwi)$(@7(ט>6* "`}=Xԯ(2!3Y)K~<F,..GՄ:+Ze}= ܵ#b=u$ŮH>wp^e9Qw>}:shWƾJhl)&?vk1RȊTO5!~]E93 )d JAk' @̪z+]@,$vAchg5f ,K@4vFA\G8}MMT:9?\z 49h :Pлy VV$TmVNJ{!4v Ui̸Skoxd9y}w.W&XwXRqMÚ*1"o#{jW;[jw  , T<eXc݈5y  :Pw% xâq(A@^QN;,+ɧ 3'eR>)<քDהYU1۰(Ek2nh6K+Ͱѳ֥Xa18>C۩*iKC!)nxio^N(dRH>>{pMk7 lca;Onјn-Jtg{#O1OS҃Zy͚)#7Ip +Nb mR 76B`E(;MwYαp63nUZqnݚT0kƶW[tcqlp ˠ{4ji 4V1I5a1|_7Vp_Їͣ(fLWʐXaաU8Ya ځshk1%@Hc~c.b07+6[~c*183 =)b1aIE)jC$/W/C%@5jߖ{K,ۆv] _2,հwM $F80za9z(Ә q: uދ+ʮQQ7]Em\c~+c6Au2i_n:k VgרW:$iLPK.1~gWcYQi!]Gcn@P;Zk~%jsBcAM{\ 1h@z@P ۴T.c=m2a&L-Yo"FVqT,Y%w\n=xǪNMS>QBXMF=6E 2Μ7#xpuGqg#>3(_8y7uƠ!CS%y8zJ xT4-t-2F`KɃ-q nmٳۈEb]CX̬tpt4.@>\-<2p Zil@ ZiltیJA@*3bV"UNh['jAy45]S_4V{%0Xsv?. ƶyן`NyBc9!2 Nut#%q` ƚi~N X [둡=ꦘK:`zm܂[VUm^ "vլe:5I*(OÚ~At4 `" +1MA :bf.QI#t{vqY@-}U`GFg&''g"[k":%{AdhŻ]5k}2U'5*iNx6,50AěW&:4Eg:'zƇ&ME}ip +NM MAٰ;%gg1{:҈Jep { /74C:fraI_IZN "x4>9>1֎Et4?[Fc:-UU6U-Sթz8GmBaƱ &#G^_w)}ɹ vX)7/5*2|9h}D.|~g3fMc@cX`4@dF4V@m@A {[0S5rr?(XgȻRm2pONLr9gb"TLtN#1LhDssħgpx^1. יȨƚ*"'Ȫ$t@𓾷e qo"\-ę.[ou߼;k6p_陟C'i.">#L+㠲)d.fgy3>4cv4={?YC<"gǂ@\HcY ?Jj^h>On}v u\ 8Lp%CH-eϔIFIQ)Mݽ7MߗA{Pt%H d,T-karmg %Jx-k[Z-΅ֽ\P.tnEY5b-X4iBaX ܴ 5z>rԞ{?617CZY;A5Fx@cOxȈED&E|AXܫUEC*=,|o*n"fM 6^:Ii mkF?2xi읯δ4gKb?ǽio8Vr/ox~O5]_vuoI6@p|^H?.lܸ1Rڸr𻱻Hcw]<1~h)I_.7: ]B%?=M&V'3mk hϿ$*OO׼eD V~[Bccccu:6Ʈ,~;wܹ hXc'$S.Yvљh<=nokDKk}HC BMO.-'2qU><_A7>sm;G2@pߔԘsCj)&ӄߦXnsfqvgq1=9g*X~/v%KhS}f>89. k:\/'1_;ۘ3 ƼpBd" PDk*dFEkiV+Rb 3 % NRM*!V(hikj+Mel=Ǿ=1&آcRؕ@$p+??5%<:w}5ᇗRQM+<> ]/ٟ?칐2|~#6ؑ l Zݿ/bGи59"tlA֌k^U졨ODJRmQ/1A|b)1> I9?ܹxt#RňJX2_GH(O/GׯŧgcF?֧#$q]#݃}OØϷjYKIIY|-1-g/^ao=Bh睿㎿qkd՝pOze PLkr3cdugxprQ AXת<)iSiAȏ_KJfoתm+P]g]%ʼaZI/_>18ҽV+x=.8:;OmWVt7CN ӓx6k>%uTK|`WA I7nqcϺ9Ϸq[d7Sˏ߾ٟS1Yu:~ N8|(lDA[_r9e lzOt]T:\ƼzחXz_v'sMbIp>?tR`+BoLO`': xmRN2%A4鳳m8ɌH8`*c|gEG/F~fe;A^su _/nfN;A:)tGnDQ^"'Afʽ$[~AL@:9"%QH)'RJon cEL*o##%uKq1G ߱ DX O<_=Z+}V8 N@ԑAf5h H C&QsJ+/70Nk9hFaL3vjEV]w,v>pCʴ~C2Y= pbUcRPT,2O;E^bs=;;%KhF+ҾƏ4`V`3ƙ8bhWL8Q {PhZg0""$Iz>~#qĪ&mh9dE%Ǫtv☍ͧeƎ X 01cbP%a#{ԡG]Pf}ТXZFr¥A\7GIg'Q&5GSyw[ݲc ŵW7w1%LǒxccIr6Kʒ+K5bHYBۦRر)K!UZ/S3-%t=s$"T&Vx)ճVXO/s=Y>Yȡ9C4>{Ԙ{frlٱ {ltt{@\߫+ daA ຩyOеGkX7weR0jɋVa8?qi*7Ifv2T+7*2^^P`G:+^  eNjfs?t%Z~9ze؏%.u͌/#"^Y򡉿^:V@{vefQ3]$j&_i/ǖ3v]0|xi{ksY*o Xzmy4b)cXW0k<[uBַX5\St ˽< 7M_h&;v':-[ΊXRZMRTyx /JgV4UוԐJG"(+ʴ> kjё䙞-(}O& ə49Qum!sm6: aw ^T~z~>Ψ=AxBIb{Bv鮩+33W03nskoDh^YV>7^=~^W[X_Z.z1&fe/]+ꫨ{`^?#fkfk J%g/ O_c|b衯f5t*%)P?(PlDGVhDPO-d}Va 0ֶC%߮ [Y4Ǻ0379ψùҺ={˷_6jt?}еnuD#]Z߱ i!< =K%HfƧYѢi)ڂc 86 $4*cUii±8uggWd5wT& kφAL#"dEL_+U) #~cqX B}YzR6'/mȿ9b{tNB3C~0Rޏѣ]nB+ᆽ+N^-+1vF_>s-89՘97jEqLٽDٽF~Pg<0.o\1Khl *fVKE"~?=;n;hY_%O?OIHO?(r/a~L:v:ֱiwfg^c>5 "`L@$clR@VPݭBd,&qAf[C\PJ`pGE?!0#RٙS⧡_}9}r>ݝ/$'9INs^?'쇊eQc\4Ye9"c~7Lh1+۲pM%,\uRpGͱPkVqu *s̃`a ocdz,s^ѣ{M,s?L6Ԕ<1]ukc;t,BBV;crL^*X }DXG6`0+6&"%/;RBf""N_(sB0ZR[ZsVT"m;YTѱ mf}6` d]Xdc ͔MX%[֑]9&+>Q fʌ~GHd(ptvX^p있䢉*m-tl0FH';>;i*l-XN(Y1=8 y 0"Aj(`i% UɃh6ty@z[cp|AR HrCἢ}%GwQqs.+/4a/Ml|gK2,WQH8C1=БȬrc H !Ѩc wʽPwS SRKi9%s&34I(hsFQ*&HYZdrlꔸX7T`=9ÄPAqS4d1 ı# <$u,/ Q8bs ߱lŴb[DeK|M]Rw*:4(X<Ii`.;y;Fq3TIXd&tbnI.a::&>I䝊HA%cP %c+1M+Ʋx,;V,cȏG?1бEL1@Ru~ĎPՇwxFt<&xdr >Zdl;ֲE*bYUtlQ$&9Gwucyyi;w>Yc׏}Pu:ֿ۰#GpEB,M"i-XeYk"ͥytloXuֿJ-A1\khD^aǁLBC@wK1v +d9vDc+Ʊ2 $m)klh=ﭒ .<@hĶh}SX|\X-3p$8=7]Zy3w/.8 $u 7R,.>wu =9֖1Ѹ(55QX /@g͌VȀӸD7v|E[X@O8=u77/NjL.l; ӗ)eJ1ne\\p oGq!*c_rka <.vE{ǀ7qJ!FV7H1ca؎8VS1EbEV'[<:,nc[ \%g=qB&6^^xs &%Xpb}:Jpl9.f}yǺv}9^A?uݺeWB\'dBzcO _Q^& _q y*`}ct-z0F!<^@,.:@&<;J1ᥘch2usl5>c/Xss?}Bb3 -أO^ռ<3D#K1p{ѱ0YDٻc+ cW yBA/ѝXAb$dӟ~Mփŧ35[2 1Rp%k%󏍮! 3kUETGRB V{qH2hE<;Q/ب^J{!ǰ ;E\bu=&sfWane XV.ۣ$M+zBkE>FHĞE!]m}P3,-0+Z MNkgB<:#ǘ{yeZۂj4BڹmqN6?H6|V,[Cڟ;eAČJp'(K3uwlCX ٫QCi k s0/XszpIrU#֌cg-7 ,.aY-B\/,B}cŚTSTTi^u4Wwsb|ʒ5 a$J0X xҶjyXD)Y5Jw|;<.O;`M;&#N$UVAX> $RR,I>C:@VU֞c+u|R8d1Ǣ*HDŽ;&ݱCMDŖc}|덋vPDRsL^,UvEB8n|ҥUOCRϪضĎ&%v;P[k>㢲{<.^kwSDbM"rNJ"4+'M19bNفL$;)8s Ũd\<{٪J-M0M*qQYy[1Q,g׏9ƬHT[r60T\y1?LMSqL%Rj~_^Ppf5Ί7ձuYb3%:feIw>?_J( gJ@^zn"i65QcZjρ=avOɀkE"<87{m'c=`̱`ounp|8;|v;8ӾX[L5 r D,M_Qvq;+cwnuyԍ/wY?0pPID Zn?5e2INgaާ^ԏI^!Gi﫯}m}WMnN7RfgdPYxl, hC(8/S1A$ZتjJc{XiM-]_RwLs`9/\9uxtr΀=C=EE+I(VT؇*+z=CPclj૑z.DzQ*=o^KT'#ܟ;&#*WL$H#\@](../} f&g{DOT/|Y&T3\RqfRqש1w]A&nt\`q!3X#3DŽICX8+v̱S7`{_ywId/8+Y+*ii@ A^-SwƝcNX0 00LV__X[t@AS"*`tv 3; V/8_` ݘc~QEjaېj,́"us}kVqlj{O8N2&DO_<~8o+vṈ7LOhc~̍"ه**z*+{* %Џ9_AgCΆ/z5$1cY.J8$b04Ć*8ֆ(W"6=v {x08~E`EY_.^1b۵5'T?mٺ˦/9J^8It/×fg^˙qXc'1v"/޸=`4t]uhĎ >pJ}.wJD.$^6.̲kWtqo%D/c;f;f1BW&MugLӎ.k~͛}Ŏ u|EE&=eUd"UgٚT؃גtt]1}>ԯN]犎7H9/rlcd@S.WYapIp *v7`͞l7{*3TVZQ̐W0KŎp')ɓ_yb0bБu90m |`puý=߂I]p%r] w}9=fqIB+"x(GB1&hHɱmT%YWc=& Å(O|slC{4k3E4ZslY]KuLESݱ 2֭[p`X"bQ6xDךHnoH[kb@y46RvY eqlTٙ ;ִS,.`#N1+8|kg\RG>hw6ƱAJ|qh}T1`%XCǖߏo2E) `]_N ؘ2wV˼c[_"ջMϳSCX?߱Uem,wԐ8.Jg}(yػc˟X<}waZv8ڶsl Wv#c+^rqa-1`c?* e:֯Jfu,!E Xc˿;WcmzY; T3ɋgرvPw,!u8v㯏ГBb|ҕ~//|aK{3ʭqUS*}R<2w'\b3O]Jmc:6pʮ0CcX$ 4yTv2N'7yH[sMǖxbӿ}c ==R^4 cf&g2⺶g*ͩ`krL^)&ݾuKXQVrPr/Mǖ87ic_rka ?"d>"6Qqs/=% M RDŠ~F'mM)%o zt =ϡix\r8&)m:b vLHb9pV9͖gőPHh560<MsQ@p, @F+) v"h[Jj 5*[I`я=RGLeN AL"@tg)WĈ/WLٱu&.dr#uIhM7 j)&*αI9 ȷD$V_;;ɝGNy"#H Z#f<& '- *(D)%%Zc|ۘ1g:9$LI)0 0z)zӨ鬎Z`Fh0QI/_AǤ}j"KxE$" DN b;ZIer5XBQNRRuk\DD`q@ $eʛP8WKto?>;t7!iI~ /9=2u8H4'؃S5>ɝ:{U2ua=@F~] 03!+c/9;'|ktL+1QbrlS(]9Ȁb=nKr: >4D\#ܹbcS=l% \hs~.,|JH󮡶 zcm[h 5D<߂aU sTS%/;t/b1Ifk21v +B-vLS$'n]fz~m*zm1b5,!E;) E%B˒Xf+`: Xͤhfj~Tc-̿04k!˱?bׁds,=}e|X/0okgy9RZ10g- Zu$q\<~I:9V16-},fX-gb*_?>N1,`9M犨 4&c=Co?bcTtΉ)=:cyG&~_0fArKWr/l`V;Կ2nkNWlx;c{cc+kϴ+ڧ0 >lmepV ]mby; :$,0(2DiwyܿOm+T&kxܡmOl~'mקF\._ ,ccнaǠ;:cЬPov}O6i#˂ъ}́6cgmXI) N#"֎XdcbŸÁSpu.$P~vLVR1X,xwg;J;13P cW[!1wD$G*Hee 3DG:E;:v/irYH9ᘮPcEq-cwct9K9FvfSc6X@61b)LjlJs (r,$"vL!1X-%cB옅"0HBjފc Oh_qӎ1NH+Ʊ韷~X[vr3H5އ֙^xs(1Cб8ux1B7;lfeEn8VސRJrLp ۊcK_mcTS%̖ccE}q昊1Pl+-5mc2cYsv^baq+-'pڥתJX11DG'48s ۊcK?1Ts?'®Grw>\tZZ$t|b[q B8t7G} lyٖnVBmnXy'#<@E(mꆫӵq_>=_Lҋӓt^ X̥vzR1>rssKXI.@tlD6)~Fp?}|4-WwZ,^mfyzvmfQlKs3kiihOw|GxִF%9/7;+1˳ws8f=Ǎ/h~oco;%13G y؀xpzpz:رڛَ r) r($LcD&SA,^ @cXb+^1JX1о\ŗBҫE3Afh!8FVqڑkkbpL罭U:^ceyU~GfPe( EyܡoY{2(egBvlD9&UڦG}քp ǐd_>9aƦNz&S/+kWaw 3+p󰗁-gqf?'burfΥgR%\*o198 J$䮮i;?F8&`l)vR,VVek@~H廏rL̺-Ž?z'#~I9FwR2cX(g#~K9c뜐btl=Q.9s1$c͵:6MŧTy)T:5UIҵXǀ9楪R:5rl%VǦ,IYJБǖZKT`Irα1)lH|=Bĭ:4ԃwl[)&gK@]:J*4Mv 1rȯn bKT朔cUJh h2&R-ICqNLE)X冕ҵ+^+R8Txr`!ۖs x ꨰw>s؍e cDB7nԮtsժݱܤc׫,^{haG:34nll~~[}w63NDH52 kwχΑ G/Ia j``FGv,M1p,/tT18^-Ȏ} *kl:&~8Lwi0ܷH;IKxv.u5g%q4+A` a@T*&@'PSB@;FY싿c;(>gYۇ zBa075!,ͥMi"  @}۰GqIoswfvggew; [NjcQ3YIb}$wܾF~E ŎA +IT?{ǘ3t }5!D `UhD0#HXF ɤzHFiM`UWn6mpJZxvLCm1n(1_>#Urŭ0+Z1?O| @?1jz]"D΢vl8c; >Qnd%G 8ݖ_~}}<p%Vb˰f+a XvIAs5FczϨ0"M?&izߢ:[㧁N-7^T-Bc= 1h^<qzߢı>6:sZ[%v=V +"EcSsİJ}cz[O'*O>c{~aSˋTcǴ؉auW5+Ul[lܱ__69/ct $ ǘD$+fg'A''f9?E<ahPQ1Ŏ{Tf%G"znvղ:|1RuKK'kLrX u8\džSX˫y+^2TwOLNn/v_?FDwq $y 9Ա߯|rbLw6lv>ḭac:ulPZP|FͱpgI}i/*=x젳c39acc 17M9]UY SBe՚9v4f6#9= lt'Jw&!Dݱ`h?6N|m5ZMmO-f6n֖c Qhz{ +@c𘘝yNh; > cǃꏉ#c:<^QXcuCy(p,1* :nV}By(rl'RNTHF۱z4+_f8|b1W@23amntc1ޱP̳cGFh:6|"{ssLK[;SQ R>C_g~a&mj&/<_818-I*=8VWnd7vu_?)3Qq7Bklܱ9F1嘙EEraՊd}d !cd/$s]bZ'%ǝX37!;6eW($ m@\O/xw,>Uuɿ29. {F{9w̥'i vR [Emk}.Xl1;IDzS /{Hߑ:ze%Î*O/ A~¾`?80.Xr=zduǘ I;i |- Ǥ-W{tj0E2L^9IGX5KRcc?/[$hp歛<sIW75?Z3<4ΡXMR3KM?&*#{gwLm[o3Yk76 F u8c;]QW3Ke&8hp}_N8P^e[0 )H|M1+H8q@yJ*1kp#dDc(v;FXJ yN8s2TCFf]p,v;,$1!{F3wtEũ{:Aba tR ɎQ4lVM|l,m67ۿ}ˈֺ-' ]ö|aI.K% hc<70J](F 8Fdw|YoƟwx>{˥-齜鹘C+cܹum}z5Ϸ؍c0C=OINGOI└C c{~h^GxoxbJ y7mcLN{*.AV ; Ɛp5^Y*JN 0{?6&ju?z m>Ge<:A uQX[Jc{dCl0B,t1"Um^WV޶*(3~g440 r4Y&pRSnxC)c*km ё猵SjB&GLtd vGR׵BdPS'8p PU30WwD&J =C꛷ܠ'c/$!dP̖!c"bZ ㌅ufJ^-AGlWPpwd`e4w$–A )$3W1ʒz)I(cA7, }ENWܘŢ1{#&ezp€Xv}4TˇsQDL+'I>Hy} >c.` `bx*JRHfI=IZ1u^ni@ .~ EYÓj3'*!}x&\#!<"`!\!abZ>M=($3<]]}*f ;x!ˆ1D,,..|K5OCd973z䃲`zd"LҮꈒ&\0R28tb,ў:9b!Kf TdbE1Gvr͐|vڝ] $FhzzWi󈒡Ec"d- )vǸ;2f2Y@c 1cQ! mSig6HTbd#4H]P6s %CNcu pdc~c?`1ՌD450rw3*ҵJF- E2d %S7`Lc}k}E0y/}1qc[Pq2v XPm1nP2|2VYS0C'%^UL*2cL6 ɇcZQ&cIb\b01*N&r^B\5cLA/F L6wI;v*B`w8YfFu};e4QGZcjsqc(AX-b86"*[|K'*[`fO `š=0Rc;v, 65g6Ch۳kG,t_W$)VE+c#}H 0Vjsv}t'#ƺ[hf{T(`&L.ѥ߀5rmHV ƌxj+lq#sqG\îH\Ɯ-ř1Cbr8;ף#Z.Zڊ2KXcqe sP 9`eqcFa5@&y6 ^D/U"Jp֯GGb\'t8TN>u齈X:vCo z.B!Q(bE'%}sa0ćX(3Ƃ-boBj 9ŞbKP cuto:UHVR2[uqz/}Οo 3 }AB`3,d--&y6`W) rJPJ_*`K)қρ16EBF]ebrQ';P$3+஌;1(+ugJ c5Tߚ>Ř ?.`U2v ".ñp(BG;sdyR@E 0'VʼXe}}:*-}:+ܽӟ13c0v2-`ƺ}v2gii5Si91G1-WرFSE:1s -lߴ1!~?YXο ,U#ZZZ#/ W|?zgo[AbXf섌B*;Q QʀJ (aXml=QWb&HE,r^sWǾGwM>w e]\p,aw3yk۞}C+YcS.ҡcP1NB_$ư?ΝAcX'Zyd}׺4m#P}60L(=c \D7:n&Jb [׃HY{h?(@muj9mxo?0rH1_ 0Y3{%Fno]b ЏYRs:+(ŗC֡V%?4W,gE2v`lhkm’H1d-' +p_a%Sqoc~`ϺCg y>ysߓ`Lӕc>1&DOb 'LJ`WgzyG/z[Oǿ_ۮL@ޙ ,gEܬu+;,!wo\ <ck~ ]}eaFf{1Hǃeٹի`\ʡiNcLh7D?N.Ludj; ݫ1zEV"q::1XF.iY%IM.ϝ{~N<ʫ?^HW1u2$Zw%~ff[hn 2~+Sv_`\ g30a.uYLg(ތPia`,W֠uۓA5*.@Ybu Svb $loQ!GYgꨴ0VGG.&^>>ѱ>lG;gsbҋ^ܩ9r?/"UDϠV& 2fr>ogzm-%1+-BV'1fNQ?q?vc[~L2qsd?ԏ SW@3/c=Qo-3V!:2a<&2cȌ1ـ33&fR/fĥz(lw /S/I2̈1'e} _y`,KJ1=q3wR*[hN"LpWvwS/Z*3b >slԶN=/?U1k X+?RϬLП뫯u!R/&kづeA\4FZĀaIKԇXHl$KE{Z{qAbj1Tmc1Xd-o}}Ә`ҧ{眝ΰ8|f&O~~?YSۺ(wWX"cPσw$9jz( %c|9^|#3g 4s,c^yF_̋URA<3GVJZkIŞw)H1td *N`lg kc.(c&~=3M4{oqK%Ԉo 4V5/yd!Q[!Ġ_MJ:3X^zK1v1wݛrL3gBmݳ3䝗J<~pKEF0fL 2B! &xR=;DJ{w6c<:}εG}+2jDc?#'?].rw^+6HwxIwayƌ5,ce_nYe )1F<'#ыbϋzʺSaӉ}{i"3PqIt{ d}1cԔKl㜗-c晗`X Cb 1V#v N)`1NqG"1(E`Nb$1MЦڝZًt'أI\a|j#KO3:Ny1/ o-+X[TSP7Bڂeo5H;vE!v:7;v]$2^%2dۚ PF@%`c&=aƌ+y›Q1O+;b16|V`0.3%$CH:Ϝf6cjse7c/-k.76}O<͘^1 uIE9F ;PyYyQ`d VLas3~Š1v0wYXfK||=>!f9rDU]XfjcP6c.cSCd.>[)]Ϥ41]V;#8?D썇N5i1b\cN#b:1~9s!/d1bL?.Z+R"䥲v>Zư&ׯ fMŕĎ1quJ-}_v1y؜`y_0;/ &v>Zư&aښAIF[&:e0M&ڥ楢-R;Ecfb#Xh"kFd:q{$(/e c)vνCw6.mƺemxr}1DR>5i2E0eۓOdb7hzYդߜĸg 0;/jk ;/`kja kZʉ#?v d {gL8祂.h$:, 9/פGִ{3t)A;XMn1S5w8Ο09/פGi`{EL'n?:vtvۆg1S3{E>y@ ^o^*:I0MW"e& C+ދ}L~;/~qO΃o^*:BPA{<@w5c" BÃ^<*iލ) %m+2V.cb ]Ty3&뿽M}?G~9m  ]&~C /3xd27cp j\rx"E:÷LR:l~e6' -IynA5MIDW޴SblR AcI0Ff -Dja(؞fLՓo/qʮp0QM, ib\&31NtʛXj d<~6d |KB]j<^-/o0#2Rm3_Gs!T.1p٤ R&ej`':gM\Qi{ţ^~  |h_ĚCMAwPWm}$(9LZlh~b9t]ᒉ R&nh`,N4qM .Ԝ ΋ۼx)ӫy6=cheiPMЏahʛ3VSײYӟ3ђė`.sxj#',|8tyra g&b%2fPMy DUL,ޅ #+CI2fmJ坞\DII`kjL7vpfDSDi"cxFbbQy+\., wz{ؗc]ΜlCd{lWߨG5i|E'qyꬖwmrݭΦ䌔F>^Kms j/ЉT39\$&LPF G0>Bv64Wӄd{ѐ["@ա`-ͽ1w/I|#،eg;N~Z\LNoST: =h 1yە/Vi9DF G"+iz=Ɩ1^E$H:ќ!'6xc;G}cQpQ18Ie%[ƗՌ.4UTTz*-lƲ운d|Ekjפf̊y2[V;dLKdN0/U̓~y sRTldLmWR7LKEGȞyPV2&|1G3/CRպ|R&sp:Ҳ([-z 1q>C"g̿akݾ5/U0yjKn]W5/GKu_KTw?5Fc$qF^^b=fSGaL˶>cm>_u5/U`壃r­nyp]z S~DU{wB5#{lf5;640iX2jzApЃ7PWW,dTՒm"dY"!{$‘wLjvf;z+{vvjy&P']ǒUXʍ;߼T؜׼T5[Mb`v(=nՐ1[SO(7n(眗Jo7T3"׼T©=|؅ׯ=$6TBD 1ŤrC0Fd(鼗˝tq(%ZsBͤ.˵ ''ؤFSFO.pw^T3ss3|RQ .=}6\?\(~~Q:ThHd`}w&P-@ist׻_5Şuy<'Mʹ  lR#69].kXw^{? K,. :V:lVHsD^Vc#ټC)aa &弽pʮaMj5gdSRݙ;=/ojFd^*fVGWw?{O')ƪZ5حkj~382F粴tJi@0ϴף6&È1fd=/Ul*cG6&0ĪfXgO&!OݪA-+ݮcC)xN3cr991l&grXiz҆v}X;ת5uF|3/n(R'XHOw=BL^\瘗j/gaX[~, ^{<1vOyx-7/U°03s 9G#csOy6?ܜzᚗZ{EA=7/+!c hWyAbqᚗZ@%7"Ș߼T&?y׼T= Ș0@D8RgLT׼T= Ș0@❗jdq2Ko^*j'  ;c{yn>|8#2/04 #~97` DٽJTjwD楢ǘAoI rO#jR[#cDpKxd dGƈpKxd dGƈpKxd dGƈpKxd dGƈpKxd dGƈpKxd dGƈpKxd dGƈ1lc %B}~BDQ(BP(BP(BP(BP(BP(BP(BP(BP(BP(066?͏!M,(C Bb+;cѽyաw8䨅kv!FdDv-LeETHP46N g&%A#$îƍkX]{̡3v~6$ Q w"켦Ή1p繫z&1~7aň2FT㍱*QyeWm;;5Pc& 1axd |Sn9d0v6~( 1Q:1Z^:׀:[٭Z6dw):Bk-`]ۆJ[\7zs?ԁRA,P"7ml!ZL"{&d"q1 {/ "4lZ4hEcZ4hEc9f4z}4s9ƜCc1Иch94hEcZ4hEcZ4hEcVod;kzb s'/XNM|߃ ߧ) vԟU ^9fe$/NReן:`JINt<$(v'kW~}gsq ~7 *f777aȺkZ~Bߍٴ0f'N{2<\mߛ/l?d %:k}c;إƂƖhh+y>x G,qhXkUc)խ_U87h V"XtnX+\}c{|yq3?Ҹl- c ^X8~X}K0PSdB!ɽz 9%Du ` >Pаx0"NqwMw=M2;3t;&=̱W1bkFIveQeccYVms*&q]c4 {cqr<&y&V ]n}--~K}/-^_ql밴xآ~t@o/]|Tj%CTiq[X㘕Q~zZoLr[oe卍hF1jcW&;۲ C9)~]w18[1ɧMj_,/_|v:|nS{+ުXݝvz-GhUZW MI7N_D18Q;vBc\5_̼ݒ)BУW[״|U#~]|Q4k\iM18Q;rBУb9ޘZݒf\\P{5]PݣgIat=C_J"1Ah71' cF N.ĥJp+G*W7LHВҷuc Hv@p0Y|jrO񭙟e3e% b6}u%θ wiP^XE89ZQ+'± Άѭ{{?n2͙u[?ANAu%ϋAgF~nx0mFqšĠ䂫^>f1fÜ`(1؆ q?}U+ g@ϛJN y/caNV8:s_ev-s-G_8Vo#&f^'HX%'zNH m`r,r, J(A_ۇ9+cwV| 118c?-BNMc+cpL/p 1G^Cb;g pTi;(ǜ֊lG/egv9[wԜξ'F0ǑW+NTSecRަ?}rƓ\4+Oy{-θ|t @/p 1 @/p 1ЋS @/cK/44t;֚tKvlw2Ìc1!R"olIzM&R2L0{NK:486hB8?1nkUX<(cU`_+p }ulۼ{aKWSqnXlt폺ՠQ,Uݤ[(VO"#"d̊t >Λ#X:vtl( nL`&VEr)W8 n- ß{wn `e̊ziU.. -slQ}اXnkFh|v%=_![d"o˟JX9vV[:ֽ؛csg j)[qwY{Ncc؀&9V#{Ɠ5,U^d_sy~c(cmqH|9M{cB5qYᡚZ w_?&~c+d=>}zqqˆ4}cFV硚vJWc)a\1`ӻy^p A<ֆivlڶ hf5wgv o@/p 1Ћدmcԓe(FIENDB`awf-extended-2.9.0/images/thumbs/000077500000000000000000000000001477403510000166455ustar00rootroot00000000000000awf-extended-2.9.0/images/thumbs/gtk2-menu.png000066400000000000000000000624131477403510000211720ustar00rootroot00000000000000PNG  IHDR`PLTEC82eG:\D9~TA¶寢ƼМeMϚdLɋ]I^Iґ`K[HȽbK\HޗcLyUGފXCźΐ_I̾ʿο¸ǽcK„YFұ}WFfM`JʻǾĻƽɺ缰ŵ½úųøwzSAդ驤Ƿ½֣ۡ¶ļԧ̘ڱVCľXFź[Gj[wk~dWhOɂ`Q䰯|ws}pe{ktcvXCѡyuq[VT}kgdvnN@JC@H4MXSŋؽ8TrAΗO8߅׮)%#Diiш͙n0`LEg-{Z;ږ9tRNS\\ZaIDATx{TS׺{&@A,h O MfW F򰠢"/EH&׿O?fˇ90j}"LՖ>,Kՙ}ufd_Q]H(#Q4ǂ}xM)`i? hd0~I6&34˧*9208:2PT6hV ԙcǥ}LFO0g Fsh=ƞ H/f<MR#:Yq|k:v733V0A_AÌ߬6#OOҾӎ6+GaޡOGMC(c#COV0֩܈A>m05OiM{J+ЮJ1|0u!4~ҹi m(|P-ZR}5D)5" 쪈؂Cُc 6dtFVǨcb}X}兒!f?cX$ ~АJMIYYr5B~ߘKgĸXSoi>>XiۘSCXmz.ڨkDh[i(T:xQrs9|GUc9NjcMj[Wޜp'^\hgݴ{jjөcv?s@#xyÆ앨5x\b>%\WכOm©.WgܫrCdF:5'Q`]ڧE'WS0-&݂=[˹?%B'ҏ\ܵsjM'['MO/7kUѡ5(?UMcc(UU-?Я-?ؙ!jnjqs[­VdSu`7xA|6<<1-{(J,jn>D ;!!YoxV >o8F}5 ygs4)ٙDrv#E;;_"Y$XC$g;;aqa3,Ks,7\^qp!$:MHd:Nq0. $|q%bVgy<_bKfxŲOy_ݕedxyB[wGvE ߘMS+2^QB?0A l}!L}4 ]`|7 M~ڄ θbʸA&nd$ttqɋg٬?`9LMMN8>5B.Nnf$TG>ܽ{_ &T2>m/=̌lSęSS}_-X!~Ѳ;>:8ux 7JJSWu{%!RG=;OM2&GZ'ƫ"1[a4+ FK}}o!Q'~r׽Jb˜oi4Ʊ#'MLcXIsmx3?N~#FGxR1!kAuk_Q6B)##TݕSipF6`O%B ޞp4EB^qBz0ˆlА 4]3U07! dn'tU!|g* .x:Y+=3ybiy.܍:9 y!tFGEM$,$+95乼7!1UE.'蒙$rKV. K18$SgPviؤe7!QIbY➡J!*H]<9 : v]r( a =sU> xz 'Υ "G/y2#Oi B\R!EO*PVxG#?|!X%<BF iNR z 4"dJ335$(H@XxG}l 2O2+ݠ{ʣ>t6VX4*u:}C U ^ 5(:hClЧW tL3<Ԅ4,%^\o9AA]ػ+^HO  aa=@o It'emq s$ >pIVk5y>9HNNoњiWrN3v>=lKX:HP:&Nl4wi4 BDQe ªe;]f/*AJ P/_T.AVPho?wﻍ*S./U'4ͬ`dnVՙ>EƳ\]{x}\[ٙ,m>^x*`sٳ\B* "R. Z; xCc^6n` x51ML*D*I+*6xLʼR}g<PQ 9 _&L}@ \d:?آػCT?x[bX>8~j]a'&5?r0zoh2`s`<4طYO y ᖡRjH<$w4'b$,(*t22T$Su"Md" /psxzKFP 7xu6,W'W̆ `'d3"o̾=('B{PdBc[>QYPv@hh>bꅫ ADOЙLH$A楷J]eO2 q@n :RDlJHg&F*4GOep"'S.܋qsV셸&-ģ8iM_[f=f֣\2mZWP͞C&`bL]P\z!BY(bU ޳> +XV {u'me:Sw >3Qfcc7ɇ6-B&0:,+fdXw?kp1f@p@8Y؃WsE?L0~{ul~Z3n::E'>./$K6b!q|M`KA!zB=]61G y..Djm}̢{Nef@+=eC' c]II+Ж"ʾ草IY3:D ל )]s[٢:sĢnZS.æcŅPڟBOr'J_uփPK$_F<<$|43 -?>pl3g_?wvw!ag{ VqVZȵg%9XN,I'9bB5`{ x-]BWHBO2ǚ`#Tyt>hwb6m%++x.VC*>OCN^Cz.{]kzͅ5e׏5CޜxvA!BQ!W.YXYʖ+ DVJ/T@mNiN()OSjT6:.K(֟Ζ`XpLē'D{9X'~ym0с=nbĶ Y<8韽@'OҀJAцzN.N{mPO(%vi@T mjjBhJ=+y$FC{)e '|iI ~%depҝwg\T \9ذrP1iB[`J xvvwt9!Zldzv"Fߩ*LMXP/C pZD,T_U(+.NWg!ҷJv>s@[[P^J !:1!2m eCN *dC4b1 )jtt=>S+S:r㳒Qz'o 忍 R߉D .2V!POmZn!va!ʪ · 5 ` tl޳h?4dÖc~NN%YwmU.\Rv^:"Y;L"MlB v]u89\=Z 9ql  TT. !Mcy!4~XjȒNbTԙKb);ЉzH|*В "RrQVY1mPؘ^&o:Le1*`ecJ,ȕJs 6E|6NgIthPXl!$ DjI<., Lh_CЗ"=2<4@)岈;Ĵp vB +! ns^6 CA5YƸ\g ?EF˘nӄ0,'+$z}CH%jo9CR*MY5ENQ''#Bvbwː wgmi@>f'e7"jk%(e@Cmԧ~=uХ 9:51~9+p>M_›H>>Bh4 ӓG%9LFm#P£`;'9V1|s9Ʌ2E?Ef ? @!Oڟj Or$G_}uɃXJ1ώ.orC%;z RࡓSduvY9=08ˁmȃ'lGYa /Ž.=yul-,~=voʈa_hMHL+tb6 abW Uqk 8:A _!'5$jɼ5p2>4ec}>yԡo!Q!5WWV"#+|,W E;XﰆS&|$K^HH͡BNza90/4L ju1V*MF}T BΊJOw&1зcx!.y %s/+f~FBoo!y02H)C -)Udr<<rpEEjdP$6cr, j HKa;ŸW _0ڋl2ڕٶJO >WIp{R,%A'9p *—0c$;ЙR\B.d2|/)>/E߼lmB"AwXk( (7>/!Z KC/LFXԱ vj8~GƹV,t"֭ILc}pH_]ťlzc|wFȹA hg܃}{#m0Ix#t8r8npx; [N1ƁD;T1n353LeVQ5jfzjj9V?-@g|1|6kkZ[g\a梅|h1*I6DZu?{׿mM|@$ ELhݴ(ie,Bi,k!?*58^&!_@ eY>e0z3kf|Y7/+@Y=٦EPJ> a( ap8p>0$.Ӌz a.m1Zhxf9M.VEv"iW6½^ q)uvu4o|ȷaд J&~x,:^m(dVHQs>6>s?Gi]nEsSt.b?4] lӆȲ`K qw Ң`sVgžVwvΆe 7Dg ?Vހu:{]rǿ 'CikޣGpt]fҲo>z۞]`uo%VZn^z^9@ #]y`EVkcz-v_:V2_ICi dϬ_Y/FH+xKv5M[erW]gM:\3a1_mY(>޽Ĥt]fN]q]O?-&b,.˜B{>e2!:9lWC@^ȟpL.fH,11d}&Lv9r3lL8j͡`}j ,.Ftƍ`M}/0ѕ~°sXM2tB Z,ځNf`H)} \aibiP\ ̡XPÇ֏Mņ$r`V@Mj6@?= No)}7@0c3fQh6'OHnncl1d!](ێsF /m~ ' %b:"X+2@\'iZWoiFcåd ;"\i}96IJC6 t5=z/~¼l䛯z<! ϬL0!ڪj@SUc撒NBUp7TvBPz*اO P7y?(FOTaɒƺTyr`b 𫯼z5;z-!uHAl $'u_#މ65(;lCb|FʹvǏ3@ЬSצdk2G|\&FT$ WƔ2[ ҳvl=m+Kxd%sjv^_sZtnzm/gUN?4)_g^+@f=/P`:️B( A. Ш]~mvkCx 4@tbq^v t;FѭȬSi8G:?3=u qG/F:1S42avv|~Of{îH~?f\ȗL+ ;vqE  UPFx_H @= ^p4OT Ñ),Z', 3@ίMαU8/8Gg~_}j*w/6z<[ZPw $O "U!,2@_%߯)˖W-]a%%$[s:4RRZV~ & ~_ Inc!_k\Ʋ]}'Hn~ņT?VXd]k2mQp:*C EOZw>8=˿3MPZT V=A2d@TA=ϭLSE>?ƵS{B\X绢0V̓V&, YeT@mPB:~' `Qrk?&=W_?`)\Z}D(rMSZ+@dB!L@T@WRQM޲{Rf%k$S{՟3 .bLR˭v1؁bRQwr%GT2,c9ؗ^Mp_Y~`'S5߆l9'տ U> ބd~. k:~˖3rC)F!ri@@ X9խ9G]ؖ"G"ySIuVg;r!e X,h >q'yN8\ dr@&Dp[1 {[Cr:b×@^y DI[)FϽiQ_|b':NH+8Z{BE"6k0+;'E*;!_~0V/!_gئ1[q# lWQ |Yi5$U&ZPB.Y T Ȕ7vU\K3XvZCJ&d?LF :x@L296湏dcH YAQq6#8ݳƓ%eHt 6Ks-\fMc} *H TX2 fį8&x(c,eAfcՆ 4hEp7QZHI=mdi*tQ7aY2uz\.Bq)ڬށR[.C4}N6Gz+?ϭlldJ;n@*J+.7֐?)`i|'?wX*td Q8-Q<R Ȅ 6JZ*.^h:=KYI8WZzl X^C640r9Ŗv^mf+mr$>CVT/ʢV5iC1v5*[TCβX=ԐsS'N"8@.{B0jhn`V2+T&jeI&y@.nH'6!ǟcپ qٞo5\:*)-]UJ0ErФzu{KOnzeK#m} zYevWU?1Gjy}ɰEVҢg/, 9Sh_S::y+r溌qҰjMjiN!NAuzUؕYWӦ|me@zG~x"&fxxI"qL9oŃ!^<  X@eJy[\#Q  dTޗulqS _Zg)uhL-RibB4 Ӊx4h"uxɹ1(19[xOM/R"lQ yp(Dq{#&}cD`.6F@bി*8GxP5Ҝ~X ohҖg %Hs{FPB;+&^b\cj^HjWUk"*xmDd.샺7%-c(7)юw#̔Bn8سbLyď^ձ%/;[< yms.1[)@fazY'wYj[ ٖ8ZwW,u%iቝ|@D9q[6EWy?P0:*Y~rE?; rª79c^=`}oBjO^z:|6D $ "a{0yDȃ=]`#(.K(жK[H<\yͭxz&SoqZezCuXz`6+ 6dNlx@r#F HD\$F)O$3X" {'@"ЋT?:dd<wMcT 5zV/{\#V8YqX(al\ZlƽnaM"t t8d#6Ns@u]C}hD/C@sQFX}SD=!JmTw>I-@%WVmI2 dER:Ѱr˰) *bQ@ea("4 {C}%1K Ϥw[Z$֕%}޲S m"O16Bܹd:\{C ޥEI<{&D_WXD?ѷw!׉YS XC@:=~X,w.Y (:۸FcfgD8bxD*EzpȔBG(5}%}@.o\L2[FhXOSABGfZ`9n}/[zv{{ H;X1$P؛gDD1\S?(e'9`X--f  DD\mk{ DFe.$Rȝ/΋M@pvOVHq:^1|\K$4)} Sɉh@"gՊl8ރ@*BF U4DBH}aaE9&xJ[r4Jk$& c\_޾~.3Df6Hf h_` qoq"ㅫ ¾oMœ qnb7]hKU,Y%'RDpbbO@] Csw 0\gùp n;n-w p pEڢp2 rf;h/@l _E.GҳŦ$#W]Nfw_W-t1.*8 paNE偛w@P " »o&mqUkyXj eGS,ER40qBJ5k Hrgw;nX-WXqMvqPoyuaG7fsFk7l7o/_mLU Cdr?}ȉ;W4XYP9x;up H$+CJTCjcIOR@^Vk,|2f%NbX8)M&At)N;A45eF  s hC @aӵ{ 앢eHBy+ 9@yL.#!Ǟ-P$Hz:OV+U+ojGWи' B>colrxġHr*D ^RV"hL#.WgUL\ZIQQ^| +n&s@pcUl@Q]q%枦 H(ۄ3Hʮ3WGiܓRZE %Db7H~bpr! ~ED Yd)(' !qBΕFE,V#7D'wdF|v3WMN0:)/8i|'xq"6Oq1Y&eb"c GIgjL'QJ4A(RZU|~;R]T!DEcXRao6诬@hͰ Ϸڂ6qh@_e lTuLL&qr&a]dc0_0!e"@:,SX+8?\\/Тq&9&@^y@Z[1ɕR8ƾᕸqK /=[ bu0;P > '9L)rgSMK B枯skLQC61E* 4i9V΍|b>PH?y $@eK2 FkheV3\'-Q[w[FACuV_]$grEۂs^#(gI) Txe )q*f$ Eb$U/XH>|f.*k!`RPVZcK-@J0%b`)R j/ې| (e |ANP ̍, %yz %!_;:@J޺N "(x:lٕWN{_Y_w(m @^9bz΀CJXŤl!J%[$&:PWM$$mzIZgYX.ZTat|$_>%vrdqp-&SԒxp_@nksc((4I? *ye%ȠdVBqIYW-%GŤYqS͗Tia$ %oI $C4.w֬$rK5W'HfIPHLP!3^2W-䒣QW4g%~4+!)l@̊Mb\b ӪD0lZ=q Ӹhlq;.6կъd`d02\H<\>6,?|2lX- uDr6l lRs$2l0_6rkl*M>2GjX, wNd J/ :z`=W Ef^EøWjGat<:-wG{w2 &i{z%c[&*[,SH|K8|nӐ9"ݝϊܷ toW֭Yca/,Np@VKHw2`pGd1s;i+ vK6$}:ea;XqՍ.[{b!0e=vFfr)]!R1AN1zt.sxDK9#cTN7@2S &3ǬL1]}'3 uveegHb!"!>Ŧ xUIh4Ѕq] ,D[ژHC2el@T(%"2 aA4U2/͍v+VѼ>ϐi:[>>6s[); 1RCo Ќ|,Тc7QeBQ@ *V W\ (]"dP6 U4#H"=E,b0XVbm-Xܳ'\rUB3u!È!]!mBWH 1BB\vYs^yAtZJf*YPWi6&&$67Q`Ԅ0zʆf>yWȩAylAml1fq APofk{ŖlHԐi JYEo`z%t4 alBEޢ\J@,bG׼&XZe`ƛ\\X"Tn D|-h_"ZOzOTX&!vrhL&FRYBk=ɮq;WB)2Y!u:㌝4e_,{t-b9A7p!Kx&B^Kэjk ɠSzTDX%K7 7ּ ?ȸ!'BZ#$*BւkYocV!t"ⲐMqA JbX_ 6w`нaؒ8qwF ȸ Yq)TJ/$C »D0k_l/МwM,C(օD6,R!8(M[P!嘊6?438#(P(9T=&^1<~lPt?6+:N1t]!mƇ0ԹMyj$A?]! Q:*؃1X6OeΒgcF9 tE v<(S>5 a5j"eIYK}R^r,Θ,$OOCc /jϝ f`dϒBW?Qk p ˄H[4YXM˳O1 ;q.fF㰲쌉pYpG 1Wy_sdVd&nzHMLLЖ1: m^-tE~ L>dz8&d!IG:b$r PȌcE|*N!V -, Ų2C$ &="vi;Ʊ]|8,KuyiB4;%/Ly`|D#/!h` GaĮUk "ֲoc?#KHJ&ćdWHWgή$!ѽh' ʄu`&~u!jby$`u0m,ʶHj;c ir|(C AGch8J&i 9'2ST{}ZN7=mmS!0LOÙjUieO. bP$`AO^7AϠ1BQ)v2%FVB(!3aKG ;@ȶNg|ow!Sw/AHJ%Kcu! NX'vbYyg_HN2f㩚n;.h|YZΗ9PP!Peb5 7@Hxr|Ab2߼RgKHnx2TqV /Ja;],ꋡЇ!!hbXH5,y˦ y?j%ZYcgZ0Bj*?XBX,e|,um2ϓ80)g8* 2#2Gm0>!LB)&'l:uF XBy-)L]Nsq5߭BfW#L^>y3ɡW!PBsN"'YS7#L"ПOnx64AN314%,NŜS4wJq tau#n!hR?!F5ӱBBZ(81oXHxxz!)fBV4!JvrqT)Tl(hg!F4D*ǵ^&]jA?RZ,fo?% Yޝ/ͤ!u%B_;G It2_3|ۗ;%Ҝa;5čjcnPͧ[2e4n;TBv^n?d/Y1nǵnxǰܩS=uEO !߄ͱNev3@T} |R41 xK=\Bnn 9d],!^K@qIe En Q҄ToR,, DBC+Wlr!_0nwT^ !fY /,Ӡf&GC낕2$2}C$r< B⇄vKABe$d!w捆N & D6VgÞvB Uż,De[Ѹ== E9rj6r-CO&>tGW Ȑ~_L{r5gOS'OoWU Azzz/e!eBIRem?[.T׉PNBR%k|&OC]UR!%eyDbH^bYe}3_j2"KU{ZʏU<)V'D'!Wy̓F Dâ]5V#أyc=ixfo7//o8A CsDzhoxlmWoJ>xOBE}*"fG@L+JՅ<ϳ /aXăNؿ};}w~xE4忾gi#1g0ȧ!fx`΃`sq'V#ʝIxܒۈzȧ@`sKƃB~s_U{"YC>i IuK;B6~:d5AlI}KtP(Q1]!B΀ׯ_^&T]w'ϛ<0ף2Fh ~tRnWd!3CWj>KAdɎ |}zYΒ +~B!b_",d} }SǵRVw+5s+jt_#g B ovJIR;E]}2r[9]yJRw~{@K}pO{{jI~N^(vrt"grk ED"!XK\D< w"U7TD98$Va6_P ;k;fll5.# !Jp/g;FNEQd)'ֆ@FoCԛrdZVTҮVZjP!*՜RT$HŐMDc__؂ẦlWz ECg+9W'm$WP$aF"xc.J9+dAz(PKV+d/ *,dXRK2eE&(Tu!]adad~WHqti#.~0s#IENDB`awf-extended-2.9.0/images/thumbs/gtk2-rtl.png000066400000000000000000000645131477403510000210320ustar00rootroot00000000000000PNG  IHDR`PLTEC82bF9VBoM?¶ͯȽϑ`JɚdL¸ˇ[HŻ^I͕bKeMʿ\H]IXCʿyUGcLżͿøwʻȹúƺýǾƿ볬̽ބYFŹȾȶºǷׁWEĹĽƤĴǻź|TBӚȽ̶֒轭٨֡Ԩ~yЅh[uQAׂ`Ruh³Əj[ؤܙy{vqzk|r˿⎎peߛqa{[L̒tYROfiNſљrSnfg_Zsmiv4MXE<85tF`L~lIdM؎oo+zGHtRNS\aeIDATx{PS׾=I@$(mJxjO`႗@IP^*1$ TŊ@)W-j8;yu9=9s! !쬽;dYs'¯>lT{~5n_KDLq"rM'SnnDuSvgʿy}x *&eCԼWXSFf<M==z ^k4<ܱ1ZQ5(]6888&wsཧ" yy2?"UMXCC~h[CŃ጑^(J!uҋ|}]}}}}닊6_u/(ኞ}a.]]}]/ћpGE.-]:P 0\ɔr5Ktן&ÃW'/>v ~E0 rOJĜS֜w虳?X @nq^;VB?ccbbBdfWm襕62ifWfk7%R+W7mbz^͕[ABlMƈ$K-WWk譎5݌1x.BmVm Kb[yIYۘ]m7FƨadaIb@ 9MyF0Zޘm+U4:yÚ1bVP!'r5uyEDۘ]of+ojm pؖq[%ʳ\ncMYEm\s|V|9;/,Gu9ᦶEH/ryq%yK7 vzKvr^YEoLyL*BM,ӖԈ*eq%em)Wp9VP甇]EBKܲ' DQRQWk[h)9SL[F(2ng҈rɒ2A^>W.-Y/R -E2*I"y%e>5daOr&aEa50ࡖ[/@Q[[3\T)rcD]ب-AB?gzaYٜfV [n˜&u1,e^JKJZfpQK^pq>jUS>Yxi喸^0)?tQy*gQXd_0SXS~9%\-f~cT%-*eMhbsgJKqa%ÓaEe )Ɔȕcni͸'~Bfoڼ =@ǼwdXjwd@BX0%ԛ#5[ !OV&R=f4k˚clKe˖f}!3B䓅$ݒf4_ZO>!}J;B.\lX OY!Ot8*꨻FwlNM2@7I!o\4wy{BwHȪU˓RaêlID(Uy e'Uwo D9nƜ9777nɢ_{!d"k/$I9O-?U??[UdKJ[ V֤h2ؒk~G]"ZDHQ9:s-.6  ֤uMF"4 *<aN6lmJ >q&lܸ1rzB!؟4gG7MX \qK!]8DC !O@65M(VV4 `OPz6mb dZ x!+|␐ĭܹH QOBPpAzܭP_<eGH(! 7B$ <6BK2bi! 0x_ ?{A^Ұx!ց.NˡM&B!d"(`HVHH5ş{t&hBaU |*O/>->}HMcF?z;w~R`!Լ[%4̈́C)1Q2 FAk\C+ /G`~ ߹4{R YQXDn݉? $:ާJJH{NU+^)p*Y|aylo+;kbp2$R\=&1:meW.^Qmcf5Y9DYU~B~E !]Z6"I/9:4o:{v V QW0N;?: 9z-@Uǵ΁)ەׂ,v']їїiY}=z{W0ɨxk;5CJGseB2Yf;c.\\zr*Wm'E-Z),d;ڲY\e+LHQQ: P+ zfw-Tes8QQR4u7.M9- ȑ9ss&ʗiwJ咆Lfg'Ʋ8n6ܮ :\1CH3e~.ۼ'#¢:- 6@"#CQt=XXd8Bo>I| lbE>}7td !d˶]S1,$1swAv貃?Y $+ Q]LLzGjcʈi0B_j o W xD ]s,6Xd{ʣ]wtd¹^Ueh4j:M]lu6ązxaT"+,aryK#XiɅÊcԜ+2Zzc8{BX>Oиgwڝ0D؏k6eVJ!d˖->慨ϖ֐!yu`DY yBޫRg ȼdL#^Ds{4꺵&O޴i'pal^;BIL!΄اȄ 2CϙhRctRϤ U$3!_-L~t Q*RODSD!2 տ!!PJE&MA3>ЮPh'ϪQ3 &)$4َl'`q,ph 8|}7) iEmY+YL 8Az`tWTGДK1d"MQSCY+D`0wֈ'd+á92*ׅ! 1!Kfm-CG1|NscK=qa>۸W8EG;$lj@8+'z_Cxs-cHq8\8(J5ŰyG} _?  pDݎEg_ Ӽ#w]|d؅C򹕅sɬexԩIUxˎ0,: 6"!>}V8[;ˉ$%bkX̗d5|fԅB/19^\\̘z1GmLČ!"8e)! ,CDq F`w"L옕x~ynqaZsSaCeˠ)dCwwK/G!!>ph8l!jHPCW8mv`WptJVΟ/ xB/(Tp7u)" 2 BP{;!!).OʬNZoG2"Q,X⻻NQ6!Xb <$gle ~J`,Ė( f{YC*%=䑨CYpSS[}[SvcS'X <bmzMJ %W*cW2o `&yۂǒϝ;ܵm[КLyMܹ( D<6Ds2n/J 쏉鶴䤞ͶѺcb`umZ ȍ&橗X=d=iV]iٍ@'(u>8nԦ2Qe r2Ԑٮ!ۘDS2y<+Л/H nSFM@73`9d-Q73ެJwTUHFPP*^Ep/@hUKQC@1Bnhj, )f1 ' Ch?>THq7`kΉ禝B#'dy4yx2f+?UM.:XLykRcgh\>S6#P&(B4FĿm!32X'3e斶maWi r׹#Rů}Z|q`tPq3ǜdv" x۞"0)>]N r ?j*w~[{ű,@ tF:C yˤlSTΛ =2,OV=8^$^R21Gތꡙ5n&qT\|jAzF{2ȡ r@5dӧ0peS b>ՍgSoex\ ?CP{uEW;x2 .F  O*CG߼Iݻ,:!PkŎ*YwΎvњh ^օ dAwb 1әU؍h| csWgaڜӥ·tb* Nޮm+@^# ݽ5|~C⤎(oJ=7d/ߡÉ.sюiK~G,<ҳbYDntBG2!*U]YaY֡8l P<\q}JێͱzXfgQ_=jQq՛ޣ;CBTUS VBIkBz@'[m#C+e]IRQsTkX c&ZhDV.¡)]]|X{N9';Qb v}ap w=bB|ZDA4.h1S !|J b6+1WfvTSiV0$,F`AL[ aÿ`#/Eڀu8L\Gɥ0cOhX^G`QL^PP#ij*#=b`~N= d AE7r` !qPh=Wb}wU`O0MݭHb/#n%TU6+ԩT㙯l2Sg2mYFָMw)5G. zfI lFŲbr;x\8y'EXZw0!]+L[heoھm(Uk|l$#c8V/.X}O#(_ȊM&>tK6toTN$U[5B$$\4gHjhZ?H옷#t]dCxxx M{r ߤlkOQo)GhNw@|YH;ګu'd鱃$h>@#6M?RA*9ʵe is|d4"iDAާ^8)R`ǣAdzŁ roL k ӏ ?dL[jFHONM6} |ԃ #9HT@ETY D ɤ ͵B?C*8SIJi͹]eUPq=%`@qYw,ڂ 735(84qC\ݝitqC$CT$C37I="D ꩎̮*Mw /SgėWǏ4U[0B_Bd"tͅn:ʸJEɡp*Fg.{VT{ j4iS@ZX(2OsIy\Ҩ{L_!̎l-+CyF&jȴ9 3!v>\/loc)՚- ERL2AB/ɠRL B86tk 8AI)؉Mg=a1pumIi ) ᱞ|M tk'y2/buu]wetibV׾{:Grgff$9ቆEDpz )1;P}y&Qţ{ӄY! O 7rҐJ4As.r)QRPSZZyP=:g\+SbmCp5k Am,WӐ, BR[ 餇۝m tۦt(O=EtNE/|p/Ocֵ3.ח!d;NǦ۰?{ƕmE`!Fl= ,VfB]1,IADH##11Ad5ò1X'e{d2N9ܪڪ5US[ND559?s~u=C6TD4KECq@qs+l5KB<^ _p3t r0}.`۠7\]tLI_|>>uM}a@u@Y~ ԓ/E+īX/iYрl,|GDٿ#uxFYW ,{%L-G tA $1eJ]/= H#LffU@;t%N|>uBPG2m!2G%}RZs^ ”WI@`5gB@]* ςZ,pg'>k9'w'l2OǤr>:zOWQ'^y:I,sK^~R?P?JfꅱՀhTOgsWC!@V3Ϧ1,N r ΎϨ'2bגzX.RVԉW{> '_.OmpO~ϖPatEؾ%(3p+ؕ g|xQ )XΪ!2K ,N m#Cx'o_W*|;t؋h{>6|ۨj?R)mMヨ@(~ѢeUc4z_$b~-/.^Zq򃠞?^\CHՏ7fv|,^ B;ĀLU P%>3@а*:S)۫g>Cfa|YsrSqra}X[R; |9!@j4,-[5*%-ޒ ȎJ C+mmOc{Ws3UOZ.\0..{*JCE,n NGU:xxvi~O%'1(Xu_(t? @wIA {UNqνo<^O+FtQEY ). [S(w(i7 nPH  .XF۶uR&#:=y͛)$rqD`C{"cPRb:HN_^t ҩ\GYఱFo$ >Ϗ7T5?{gB&=MKHEbf,If z{u'ʸٱCqh>c4ڽ*u[l<@*@WSW߹cq=>P!͑u[lFl_ezy%#Њo."?^V@qR0AM's3_ ( Z"͗*ͳ C/^}tŖH>Xxd?;; AxW2Frͷ?s B%38Բ5iI fBŎbx㏿9/Y=lΝڗ;dUH÷2ķpMVY)ȕ<1 _џ?`{'m6'OVXDXYV 5gY8?8vR][t_~nd*q [|ֶ W R-m +@`Z@guH~,ɡ{6x9ƖVU_:l#}3C<_~wr9>/4iX;=K :pWnEfdQ/ 8vV T_p믿h2SٿʛWBnM,/]}ھܾ Q-R$=2t{_~#v 4)H+8Z0'pe [_`_U@@0$@?_ ȡg=FBj!~Yy)0,.(83 ͖ CQ@V]Pu7H%| ksJkkrFT z]SrAql]?d/Vĥ>>$~73/ NVrfߍOl 5Nb2ʬ˖Zj܂J)ujrꩪ_Z:GB1g vJ@bH̞7?PzD׏JUzDzNk^r^Nk5XN:pBGdyJ@DkOT@V {SOARqն $srW-_^ٿ^zV}@#oRAـ~['=xtXO2euIj[W/G d^'OSU+l5+):қ~EQ@PRrIz~$؂;[}_uG ղޏh2(%x%=ė~ͽ =BPakeLB,] =_ ở$#[Rl@Sbk+e{BZI>>%$Ȳ[*`}G 3>;ziSC7o^y]s3ƌ~ k\so~?{#@<c^j˽y܈ ]Ȓ:X)=y؁ g>Y-\҄|"oFFc)g,D lCk|PڀlڿġwKjV}/,nV"au.G+Z_5U\^8ZyelAۮW@6Q-~UH`ebkXFkoIp?P\~zoߥL_ꙈwxQEG>^6R8~Gjo2d}}i @6Ou1͊ ,KKm4 T]pU pRXrbC"KWrQ5֩'*Z,)#7!__'e]L,mGz$sF QKoj}\qRbA=(+TII4>lE)[{c E̺7&TvHͽ,_{%z:|t n~o~-u[(r+􊆑*-=UJ |![26&'ֶIڢCle<@HlwU8& .ꞹ  Z1sP)*Z덕k"/;9 =l#Õxg?+C% u\|D|Fa[DE @1˛y<$ȳ$gp-?98;x_k1/X:& D@}ř x_Őn`}i:H@jڈ"7`ВH JR y`ѠE=~ס x dSw*1H"?\H^ ȹzIңҿӅu1C6Mn+ )y\]y: > v#Kp,62)9d}]EU˒;  IH YRHidFg VU>coUE" X@^}SQ  $Uޟ ^K7sJKxg uAӤCWI۰rЇAӨUn@ m΄GY`Vo( SGVaebq7Rm!@S%ܔ@IdIfr ^wTI&cW{IfWqϴ.-(, x5WQ]w¢GS1)nWXyxC6EJB$DF8YXP*ss^N@(SO#GqjD@6nhoH,a-j +[􄅐2w'7o| g/+ ' =!V4Q7%dUJ(+ٻ }VB{|' ?&\W\TѰ]P 1L^ %S(A29pܾ#>@-y%QKK O?Y`ybog6S$W1m wuVx4`Qæx81;\]4e]R/:݂i̒ n2jci\$3VLL ߟ;N<Tf2d` <.,-\#!Ph ( Kr\=qfǕ1V׬Fu$ɪOM) x-r{!}qj%?i 7% d$&q!̬ &| @(&%.ɛf5l6a:vU`QV$`I=$Z*ȅ\w:p~k*ٰ,XTDBiU"`~4kO@V#dC{T*Zs[{StC#qy$d7:i1vPOSHgQ:@z-CM./τ9z`#,aaд+d~4"\ LvL c#z! 7ըj)È!f{.\@r}@ڵ$a$+;wN ɋdDju Q@Bk:E!.4pq=E(}F#BM "!GSݎn dϑPeegwL[&Jd vo W '4.X~@^z W1D1]ؕN#3I{vیYpvC;nWN2izrVC:CTCI!JZh@c1L\c-y l)c@L'u/OnԐvb^wnu$Pw 'AAPljZnB a27{=XAt/̀{coj ;svcX{<4|lbwRXQYz!،TH<1T.ǐS:P×)aHi1x (aPcx)*"x']bUxjuS&J' ߣld!-ǐz 5P.QT*tgx=:9npgp@%fLwUe\S>SFJlö:Qƌ)Lj ]TOHsb)FQ7IvP,eL 7zөojmU uN.5@/! _GVX 6s:tFg̸mi))6fX> sIpʰ©*L {Jz=H$c x yq PCU#ʮ5Pld+=Sb%P.v;&פiehl`B['%l&LpO|@8|`{ ͠MIhޤ`=UOXDrdʼn N2pi& sf/H-cۭJ% %=9oe錃yq,_訙K01TadυAiXAu| W IK+IN%*OM'q\==1i5XI0o[I2 SNy ^DY2VF4[];>]p|řzvgoߠ:DhއflmY. :p}onČ#}>[V+e)IHYلz7p;u (T β2jAͿuh IfއH 6Z[E9Zs7 N9OSCWkIR3_:P@*G?3s4hз{ 7*ZE޼~Z~9+;*m/ZNA D,ȃ| &̢udAiay6ٗr ~T-ka-:n|Uuw@jYiNN #Km= :﹛Kec]SZSoaqC<]__^|w T8O1a]F$j)geтGOK90W̓H1ɲ䀿%')pV벳 hy.d44e 2GhJyYDDE֭\>H3RIhU3t,J+sGiym,*:@=ChFM*%/K*(:8my{%U`WBեbzR3'vN S6J+3Uh44%ԄqI{BP3+(˦VBH+>kY1nݴ{4v[VUJ rtB@|%!Ɩ092(@;(&[BooCsJlqJÛ4=gE@TI]ݮ鎿9K&'5x@(ĸY㞄*Ȥ{X^^Do#MCq vcwYof\;5IcuQֲ̎l֦JhSr:ڋ$@ )N>2xJ3u=Qujٌ=(|3toQ? ۶ϾDD<t`ß\O= rRc)Rtq|QDesa0}w2XF" 3af:@rV[Co0{34 K$B'߽4.(WIQR-P{klB0BQ2n F@)m3uN)]W\-П?f N AWrf90ρzz)v.zH}: VdOFCꇚ( NcjZh.>5)wI1LVXakGIhj@3NN,2ܴ*N4_J ]!LhA)麁zasy`b Y:p2_f7$ 3uvA=9o#S@,\L=5@-rb6.Y.u4S;DJuj Ogh`4J; r@O6[X07|*Zޣ?'a@YU*O+SUfBJ?s!G>B;Qj)ejsI^:Rg*i eBhm+/EO49 ,QzlsI(6b IôɃȭảpێ́Di Җ2i,)͍9JGLB,aX- n<4-_VwÎ\` ˅n5i(@X6|أD5;׶=Ll;J]š65 NLI/N\NG5YeImiB*UNbpWg}`(ܗKa _WΏ&v|M14֏s#?"&f?"(. E {qYCqU D]!^^NܹB>%~غ 5̎g}b 1">{657i 93Y_glѝٛn"ŐSmgANB-f;nso+wMIQfe>K O֙fN7Ӗ3d6e 80k9%A #@4LA̜7jCA'ϩ/>jԝ#/-!gCLa`!Gsb -Kȹb 3!-Xrc/DPX 7/eg Kȕg@H,fvQ/ ]B>oO\=D>҉SwO[ \ل)3P{6 ,co#!8*Lpzn?&ZG@81: Ҡi>!7-S7♄ g4EFae,-1,A8KR N3> NO{ F$I4D0HAbX52 $aOb cY6@z,4N,8YBP=V*5R.^'ب1rZh\b - N͋IT{L#EđJ5,B'dY$FգM\;)D"lm/A#@<ʚif47w1I!C*0Gpm?C}!g^=>Z#zX[xAXś?Q}}FJkˡ%rrvK%b !%b .버HWB%b XB,!b Br c,yB--}Klg~L$wУ,z%ϰ>cP 0(Bad!%ϰ>Hj?g XljrEzfo礐R9y&F2D"h(-xG{D$0簡%8^2܅yDN%զ]c|u!{Tw!crG f}&M_nWdzb)l6[níz?^{owٽL6+RZ򣘑f!?54Vl^!k/^\xu5@ @xk`k6/OZ]Wz=_y|ƒx`nnsJsJȀe]m<5;,<'Yj%BBN'i2RH=ڼsgX=2?lnݱ;8٭Eqm!m b L6_ozE/<܁mm`B`cN qQ㐨T}nl/3N!:uRB7.ZypJ.ǃ dku qG$ tKf /uuF{HBQ=&y~W;r YNL 2B*MUvW@HvoW ~ !5hOv7͕NL!N]^wYpכ{C;:)ʇ􏐅+*$~LDKmwr؟&MJL-6l/r J!؍ 鸆\)אru`:!Lψڃ,v}-ĭqu|]W v aݖtpѽos uM{*\tM&M]uP{m },d!`Z. eP4!zP<-!zӷu ahŖE@Y(M%zdlnֽ e=,Z%bBpw ߆vщUgBr3WKH<;|2~$×.^񲬧W,k,=`c$ʖe)_Biw{L|.J]C:tqw̳.d҄\EBm\wy7~vv_M.P)#-m7o!n, 7o ـF`K @yW^ MUkV3M}LSޅZZmm?̀ussS4^@!L,2SH-g,H!EN!P04uvVtռ~g"Lr:JxxG.^sk#wY /J@!eY-!ueЂak~5V",)njsgw/$VWj-S4a_amuqI^7<_dާ_Aig__ ]5ʲs &(R!Bs]Hj`sG獂eH6)Q5P7SXE]jM+vP7S5)jNhmP7ū/ /?Wu3/PEդ)?r QPe E=o?EIjyBp1ʲ"D(Bm$u{L8VIIǏ_Jů͋wb_?6Ў-Ƶ>)9 |9[Kҥ,k^LgQe 0-&>i)$90rRv>2@Xv? 卧-aC?l 9d ׯtLry-t9p,{KHa 3,!}q!/[\6q!H3L;:e ~`0a$fގ 0YאE$)85ɱf@B:fڗs` =7C̩Tk֟?(ZBW:ϓR[G$1JKkGMạ{Kuݨz5C8+ɲ^c9EO(C ^ ͈5 B)kkEjZӵ[۳+! )~Z窈gJ6k,' «u84\%Zɩ)6&E Q5*j@̅BNt" Ek%+kjD"J$ WYAJT!qK9*xU\N:OSyJ0 @/a'd>&.$ sHSD>Lxk͕(XHMBbkywXB KHq, l7\wIENDB`awf-extended-2.9.0/images/thumbs/gtk2.png000066400000000000000000000644671477403510000202430ustar00rootroot00000000000000PNG  IHDR`PLTEC82bF9~TA¶Ƚч[H¸dL˿͜eM^IyUG]IÊXC\HźbKͿŻcLב`Kú̽ǽŻʾƿYFĸwʻĽ¶ȹʷƾ`Jǽ_I͠Ĵǿļŝƶ㨛Ϻǻƺ{TB̵ӂbT՚̰ĥXGü዇ҀVCxj†{ɛdLi[uQA}ws\Gqev³٭ɔ~uýѷḂip`]VSˑsmhdfTbxiNљ~n㶮H?<zC펈4MXG^Cp˵ّHe]#yZv1[n2nutRNS\b"NeIDATx PW;2< 0 `B@e@4 KEpx_[&Aêф5k[neW[{9= ̍zq9>=[o_w߰m&z b,{blNww~fdf7svY{ _̿;}Mw혞ɜvzz|~&rofnjG>ͫ%70xczvrv6}|fnlǰt쵚W%^ft}lEf{}/ _`+'7O77h\f٘5.Ϫz Aouf^i<17ۣFynӹkǰWPnnymAf_y/7up=\ڃ@??_rv_{ڞ?>l]TR!):iTn3vX4a-?r|DnYvWvuvZaB>Ⱥ۞5iWwEtt+ǿʙl MbhQ+g{f4zxWN=jڮ21ϟ`x^yo$^S5W?6S?QsU3;;4wBf;ND{/ǿǯ^9Ѱ7 c^7OG^f^m a=9n-h{䘇k39fB A]1xL 7Ę=EX4~N{k ?#j2{&bE5G_ X^+զ2^`1(sb,ǜ"bqjz l+71XنǶƜR,| !<@SQb+Sg xiuAJIqFdUsndSŚЊ@tL[X'0BS,$WS[j5)b-o  ,Kjed@mFiL,755YeȊ`4ScSS)iqE 9¼74)%Ԋb!X0*;FcqFAAOEV:&[(*̩nL-o쉸_QRhAntE3,{4(MW[ڞ u$E=՘QhY(fT**+).)(*]Ќ^B\D"Qyp,۪P]V-HЎ],Yڭ jD"Qq*+#/ $W.h,p=CxXvqXFLU^WM0k=5(u,FB8 ~`!R`t'ey=7R’[Ru!U-K+vɓJuV4KTQ}!#Ċ\mWɅiꮮ Ԣ$LS&SKn\KvH*rឌ]:i^WW`O mHU(rB,vvl;xKK eN tBCOQĤn.=Bk7r"[xSRe(.3}ÚcB̌ XYgZ'86ذް,aY&glްt]X!kC@a&"oXY&/](nj0$K6\t/ KW.nϟO$l[ %''EmI$W\?ܠ[`~ ĄmG@v͛Aȶ7,\|եo>,-id$6 B[Q~KLk|+#O"cЉCBoW|t-aiQSQ bnBgߺu_=4G/X)ABxb1<\OP\>~mEɏ%`cNٸos#> =HҨW)|Ph ^VP!g 7&=I]Fҫ- dҨ?Q1{o.*@ :&H) _Oh! UݣohoW& )JHj8Ah']!-\C?w)g$4uA@{_h4>aH99T況BbJߢ? ҫb 6"QE_0 Ђ?bvt+*&*j$EB<|o `e0 bcJjᷘʛ+[:[-ݥ* ť_ںC]]QtFbZ! [Jgtj- 4o#mCC7oRc*ܞ)/c~~.%aaaiSjmٔv$BZ=|4bfcC|! X,PߊTzRoE7nlm9PO65?w$k싋~ۜlO訕ՔVc,D&{~b5J([ -432.m)de7l5ES2Y#DbG-1Jn,{M1#aRI|"!8x~ Bwlױ׆Dđ#G{k1ܡxRIbyسɞoX5bΚ"Y[d zZ&\~֚bZ[,Y!o ptt a#G'ĩy.+rtBwWJ3J ÙmC:Q(=^DBYݨ"[X91!)SlɡNd )ŐK؈+i! A rN&btߊ8;%r ;8H$x %C*XF`'I$$ ¸[[X]3Z=clOOOw)dNi1oϥ T BhwI$w^1L!S~)|SNsQH|`.I=ᣝ>ʧ0=:8-bb9$)>@BNs|aBr<7C;sﲧܛ:x7 _zS;2buX1Qą[BI/K q=ܷaM-rOXj}:6ާ3Ci!N@w;A@@7億oاy|"Xp>A}}/Zjn'֪Z*[T-0QWE_Km/;!o.)$aþ1s6,OlE@!{\+3>O0GVL@g'//W(偮"$z9!qrT Ǯ$Hh#*[WOturGrb ?Y_2<ӨvȐp!KvϖM !B9vx|_0;*d]q`sXy>qWܯ.̊(jpqaǹ,5o'W)̳biGrUא$9"itUd-H7TתZ+[T $TU JtVB'z%4I~B,"E4 ͑1Xi/O.wDzg{gt]Oe繳H7Cp;Ah{\(\=\^9X$zI!"TA\.L`,H wP\NT*QNɸ~*>`Y5IQ!-29 %%=R%ܝΜw%U)iT5 I-:>V7RF[RŅKBLe LXqZ&`E+J3^'&+rXH0r!gd !V$:)X)G3HE<1{(E$p`T sBRȒIဃO?n;Gf!E$jn$mwYh>c?7. Q8b 1LM -R7;l:lXppPH *LqK.Z t- !Ʀ(6Vdg(3u¨ˎs;D,+Of>]\dx||-`ߪ rEaCOhtCPhtp@Z!Wunr V1Lj'Y di,"܀#Ϋ2*|qvm:\W!LqHȁg Ĭ"4et'p+ ul-sd H %V +Ed{tXwe=<9 Vk-#2]}i!W̙v/eu" v%$dTBƃQ T"I90HVQe2YBDp mY=ilA!너Z:rsVYW7;/)zT 0J8sxQ (ˁ4D֢BֹD I))bz?||ZItB,,  @bXVBF CN,XoR FBPI{]_4g!#B2먄o#rMߙ;%JH!k݄pC<)Dj? ~ KqB>>y__ g?|,!.!*{i4榺:o1"8/UBS!\^J5NGs8#xi!r,?e}%r%xC" ^9ॅL~q/Af\;O_ iﲮM0*!\Odrխ^ٚ<S-Fn?P-.! %%Qĥlm+,'ȉnc2&emĨ7k8Β$5aMK 9h94 1&u:BVYk#yĸ"Mr% RrKIBQ+QUn EWG5`BJ%)Doo 9`/%(L]ԡve!\T4h~&;.Q$vl4ŅXgIφ5G(!z,+|ʈ ODEx7G8&uy=DyDQpY/+j \" +Um ȋHz2B w>COɚ8M[ ⠄pl9ᜳ,;4LjnƊM݄$krƃbO_rSZCvQT0h pGe%0݀A^Ë%N$zJJ'$H7! h2| ݂JQLp iJHQE,Vcnq7* VK TL!PyHv/D ˹6SIlѰI<;B#(XۀGW{U h=C #IT+ݮ]rIrdɋ!%8k]CD5Dd΁kRRBZD_ pOrIo‡8esOJ0M,Gdv`s>M]bd/M=΍A*,nRS_5Io7 !mc*?³& LxB@5:Unm Ņ0C^Yr1DD<"P~uYzB ỤQ,cY5NH!g`9!<56"&] z@1 _k2THUiIhSo5A[TBnUjYRBj //܀a@c:ٸJhbYζ/H!JOglt<{t :U-%p*LLԓ5{uBY\McESsp!n?̨UVu~GZZH733Zj[n򑄖V=!A ! _hڡW;Lz_ %鳙te5)-*d!U Iue,ΨZB 1K۵4Y)^T4=f/!dEt)5|QwVշ(;UpkRVɋՆ!VWwC~}X:tՙ~́cz<6_zz6rV6y7..+*0Hb)httqjIm1c{&tg%6ChL!w7+kw\P/ްy9&|J~P:1t\e)6nߨ7Rb.1z>c\OM)>Z^I-?z08CU'/xF )֝ :='<ZB.tYC>,=N ?P308ו %z%D۱IC?_.+ њ]JQ]l'D*!q!n^t E%.zkJ?Y[>ڂ7z?"l\TRW|1D'BQ'Yo[^H|VD_ʢp4($u[sPq?c,'~Fe;d<$L;d2$k= ,8ma/ݴ)~MSccjJnxɱI m}mrc?de T0ߠHxg*/"fL_hB(l Em qjJ8Cu5UPdo)YtgAl:Q-U!D3g0EEH>cݽ{z7ˊ=ݽyធԄS+-PU'i|@mu&\h1K0`OalN߆"W &Z&,߽DQt)qO:7.%ETI˨(I3+&/r-)*N- fm}|3}G%􈐁mj(Ի9 I"Drcיެcjj@ܖm:;F(b9BIv@A鵵խUCUTU rȂLj RM} p.0.MZTjGPgU((/UrWc>7WDA=' Q.8&ڔ)  SMtl3o=wG"mBn r8I9V C9a!ĹͥDžyCQ'DKw!q8(Z pWXNƧ; dx:=Dd.}!4GH0Yŏ F"lb'I_%vuPrix֨cd pI$~^TiOBqLLR P7/dfAW("Ut 90>>7' f6*B'NDD +!hy!@TcSz\ !gVؐu}`A=@5#CO>u%wY$FF*f0~_^Hu6]sFBB IҩӪT))Te!!ZXܸH/*$.3/4B'pQL'wn]#6ʸtz EYI".Kyj{wej{_7fzxBD r"^s2o*4D~!GxF48$A3R:Bw?j YI'mPBg;Q ϟ$ӆT{HM^ܘhPmo"|Q?K_j !@CGTGjb! ($U& trGC%8^\Db4n_r=!%t Q?t zl6JoV)[ZQWz@]vh+͈ʪn=p} !J Q(ty\R@%Ę>iXMB".,;d7 ^iE;17ؙn8אta* 9#ȡ&7||nPX^0ok l.R.! cuĭMdk rN?/|`@Q"!|Ķ_&ٺwNKJ4/326(!+',%.cm?i?{rT /Q'(t>6ႦXaH7QGu:JD@H9[l+z$ٿtNɴ4 BQ~`vjݵIrHNŽ!gĆ0l/a D`fPIn3sJ4YU][[9jU ˇ_`:Aݮoe7^eHq7}V.NaNXC)pE\ThX4_1a8dYoC`kݗ*Zw~;L"$ iިQT/ ^o!NjP"!a8]!H!|Y\t`,܄NLĎ6SrẏMD(2 :晙-#(ԚA(Q)I9 R`Ad\nÕ':PԖ1(W ֯L QckzTY3HNa!&&MGL>fqgG̹͛PExx?T4:gB\{ӢF[e=5@oQf8Bc9W/ y^:k]@6YD<rHԂb60P Bh(A5f&tuTb*Z.kqssԯh] 7,=&A*oP.3ҽ AfGpmۆ%spzB^,ԥիZs)kqV#6c/ȅr!Dli,QI)M~2KC g#ˆgU'A s _E; A .B WF{DZ7LpݭV7ZH'PPNS [ep0:yMV'I`YNcBӺ[+X\ZcF >ϠɋTGvX&fApNYPR[ " ?t'Χ0 x:7z˵7B|DMN\()*MB*JTXz$sSCTdOF3'Tmu.ppb-ٚMLWt"]BP %/W N7U}gK2F(rȟlj3M&5E=qXN )X_i\OytB{'%Nr8qu|*_0mmORpm2ReT? gHTtO9ޑDLhE>I K{J Y!k)DwrAѸ/h4G?!:`x4u6Xm{0ydOM% !St1 q*c8⛹BTtk8ҟ$IV/G2TG2PS -|۝FnE$%JƋ ]Aw㝤'өmד6Ӭ~v5Ϭug@ Agbٟ$aeBOCde__4! rx 9nu#!Ew?<'hk q@ |\fE'!AGbdyjYjt& `oj麐LaW20~]N2kvĎزg\{oYc6HOe$},^HրPI# [0H>mϼh ' yK. r lr.E@HZG<+$eFZH,*(i]#Y%H^U /V#@x5kGĈ(sqMrC߁?nYsFI8JvW&p(A~;G$zI@o2e4??D2ȁ}Lbo@4rvvYxa*dC?ɡ&X@bC!O҄o- <;sh)'JJFa@ݺًFa@@(Ak͒9°O=d:}ܭ'N"M'&Dָqָ22 0 ϪsRqqR^TTZX2֯(a:D #@\S "Q'$'[ܹuɤ}2V/`I 5U^rl[޺6QX-Y?G$z?S _) -H8 c2Ʋ e'ο{Ω |bZ'`92B.͑aŧrL)H{a%亐_ rQ'>c--<6 0PD=+n90 jDϠQ[ :VX%%u'KJJj~ds%ηyípT9\%N~>څ;>|YH \UFۂ C:DPNF9:9j?:tDP2fOOИ; o @ 養,v=˘hwKh78\Q59|hSc\ХF`p'3@W5ҳz:u﷍ͷ05<)δrUmհk~/2Y,:0O(;:>#\6'<]̫854/i졒I@]S_Q\aիOw4)~q}G"!.C>/b~OB2g|E꿐}һ)[dh _I0 <;(Ǣke(k;RJ{Ke ŝ;w^Bx* }L[ɤ,&`Rז=9\>'y$n&"//= [ EO,挌,v[w Fd'~A!1w^>Bj忞/5<E2хa#mC!u%{ڥ+s5R `v"- 9#lꋵ޷r(<(Q;aݍ'*(^>]~#OvA#Rt޴1HG z_IݼYq@@DfbǿlR|P6|jy}Ix<dH>wpva ӓD=^SUʹF;އl)$,D-8vVUO@PTCujjjm4& [5*b iY-km "^hȉ"#^CPL%|6Ii S~'¾Hȧ˔>cA Ʈ §#lb0^F@Ű اc弌L߳@/h2y`gJyrQLsMa66g3s-=Uv]>')sGş.67gZ啚ް2 )y6= oi?ʒcrlhc3VVPIqCao*O#Z|H0?+ QIMzYkt }@20HHHF@._q>2pmf:j;sưta1H 60X YRhw]RNWźzg^>~KEŮ3rB{7k3x jcW_|qKo8?5 PK& bJg'טY:4Mv `iiϏJyCvno1| _F1.=hDpUֶʦ޹+smo}+B!kAQ'[ ~dmhO,77Ok]1EK1cl((JDqڭ^}nego)h z]s/ݽ~ 囥w$͝EƆ&4(Z@$@!|M0P! SgI0rkxbi8~'QI̫Z 86az|$^r$%(utRZ% ըiQ$O1LL<<^'pHfٺ[3SgIc3Kп$^Xuyq5)vvNwQRQ\Rv2a9t 4>Yc'K)sJ,ӡgU3 O=4. g":4EKšc/Hq-z`]ZHθ,-qÌ-ep+⃇wVzJ axHDX1*x QWWK gaANp'|ԬKʠ$b8fx_{ԘARC("s5XI)Bg++ AxhtFT@Ȫ#qsrS@:ul<{2>-IlZMI!EbHMC]]IɪNg8?9Tup(ð`"5/'آb`f@c/0?^A캿=|dyGGHԍnꄑ?:{uXjŻǘw&QV6zw݀lǨQ7>wRA@9Fz :=KTaϬ3Ə @^x9%?>H^HI)}=@+Q5?:4{ &)0TOx@ 89&KڦN^{[CC-];@?b41Bv LVHyU@F)D"S h ;q@;"N ù| ,9pȂ0~x=FW}x? 85^vwwM[%h٦+]{B529 B 9lAHq<&=\+튓bs b7{ ٿkP]Q@rL|-(8ZJifZPܘX;%#ήይscmJ'ė1m+;\Z龲 SA ]Oy#npg 'WIXT-SZZB,-%6Br 3\lwvRv5VFZa:p N+ ,~[V8 b["RK85FA12c< g߇~>DL(A e9}"5j.:,I@4"j֏<]obrGYb;U";SEFYD$ %Je-(tq[=;heT}!o $ jp'TӅ,RQ-Lj %HfL3^Etv,IL ,Pq#H& hߪbs┍_ ?}I=f Ld%Jx)o(+E2tەv+]vP=4&]Ht 5i \xI=9s?҅v#%(>|A$] >,{3ŭu+=zmo1S(PZt"H$ ,vܯ)rIYb]" 9T~3Mr! \r{U>2Xt-BnY\A 9y,Y^O 5Z0G86Kzy(ͭPte;RP@rsa6DNIDY-f*% m*R$BJ pPz Ti)Er$iL?(XC_ξAӀ>6oNK1 om5ulFX 3H{V7Wn{2-+1Q\Sdgn&Vk8+2 cřܫ}!C6PN"E @:&]#MC @5u rzŮm[٨Iz3ZU:ƌk]#c#pm4uCω\5 t }(j[&a40;-\%˽ >yT TGoɡ#1ok3} p_4'R@^2a`sp` ]g_ gbQZ=vǼvlpEe:,|a'X[Eȓ?z«11 z KDa.c { k:-SzJkyz% PѳTeymf hJ^=B -dbl?CAݱ?c(VeR2*;K=km-cxV~b nZJ]¬î@BzJkQBP"-څgϬ$:TEJ#ǩv]<'c80y~yt =c(y 1d"兲=T)1x .pjX$@X,vƆ'a"jIr*H:tZuDf}ha,U|'ƠiXG*; 8avnx u#1ҠJiǰQk\vp[Htvu/()'裏n]WoeܞdRsay&cASalM=t\Ŝ=|2h&욈N Gۆ:Msƶ]T1:IaoScX+NAC"1bn5_5n&hiP_HJk( VX (-kϭ;}~=}C8fƮ^bxL']!U4SW cثzddUmYy@06`Dޡ=Mm P=1,okc a /(m0þ(!KyZB0J'cu=x .ؔpXJ=OND~% Ū" X\:dfӊ/:n=!g`"NVch3d@@^G7sHpwK݀f6bl h1 FjWQc1I= g _HI <6fʳ蓬@HC<I Z\jo3 V4'z  pA:@-|gǐNz % { O1V_fv.1/HI^v P"Lؕn- Uvfy2/hS~3O"J>1,u͛{a\C8/>d(j`okcw[@m(C5:t8(e\t؉*c<x W1 IzqDJn/+~j2Z" W೷,z ჻{ʥMY|>m@@Y(B]_%1dnaF9C>=j#9#Zτk%QL 7O[$=Icߩ`7lZ"@. 򵀈$kM$R'u\+Gs.0F hk$К렂YO;/_s?T\r-ڍ!.õa4Su>: NnKԍuḙ(ԹQtzOQڵ";0/}vɔO\zCBqQ~*Bg2*+qB#`]aȝ2*&/A ^ՑAc= :U@Wo-k68SZ8,$ ~&ӰP(`Ÿ 'fl.W)Ԙ̾0u ܁:CaM&50] 9M&Lmp 0$<~FR(64"5~ktKMf  !aKWE62 UU |V gy }8y. М1+0\apb ]n$|s#OoYlO?g_연嗟cSz]7KOa^CƑrg/啕1ĶQ¥ Ũ)@\4/%z ii ~Bn޸+݀C{^,DSd@ )7H9r%jXyظ@SiZUעFZRWCߢ, hK>h5zd1Pf?UB>ݰܾ=%Ak WH4 4 * B&M8vWin]eL/JryjYD@hn݊ *Cmu#B mɺa/Toի)2YrT< g@ ,v,_|7n܀͗姟~y7ae.52޸T:^YfebClEvHĢtWZ H.A@$Zb`~j 57=je? .kR$x'1= 4 {Ŝi;?0oXX4Ce KyPgB}%fQUT<zܗ5eLz *rNA`GdjaQeQ:-.> $K( P:["iw@6ǻ"JGr aYw?deq9lvՀwF e!" A~*b]RQ.%"H;E`("$"%,q!Mعs'$8>ۉؿyؒ\6+]r8:|ex+B2)Ka+GxU}{]Z$Q9qܽ $SJ>Yz|ؓ3ō2vTҴs 4SL]#Ӏk ũbXC⃴Z^;9$SDk`Nl]\5$t\ ]Z7Wt6{Й8{3=91'Ӥ5lX k LMe3^LD!̋o,uVq_bK X<vC&dlJDtڱDXvHCiAV[֥5 >3Dڵ#@&|Mox@.]mȯo ry>!Σ- k/wbz:5e({H %-fnBLs܎@/' L9攐2Fzq۽}by8F@"cd/)7%lØh#bPHdu^f:䳄 .@DQ>{' -@LpRO/sվS>!!ck CBߍڬqpM!m CMy?H\ؙ,p$ݸ\Cn2qarQNjb & !Ma(8#dō P z z^VX /i`**ܝfd7j?˔JABXOX~")Z堧4-a}Օ(IcXσ*B3 X (G \ 7*d;Wt FEN<\l?Y?o ˥Ҽꖫ_?Ma6[XN3#tTF40lE°٧g]2=-vw}z֢L|`'Ei43vzD+՜d˕G? ,Z\fUz. S"?Ҫ8ˍZI(`H~tD qG= [1;^߈F}pU(?Э ꉮG7.d|+>nQBO_}ap6 #+ٹɩ쫐~(4Zx7B)qnJΆB03147AKqgAxWtwsCV3/Vog!ooZEdנRH.|c4 y54fg_xXb+)W|{=i. Zy2Y7"\ua X9XsaqNHXZ_ GZgh֗Eh_VxEaĒ.váj*W+g*\*QK/r7!A9x'kh/Rr+S&JH2,2+%dae']_l1KwcrkbCȘz^{M]o=wd=\9F{bHUEw/&d,ه˪Mg?mo`-PePh#RFj29ЪR71/i(6-H^1Ρtي-ݯ^hŢ*SU4ʋ- *@b!P!AhBD&P E*x]ݵ-{s^ks9goyg&7 "=$;3!w.;[ e!Nn{q"׭$uxg{M۽@ b*x&7zX"1b|9DDAAx;-yyx)_ ևax/k܊M _hg{E=Of6[ᮮe:=Nxx{==0,H\הGn3x?rw=<7M1GSWʪt_ ˺t G=`><8><թbOʈ_>zxQ`S#=A")HHdF^^C, :p@P ~?\h Do܋{4mJ9GU؂v5Cx78yҦ'UDZu<4ڒ< k˂٭{CoDlBE.J!R}n o߂-[9ĠX5i#&-Sn'-:kn ifKߍԉ\U5asoW%֊Wbĕ=z4RXV/6$ _?NzC$?u`$M}+116vhhyC^ϖށɟ&$ u7wim 4CW-OIJGmW~ld56qUxw\tp]{[-4SldաGMVۍW'qorԩ!5qԩwۏbA֭?M ¡0?d#тh2RBsa!4P[wl}a CE&Ql> B"#<8qէ!6; " AλoY`1,D߽Sk&Ve9ΦA{˂aM6F!(dFz-byv/iiɳ.dqbY* B'#MMϽ `B\\x..'d.puN*VMqqILRND.'O-˙DnFFe5~j6 0)qf=FW FJ;^ӎnM;%CٓQR8USx՝ݠz(=v]2^ƽeN_2CC)Jxy9ryGW\sP2tRey5BMnO{{MioFQ"\J)rIn(F1ɜΜ;g|d'780 6iV]Qt[[>^Ow/YWw/GN].s'{R^#wQdV{aNn[Γdh EVKUxĴwC5W@nCO]/ٶ_JP&<յV C3oz'Bsrqh qlQ*?kw2jm=}^mooQ˶򪩑mxa{&sj*ņT\LHȑ:B&ؓh))T}J !$))4TLBD a]{Xuwn^\Ȣeeo[LB]!!%ܐ9NC?5!CAq] yiN%q= >r( B,S+* }fn0J$$8F#B!(d󿌂$eb󓨛)~uhfŅf?;O1z2Rĸ>1!#"Q lC6={tщ珽סmn Z[ CG{{TNx =T9Jٶm/>>㹍!#~`Bv]@IZKNx=<::>z`< ۤ漷Ÿ*Tp"x#5t"d:!Zy Y>> !Ae/7o1~BBh{CN'=ϹjXڿ{wapDS׏WzLdbB6g" Ss| S}lB|2s48xJ}? lڛǬ0y7&NjB q+&8Ƞؿ k`kz66 y !d(6r'LA SLtqx .$v⛦+! !ojxȎoYltP۽5v.v j~_5Y$i>-fR1D_#6fA**48R$G|66vQYȄ %U)G+dtM*o2[*PBG6_U z4Y=W.R0*W&gZrCQʬ/a*q/筐f$jGD\D (hezLaחI$WUVԲԐpZH!YHT, M/QL!Z+%Z¨uE$#Q 9b(v,gɨVBlD/#h+OI7 9J]z_*猛AȪi6%ʪYĭMHH Cʅ8_+VP+$ G=R墝,VLJ9$B{=ɓ"dHAHn8'PԄ&G>3B k؛tB"l6~Y4N@e`Zz1w{餾ٹtl4B c&!VT4g*mKW,Z!T#GS1h˚,d/ ̋vcV ᬥ˰+Axb2M#%7'KG],F_x$% 7%#7o~tAZ'#L3I>pBeѾw0+T*a+?" }F\QT8">=n IV\+|Mh#%\zICXROWXv!aZS%5õ) X%LȟzSuO]R(&xOህ1jV [P.P1~GP.C Wk*V7D"W.jꄯZP IEdAU;ʘRUn+p@?XXvzW__Jۇ6>jc\V۹'۸25p!h ۫Mon/SLjJ!1 =&;LO!6f; DD_fh3_KHR-"5{Z^]f>Ǟ׽W5+U!=(ᎁ%?pawl4C߿l_"Ym?hA=ė(HVHd.BHR@ "i*ڱϑVJ%SH q!xZ- 7H`De )Բo6Εt!ob;)|t&}l= *e *nc5KQ,FΨ26V|TL #/> ]`mYL` '3 |6|`^L*B^ө0"L7?[A/lB٦d3τm]ͅM ,ICۺ ){ g$i\B|#na4*Ln%dW-0IN{!Lj^/e 5;ñel0 3s%LH І [D6U TU=(³mPB I)\|BVZJYVM~`=xvKwY ,Bkߒ*,(Fa٤wϞ?{.umh*3!*tTCVlBdKj)WMHH_0ccU垥s$:EoO $(d0?0<gӾ>e ه ҸB[΀j5!!4(~RRS@LPSwB>I='MSzNvBxRdも}H^q;gUp//k.$-hqNBWYr8bua(|WX-dLIDumuPSp{,?/<(f}@(3nj}S10X)yC[}Ӥzs!$T*8O-ٗoC3|;an+o|Sf1Ɂ&PT;bGJPI|I7C(jZ փji> ;Fe KyN9E)94]{M$T4\ ݤM 1RĀi8#L*@ȍ+8BI;2*z.M!|䙀DQ yrPjSr)ZBDȍ@laX *yY'_k,TH%/8gF塚q%!T@pM+rLp[a L"ںyX_ʨU RSWd!a8p0^oӶ[$Md0SxC#͓2"<~f5kLfUk\o5^+$ՈpF~xi\HUB~>>l/%ޖ- `x=jYrca3rNGLNIȼnSF/Do fC- |Mo8W2ᦔ۵z$l5/z^0օyX˳Q駻I,^wXX ίBru@E)3/y´WJme[3!/~xiRCv#7>!/aç "V2bbrlu$/`Co'8?(^Y37KTK_C0 DB.ļ%1 *6^ rY3Q-.Am_!>˗/>2h{֐YT5 5Y R1:dh:bKd5Ry8ćGoů;I~~b iî>0fɜ*OJD ,25*@b5H@eLUHz9e=yoCB0moӁYWVdY֞TNrIR-EՐH0fsT9C(BB@9%|犹~BBqz ?c@9>5~C޷WBch!v˷waNa| <6C<KTpFTA/lJ_Q^B]լ*9Sg"̙K|ɞ={<jZCLۦj[ J׀d*}=r򘙐;/jmfcX=IQ(,>[r i_H = T4x$ *Kwv9V_zMށ+Wjfڹ^,gfB2f'%`OQDL!wҦ>m3V% }W]V>8Al:\#+pax塡˻6ʬskyt{6ZyG4 zB_mێ=^Ve )6:c|T6x٤$&Bn:ŐdBXB1%9pb! oK~A CV6nJCq6/[+}(D0!I'+Ki@ϟmtvkW/?rN/D,c-J}-ibJX.lSY~gHYrd͡}N,!bLX`0]%IY_d$礪%I}UU. Ր99v+3\,]-ג*F-WhBͮ/M6B1**HJX؍~#JrV.iO{LIZrtNfo*rpݭrA5D!rS^5Vr-e3 gd_YN)UqE\%ܒz1 hIK]u,-|aل$kH3Y; O]"#Gc^x Wֱ}dęb2 gnu=CGO!c~40,^NC1ql2YUY(fp"">~2Cm'Oc^ xKhtv_F;ñ_߯OE2 /iԄ{dp^O":q'릘a:mj_eY!!mœ/yˋgB//76xLGW-DK&}Fw:=OrN}@Qazұ5'Lɴ'%YOۋ1#z͈ sXz;g/ԐFMֳ'6ւK%/s:H7DۦN 7|pBcG8׌ !vTW1:\[bc_ɢdf3BvFN9`.ηfTC;!HHۏR:wX/y\oG$fEt"r{*Kj#/\ ,K<$|;ˁfťȩ"XN!aD/S!윝ɴG+݇v ; \L,t XC^kH汱,g,<[|Ku.}u#lWŗK5E9ϞqB5[ j!D,gc*OU%'pP?v^hMc+S &f Ƅk젾agD8'>}4q8eYH-nzҜӰ@_Ca,˭F7ϟgp\Ia*Y^k:3yv~V禄"E]_o~rv6:PV4:h3 gmaTb""E$S 4u$dWkb"p8b [y} <|]mnmtwZpkȴxބ_:9$k%ly)r h@<ShE$BA./aP,X*F.uȤ,kG | \M bC@, oLI'ZOre% *xFO e0 /f^C5{  ظkC")`_1 |El:*ǝ#jxu+ڲ_}e|Y 1/!X>}~u?.7d?~"kТ?42xAH߱B[ Y'uF!944"IULҮn77ŸA3iRq!"0\c~M:qn O6+0M5,G@.;?9:u-M>;sf- atD@.ԐMӀ tWŀOr;B%Uw!9;\ާ~~N[[- !_F֖ )<I2L*M!峩@Jbn#_fTsRteYN#qEV*vӧE\M{=u?ړH>{#Q8liTti\jƇTࠞ,8J*}KZΧ5sk:qnsv6"S?sJS1<l㳴V~O{{r-G$\*؛ "ZSn?B6 qXr)^b 4ewa[.S#%05Ug1 \MRAA55k xUTc55ZT![BBҬrѻzݾ}Y6!!Vȑ %zF5D(pJj_)}]!B5/re٢B*ve!S–:#Iz 4qvU)-XVG-k,5U*LW%Ϙ81ٰ D@9D% fmP`N nR?\ PZ~It*f6ؕnpjX?Vcwt? ` q ۷_3όi59<9gjʖylaO7#$*Ƌ@Ν'@Lr^\\ VJ tNDuԪT1,Kj@sq t2 p@nYsaѡ鬎AZknkBGV-դ2{>9kHGCj-Q(~fVSʳ UYUy{ wn Cp .N&7V̻[ >ǰ}H#!c{@޸w:h JI>j/}M$[k~Vr׉(s7Pry 38 .~- Ϸ6kuj22)L2!bR'x\5:1Nw'@ 9ul.Wa,Y1;N^ +i@1IbV:A N3v}$+[!U43Y8UZ۪#pQ,b6psW8) @zr׏x!o4uI5# O@Q.DeXfYn8@IFͨeR74@jsʦ3۝a\ì>j3f 4;m=8wvUJI*׊APzhWbXԬ:ShW+T>&Ȧ1@x=4RWh1\ip(=a|P.,h$PC jR@Z5tfS96Fi'?9߳!Z{P ^ zxl$ѻo%2SH%V {"/Ρcg/~6e~vERy 2$bJÿјCcWF0ϡ@nچ ˆ+8CCO56^sp^~Mrk2N4<ۇY( Kd,}R_5%8}$@uX 3L<$R2A !2=8$ҠRѯ%lEFV;TpB'jؔ^j<?C]Ԕ 0gM>1NXa֙,X?2`ZQ@ڎUܺ_Vk > =~? b {cq5"f]ǘsS11用 bx(~)et "vʡ2jSFde{qN <~0>Pi| WI c܀_RHQP{[0s'p'ȵVYnP˥JkRx+1!^>dsyB>, Ʈ_ȹu@n$ C˰Zjvx !T⠕$:r.]n6Zt2:Wu㬸@n@=Y\ҚRǁ nYRӡܳ)-2* 9u'Vq=-r/9j!HVsܓ쭁P-~Uyj!M\a6s%}yVb@> @z>X){EX +@VEvjcmEw}`u:{nWߦ>50upKr ȍk࿅c6G7rg=@!&V ⢓U*d\+x"YȾ"}OcE$)jKuF*Z9I 9~ą_nlݳy tr~wBĴluL޶ևdvVk&p&/ Lr@b؇N:`aTDS(0L!f. WėԼOY!a Df+[? lNYAfoe}Zx Raث~o&HDV[/[RxeZRyJ>:.:"@ށ7v18}*P kGkDV7ctas_Q@íq5;xe[]F?&BǘC*v Bp _i#! 5rO ~6=ݔאwKs?KTW A~k@*+G;\a_?0==&trbi4:9{kI曧v]lH*󁆴Z!u%lS@:o稚ƌ9 >%ſA^C*xzz. -S0./KHYZƖ>^9bdfWmoo i@E$V,(x Ycl%t\ Q2ᗎRY(=_q\NiAXK@=kܼR*3ȭ:} p!vSrS9ա9RHmTN߳@ כTj|(0M 9 gmoW0n!ᚫ՝-"V[%&:j[hbB 0>zg 7چ;[Zp|V+>B}_ipgH˶B96kS >:r'dɍGPHvv~ UiI]u}ԥf$_Tνc%7 E5.=frqz1`KNm٬X #krW,\cbU%w-IzST)[|9w[ֹ)ej0U@zȏ@~['#h I`A#sKv#ZDuz?FP8ut V'3a ݌fFLr5NML)ǩ.vsyAqp=2!GVQ"@N$3?39 ,FF9l?43R hu0*O)-Dd;y@x@xҒ {T }@)G_P>(6Ŋۇ'^/z /d$/%q IhLa6ah/4xeM'l`S$S8  Lna>xKD$Դ$UKMpC*U>zw*7- dqf|&w C@(>7ü` dܵ=nO2gG{&H>h-^(ւ#iԹa)O@%uu9d}#KVIP5֒`>&Ŕ&K I$ {3 %&xSB>49)XP#J.wHq ,y!.nsǠQ&4ƩNf).>Է;02*/Ս- 6q,[>eœW3MZ?!4~a  ~MM5>]9SeZKB*i  ]XK3y?D+OhFYnDv!#f1T|i yI`0y @ >. +RqNqȌt*+m;ԩaRB䴊S֩qV+u}nVQ"@rB2@#y6" L8$1(=¥ , AЯO%;܁g.O 0 ۖ @(\pGnY YSe "Q/ 4(~2gACش`y@ db^d3CMd ';@i -|7-Z}ȥoX+@Hw䱗┦( r83jMPr@@b[:ڦM7׀D0qv+ƣ`,ьҪtc-@ '!Zk-$.rcu(_P:.Q* ØÈFߨ@a0*<\X?( JϿ-Ƌ@{td]0 7d[,14 .t~rr1% iaĄ ?xAȠcV9n։a3;S`* .mRڵL<ҶթWe7x!8*{Mʅ cY&FB/z(]4"wI`2xBԦQD9aIQw V&~ٔ1&j0rl2qsL>&3?P5ԃ:BFяga ŀEH0 ~lr¤f~Sx P$ y /! %!@ŀ~}dP.H(COmpIy`pԨ¸jCe2]-Wt`Q gP9JfÀԾ!/sj Ʋ^L ]l0IK(lH 0IL(si^B /ƴx]G[qG\OmR]ڸHnJ1dlSNvHƌI uGRfe;ЛU=!E.\3 igZ![/I&Gy_` з[!8[T} l)3UPRvR,ȄJedVZ[޿,ԕ0Dɡ@BF?kObP [˩J*8jf9%3eK ƤG@.ѵ8 XD?*^VYNF2W5 B^PZYݱ"$zZBm-9H2@&C@0dN, 0" ШV`7G̅һ Y=jLF&I8: `ZBӂ_ԗMͫU㚕 'q[, ɵ8*YCB 81/@pit2JpHf'PF} pVXrF}ހd~birmB޺KeC'c,B>lʟa` $`x. &#&J1&#mB370d 0G tp>"HĴ`nN-;AY5k!AY$թ;l;jTu"Z }ypǀhNP VVw FϘakB>\ 0B~)FWJ+0É!&$u|AS(hp@*)KшB; })(t3ʇrY1%lX˝"Uw|:HG~F:ũ҄u"SYaѰu5,"[_Ð`6eA qXtSAC،O9t<Z'% *ң7(݂:ֻW)=$>>'QUfrU[TI;bVaԠIrX.4Ä3baߩ j`kҤ1XG x@H!֢ E,ذ j5۔At޽wR4Q}l6B}AXV ߉wҿ^h/l)o [+եIOOۧ)P:M~{u!&pId Z31$^۲{#K/w3ր](>^؞"ݚZ%0M3.[([.!] BЊ, a CxR]'53f-QA G< ;響w" ܶ J8-ee%mYmuxm ]3>&>? Yt-MBd(ZD@QBx~w~]=mD~O#1Hݖ-Z.miZ{֖Kw[[w L"!5嶙h Gu2D@ meH2`8bPR;nYae kp{'m, ݲfèaF@^B rBB߅G`e(>'#{lv9 oxت ^aKI`MXD"> 3',xuuw7x\ l./9MWuuV Cܼ9 @W&OF@+#z6"os zȜRʤ4^awuvw=ԐQ[+pNV3^P C qnIli%4bջH{{U?z,n1h D℣^JH#KjWؗ.a4j[JT^w]a\iwٵ^kW @.I!ܠ4]vݣcqPޠkJn+8Ʃki ~KAm^CMDɱBBtW`%_ {䗴x}ڿDoMsa'$*(p-<`zH- L LdCX' }&O·>~;@@Da1no`Ap i; y~zڞDUU=ggZ4-D$th\|2] C Cxq!At&D!ܳ yϲ)eM P4eɼ;2If0r/$7DEM23WĻ'I)*aoZA2Ȃi&#8(=i\,zIhdT2M2]@RTS}J TΐvoZfŏ >%(%@?5|]p D+ѹ? ~ 8{8[ ˃MQǨ^JXj z2Dk#W!zTgU P+ɡ 7ܔ^tI:% 'zܣa3]Oe议K4V Z ~PU4ᜆo! У{)A7h x/ q3gBKe/yf]0KD!ZZ2ẍErX @ 6}{: ¶Bw1zO7z~۰ %`~3ZE_6#-DTJ^Bۊ <h#c#U2*D$/[jT& u_|_U~kt۪Dp놋G]Pya٬ysby!0B!?ܨ|Jojyn" _nyojc5]܊&⹭]eTxn׍]5/Ⱥ I(f,+gj.*B`Y^r?;YtBK`$Vezl ~|` ^8q x^EO)W' H/łUIϦ!!!N^je,hrf|z_biΏ@:gzo:KᣁswIyQacGfFtɃs6r:_44{O)=h2<\1@}dg\?u QRPΈ։6 X1 .|2YL;M}wٖnnAF,ypR55VVZx{7-S]-7z'O~C >,oG8~=DQ ) uWPIF:OX%_ ʆxzD~9R:Fma])d(m%8)QC@FFSJ#eVۻQ{*(p|}}|c?{}/Ǹ﹋cP`Ź I ȯ."&_s i2]֠<XL4B.iX].$pP€[r&w($Q8DHa΅S{HFWnµʭ;ǜ!;txrDW 7 I|" S# # # wHЅ}f7=;=ٸ]Hd /mo9[X# !gѪ&!9"Pf RljE,2xw0 s$0YZ >ާPl nsLn݀ze2nbn hLZ{nҊI1 SNީ0Ci::S~ayHZ*m2+pguZa#X/M gCl3Y=wRx# |6VI$x4M>CU)BǣD?u<@kbKU EΚ1ΚdV00?[fm)lA^Ib k93 k-HR(VAa8k I|cLgk/^4$91-*)~k$֛O]ږ*܊IIn)\9*$%Rŵ]-EnZ_?eO%^b@ Z5 F7DQOcPjdW[Ul XW C4˲mҪRaظto4+\-lԚ FbF=` z6RUdeVod׻M17D{1l1-F1X=;$rp SD,!E,mOs /Vcj ͐lb&nt"ꢁL onEʱmk1s\w33 9!Uaf[6ibMykFQeZ RCZ4P'Os՚ pn kˉ`EgW( faҋb Kx\b|;6 ,!t\qT9RZЅ%ZKjM%y.HbL1 ٚ7UV<Ռ<[+,P2#zN4UI*tN:mYY٦x(_(5ӪcX.vJZ46sqp>` ǫ` _xm.+Spŏ6l`x}\Az6d@5b#a뀘[;y#J/z^lpLvHHQ2F:4?o=k~:NWJEx 3ΝCKg4TNeݪț@[DlEcx:a`r2 W8'P"ڍ/!no:QS 2B: ~>ߖ{@©m5Hv=9'P,%'r&;d(#-z5o83312Cm\[eXN*y.QJZr4Tu0~OkYLH':eDoA2RaY dd4y%bDg v(tφp4G@(mdaHeN;߽IBʠ}> `x{Iy:Y˗24!uC;D"QrKsvTY.bE4}ٞ=͌]B~Rlw`Cl&9IYi[R&xz- Y Ti7ͪ)[l28?$6$2ܒ䰖ʇCI[!P6B,eb'cJl\pJx wd@$"YdA3Qz,Gph 2XK΄p&Df¡LT2}V5<#  NNSO =},|9 Fm@H¦e śȨb4V;7EH0BE<9{!2$E4cBhD]¯%Onh Z% 9&Eaf/XzG@9nfp`Wc_p7$p+.XNyZ {@ah2iWHeC &Rp:'MI&`ǵpǨSM>؂;ꉏ$Ivͯ]<׭gn㦃 *_;0.?n*2>r/5G詩+-B@/0K1,<Ԕ%Juwb"Y (Rxi ][ ʺ^ʿBPE9$&&pEZ񭥥Wq)~Z Mz&䯨r&:٨||Y\;٭rS7y+ u@{Z{ԅW ~`x|I M#L~k-To`Z(RZ. "Dz<X43^Pfu.@^-fR]ߊECqœf#Lx&mF- t aiܫ^Է-7mȂѣ\ĵ8m .e^XqB:i<8Gv2سû ,pTJr~7h7·4@{]>sIW >s?&A[ Om/یX<g˯u@?O_ |CM͙|P$2?&]|1D, ܜt?) ̣{ d^)fԞ/ ;xif)a@p݊F9y;Muޮ5UNm@W.MgK ]]{*Q[bMyra?r4vS\1 ɷG-p]" 8 q(7NȭEX\Y@:]N,.Do HaS;dfUEl][kYLO m` %j#ufis=Iyv?+[3Vfs{K@jGH94G':+\)Y(/:{i vx@ @nXq)i{ ʆfQVQuK@@g>ne={bxkΓNOwXUuG@z MԬPV5қ{R9r/!8^"|yI _Ɖ8\抇bCQ0@q#>e~3[ۣϵմg]?\7 j|܉0q|>cyԫ!Q ]dErg ȹNTەnl\ Uo *+IJ[!':?@#OѮ̗!TCMUjv" Tj3j86;OO[I%_{d3a'G%3MW!CR}ajٚ5̗^C"{x8j\o $4?M&o d%bxlT?-2P5g+GON uE/":q|_dx|7>Go v3kYsun < \7}vεޠy5wt.ܺj8[VoW/B^톐<Nu4^ID`X.-9&!S֗CB)krš䪰 yA7 aCqg_kȽl.P^"`ZzXi;YLfpLE.kj!r&}rOY,lX.jja9]274 Ow:ZʟhvS~I[X<ꆧԄ@ъ1ic}YoN,5_#iREidhRy|H~~ZTIpys]bfրn ȑr/+y Ho^0,e_e^FB= j9-7abɎq_0MJE/fHMT8ȃ}dz=J: X3u)* n'5\2Ld捷$TkGn$ ybK3YrH, b-I3VOavIhɪU.՛*S*哒ZFz [Ɇ ̦D&̖Hb`l Z6uTl_yB(jîXxU yc;i9k| yA6U iTb0_+*r-cB&kMUSaa bY0?z5YZi$E $[l PF[73 KZ FhSWkĪ HW)>m+351aMjFc4Zd' 6Y( 6 p\bçgiZi7ի obPoAl|r5UiHdn!R}IENDB`awf-extended-2.9.0/images/thumbs/gtk3-plus.png000066400000000000000000000655171477403510000212220ustar00rootroot00000000000000PNG  IHDRPJPLTEbF9¶C82ٯƼǽɾɼźwю^I[HyTEʻĊXCeMɿǚdLȺ×cL˄]K]Iȹ`Kľ\H·bKIJƻƶn`巰ĻgPĺ˾ûxe̽uXΡƿpTµ­Ƚ~UC֥ҳymĶⰞ{۬zg÷x\rbϽucjZlƾsør¹cUijbNϛֺЯ|~xtɾr䟈wnZsQ@maþڼƺWRO´ɑvtokʧj`ZjO79?yaK{/ i@Ǽ7_1F,*y_Vژqڦ2=+_lNO軬z!=mJdjGs%`zhY]]֒4m ?lzX:Qv(dCٳ㘐t dÆ//7(`ub"&|"i[4z' %¤0Ë" C˰в شeut>!,@@`޲W1'{jB^$/ E@Þ)as,j#gLV !\@R/c6;Fu`^TkZx\gp9Se0nr%-)2Uq11~ CϠr0*Bh}h)%"J9_2L( PHT*u7;ūB#Q4!)^) Fb fb(ekT/~JYʫpӨz->eH/mK* Af79(+Oa Ѩx^R/FRjJl75KfNJ QbjqPk` ^!j W[ӧb{$e]a2/(tWqd1;`hSw<`3Oh@A`R yFjm1 4LhV"kgjlT A.>Ou^RhQkJݭz)&dxvu`зS zB]nT xzSeeAƫ FR0hqxP![/4)-n]e 05+Խ! lRm6>ג2}/,$LQt_Ry760 +j"kZhT[AnVNX@.7Zk)|R3,YfߚB~ZWk`&Maa%(FU-4J+_m7.YmnܚRABF7V_Z0V6q4|\a46(Bd[|s㥀f_eT\RXFa%On1YS|c\mP+rIW6w{>v_cad46moRDvbE5)FMmT^Ql _~Ix٠6,J/$pcY(1TҔA13J!|Ldܦ q#u{zW $/ +^</ Eڲ^* v$G<.媇kN,%wV\LY!LLL# >Φ]>YwC1huD?qb".  L.A2ٳ+ïpf,/^ǚ^ y%dVp!L6 qP˧ϔ"Oq1Nk\4.YLO Į'"i%'ںyRB7#l}؇LJv"DRQ:2b'Z$eB$@EΡ 3&O woΏpvKO9bg%za΄ y,qbl)$ Dxo@A Tz/v" 'I2 K?(!`"D a|D$32J:K(88.DV/q*Gb!*D~[08!|t_ywLBk .-(+Q ž0I9ba麥Kabup>2B|2:Bj(b2x!`<= q@‚$0 |< +q<&h3! bbz`8CL z0;݃Q4K'.^2r3gsʾu- += "w A p]bܞ4\*'r5澧o1ل!p5+l4m gr9r ?Ssk5^ps8B<ƭ(9ʪ%΅d_rk4ܣ'­`+u`}T-6ʿUYQs __| !k8 Bt1 34kʚ9Ffef1cpɁKK 0δ>Qr v'C8\. tl7!#y.Zc,a6/FӢvao~C&v+WL/|RSx ]Ѕ,gJ↯~.3B}|+j< īfz`aII&7B£ p˲ hx"PBx.,d0t jh8<<2 ρm<3DֵDB,(sR;u?CͱCcG )v uv߾}MmdMV-VCe|=# =V˙ܺu֧D3h1B"pR.pwƋrJ 7B88" `;dԧxLd!!Aj!&$~́̉Ӆ@*DKßG4wƧ@N]فv7YЄ,񝹐Bޡ|J"t?@mA+&4x:MkpUyzg0m6A|؟^g 7F`5`*D<p-O-l/&QTc" q4P(EG0#1QF%E0?]wN+7owəS/Dž=H QXأŋ K`Dz\ϝ?YHx2ŌKNusΉ9kY.q2tdZ7+T,kSl 9- -N& !A&p!u`pSo\+嘵^R|T |v!|uq:%K.^G>ˆ)9;\wԩBanA%f"Wb%3BS*]-K,]T=Hx&$gX;؛#=UD"bm,b>8::D ;v/<ߐjB|RS}uҭ.J >dV056'婛Oڿe&+4;^$ceS21[jHXr0i\Xv(P]ײr`@WB,e YL9dVXAKybEDc͢DAi$b*(d]N*=OwN;uPO{u+]o|\\s!LYB0$r.-g@|ZfrX|aŧJS Aݥ;N]AlBw?&<$/   Tx3 >q)qhF$x#4!8$8-geBpcpЄs1^p _o8,JG )[(${! 5GZB'.4ŞopD 9I )mᰲŸ??>(wvgh~l~~ԙ: "7n?&ڵ'=X'wy|hvɵώ ;ɝL!Z!,71y$p׋jk\< @5';_kyٞ{0y fLo 9 w”\ZPϝK!qhV`3O޾ G?W׾=>۳_τߣ7ss !UJΉ8o$Ԧ ]/&C/JM.s6u5us)g*!(+ur!n)9'&cProrKgX4wB>GNꞴ\q!9žd`bLP<)Z D{he$!l[[1w/dKq %Pb0gB7x+f:9͸ ޚFlw^e݀m]wӚjml2=W_`l#!V hK6?ҽ{e{ep'&-'񍃽-q:%07ŀͧ au܁t-:gs_|5XQQV5$%1!bG!:.z$R[rıT"oB'Au4G;oq8%! IݥRq@?l%]LXMa]]I*Xtc0॰Pal!kW2t[zț0FO^)b7:C섴5jH4& V7`QM-Ḿ465ZW&즕s@G=st脼FYiT0қU.(TXuPy7Z荆"tI뜎wv[(lݥN(h-]c-⮁>eؘ6{lM-}3P2HOg-(`rʧM@\1+2=t! ^.>}(|X| \ii͸oiٞcnihb2*Õ-pDxж IFBrv-G ~5Z﷘/:cJ]dIKݿ?U W$3.H~֝7-ɵϱSo;M)PB|Nud'\Xb36 qczlPѹ܊B0+4랎L|*@ N:C?Q0^X|v!mG.B|MV1*BJwuܬ/,ʊP{$ϴ]yrᇂTEshCM"ۋ.gRuBK: FxuG4~"04A,M/ٙ: oGPgzaJpvBb.渞0 mCf> ƕ8"fHGiSu.6+)W{ ZBl/E@ކBc"8&Δa󻝐NxR(/i&ۋ=i'< 4W)xo5c] ݡ;59a9<ʂBF||zܾ}dxψw`y}}'QpP4 $(0:0<:&&FOH/8o?c1wڴa#D~~^;R;[p>Q8OL \;t!M38̈ yG>}[SqIp?oB:j6`O_߮E kNn?| L):~rs\Z8a](0Zfֱrd]21kL&fD{w)0n У|Z Vq]o^zOk`&8{V+y"t,ekWC=1x8:!")9m[R(L>Ij(+.CbI, ;$i "! Dg Ft#ZߣEvx#x9I^J8qpAZHA bb-NZ Ӊr38nd]:+!oG$g}T@p[4GP& de/fZEʄ:]H+L*C@NWaGZSj1@ !JSN!XOl\PC "g?uۭ-[Ci!>"^=Il1,dcAňȃ`y/ia04la^gTPla=`cc ;bKƐyF~vA3!'Kd SA&9 ~`}!^$\/#|#h Xɹ99BՅgK=r,۩JW |pˑ z o"hB3|e`͹6E Մ7`sVC8i<=bh#Epp(QCۢ}ۢ=P'[G^5ؗ3&u"pE>K#!֦xc7$}p PcJ| "C}&'BUDoo8QX-b>E{\8 ±7MȢ/C{+;qozNHG!A =r{!3{^I]'QC3gB#`U~>pD=?rӣ,Pa,Q! |RZB>_ L$dlRX{rܝryP"'Orȧ`VH< {=t!`r)G; B|򚃐 !ӃӒ4\M03|N\ 矹=Y:!&$AHϴBh?>t9R^ޙ_w AO/y]!5>&dxٚIB?{TuHP桧XV"a*nC+2&BЗp„P `4"%4S%6uzuZ׬wy P^%9g·},jZ>y~u!6ȴn~:l݅UR-xeEuï9s52*NNt#mg̕R~++<~0ϟcXG^!mܻwbLq^4gA_my|t棅8gu6 [}*H(WVTY!@0UcQ #\E}50ܸql?$gwUF R9cOL?n)~ i+WAB4VH<kX:K/]- n|a?{%y:tܵݥ 89<@h["X  /I @aD[ 7{>t{1zߚ=N#rrME_Y!ʭD 靕 vJ Wo/=4Y;y;ލw=@vu܀-*Ǽ $BɺU<$-G_= +|]D 9sb@N&k+!GI8>Ĉ*!-oy`}{@V1{kD+&^ ^_s1,u;}Ƿ{7e4bG>恀`f:y/dU? ɓ@V5{HVيKL<0ca g9p6oqC-W^.|Xh[ NEU҇x r_m^DH桠x7t@ j%*H)$owYg"܋Co8澾A@&-#<FF$ug<>ztRrd aDV5t7:J^GBSD1ǯCJJU}K3vr!` oxKKbmT/\CgX$!|CFJ&\JnFRH:.;l}(@N7x"5.GR L4*xЎi9;J.(ّXRv g*Q#q]Ww:PuWK±:Dr?YSqz+Uafp$~w9f )ZiZMNVJ!}jA*G*MsjzǮ.w]{'u!ڵCӂjf_4ř7N;R(j(,^Sp` $pFT:]T!C۹HqRf`ڬ΅vFؠ$哠}N;a&`]qwQ]HDM(_ Oȹb7kՏުz/kK5S?ܳgvW5xni:ګ9~W={pݑ.<@Ͷ5_KySE1d1MÖ]΢VL@rqFoݡImOjZ3Lkm&VSgO{ MzokϿt7{vN 7}AOT TC(B<:RVZ4Pa/VN@S|mXRiFTAb 2 BAMU,EsvFBsFYNmV) d\,zts͚-Nz v-mW\ˡ.pP&t#;Ɍy)GQyA.U1лUQ ݳ  gMC|=>-yS6Sߺyp/.\v dwQ^ٽ;2^g󖪢@RoXЃ $'+8ʍÂ4l[,?t/$t ͽgemojچSm?;MMKAgj`%Ȼ{c9q>^ > >#r)@64əR KyԢ@8 P 5Q}d^酳uHW»gOK27y96VWIs㌧f~ ^ {Dxn rAS_8 YS9 ++&L$tM}]Q+^ @$ мĈթ7 u^ sٟ>9~ ا+8|@%!%geFѦ²zB@-\}5<Ⱥţ_v}` )Y0>p!*HGA"@vFr**]W?5l OȈ]fg;D!@J<{cd`iI%vb!Ėx`y "@r,SQ0} ]f);v ,b  2vTah=pŸ ”ȇ473`"@E9xYQ~l9lIw_~mY(8oʹ|dn嶴^?F>'U r$ B@lPCf3l%aT}` {tCk;_;6Z\^'e h.?GpACutzC|@"< ao@*,D 9\ g!l~gO^kћݩi%/ʳ+[Fhyw//m|qJSwoEy, DpDEByNܳ_ՓT$7F1" 츁+a%P |~h+^~02 zvs^(ݬ8T,_4PÆ_^p~J<@~r,N 7ኚр@`BßjW^6BS 겲|BEU3(%8> Z*j~g%i/4yԲH 7r G&dwCХ7Y9H<$֩)a|TG@4g՛jT#. FjEFH~+<!wUx "( K`znUĆz aL0bQriqO*HBfդSz^=)Nd]0DgрDevӔajG;4PѤћ7ktulP0(Z!VI/@1"z4țBZ4|SuwL$tr$މ!thw{ @Nt!/j<vѫ$~V*ZY\*/D$61sVJ{pj4 M @Z!1x|/ Bd=OHL5$l m& @D6lC_7DQp0畡Fr˗/~A S)= כj{)ʮ9{sӖA_Xoeg $|膶u|pb.Ӈq*p>\,av؊+T,|oHDrR$.=uWf~_= >k!06?fB@jęeM_}+8H=9KНvuAc?>h{`C% 5t2UFa. ŋQ2H"$l!$nU 􎼭;is-iiOZ5vE|.ɂ0)Q@^AiQ3!]_q!yA!hݟп Vv=D|,p%{@HZ3i& .uO6F;T7 'ziA⨼hk Un~78µ]@) B֔8=EZ 1=AZŎ^WwB5? \u* N{6s{jMd{sbȫ>yVA@Bxc\.*7Hb/wKX+zuv%-yjmTh%ձ$~Ҁ`WK .FA' q.hi! OwE!y}TTzׂ^]@ i4MfS8E}$rb>Oޔ%h0}wgFP[ o^&w.V&yg{m}YpO]Y@>@DI~lGxH׀*UOOa6 RMstqYy5"y%4 ނ`1na]ˣ[ ma@RA5 T jȹ _䒁4+Dܲd 8\m Jc#\JaUt= dJz&J4Y-4אOHVRP^a d, 0zzрs1\ HddkYZ=68ݓɤBB/>1xb@ؒtH۾tmC Ǫ MrҊ7J;PE@6l`n%pC:5 +FٞH\хI㯾b39xʟ^9y^ 0 /@n/bH [|!Lga*H]a*KS6bX[3F@ Xk T+ *,FXk ӿx 2](c1H PK;}@\P)DCh6H,ħ쪉ŀ[3j'h@ɷ@,xY"Al>o%&tQ@H{OǏݐ$bz5R TxHZ@&==y51DGXq6YOMVkg5-gWM,ǧ]f xR,!{ Jx)\䳢SX@kڍw. 4mYazi]5hF62*jE$/)i$mRYa| @NW$&գ%}d"I.VSo+5K {"˸wR$k5UZJʐRjEWW?^Z ]u ]zY V) ޕH/)Lm(IN+ h@#5] S?⌗75lͨVEtFz؋P.+*d?a/Ūx?L~Ҹ>g+UPz ).GsI y ^, Gk.2X0}*C (Á< ÁY=m籒ʊ ),ic5YPCi7)4`m9=@@5e{H dB5Da˽ͳZf|yD2R3J6+7l@i%c*%Ls54OKÜ~\)TRVtIG}}Z҇\phcԇ,8TQY9/,6dP5r yrei'^pke13G\` A5DP^~6@qׅDMbbP1GY\(SOQ?(J[kQ;%&6s @d^ c$90RN;Ȱb;ˡ%5$BK MNшz:8鮇ܬ^A&6iR QUTPB, UJdIrdaF2CEpldVd,qp5k@k"}C"(Ds$m'l6G-'z;EMYZas嶍PIגMMd6Yȧ ]i!-D=FwO5bbiSn,qCuu$4jȂ: 'V5$Nu)&t&n]Z 3Btd) 4rU;A djָ|r>x@bxL5) Oyjo#t ʅY.n{ӕNb@Fv{^A)>GMc%5^ YJaT=1+m'.%Wirqy+@:BAD$& >deqļ [>{6&Ghgtk䊞nM=vҁ26 VL4Ԕڳ.CA*+$Z&~ "G1TISBďH斢L<:1CqA) % ,  er[۸hSREvFK :(iEYs%REl]M bhtU[qw9ʿWDY:֣xTxq5Y =%B[ x(2ŦXtpnݩX\eAۮV-33c0:fN[86uL5kjG,vǠ8Bl %NW$H>Xzh q`= x bbog= /Gg K(bbfrA-9m%J3kȁyETju#f,ucZ-LIt@~< X/< y $ rh25!D[XY'gl:_9 f#TIP ؍i28Uws֑aˀc7ڌL{?L!@l rP"(d޽'~ K-VCRI螖3A8 fx#61Ȭ86[bde*-qkqgt2>@%W=te!dA /A/r6k;?~ в:u0;_\TՁ_lBtHC܊FG|?KUxRvp ʔ1 rMk?$6V~BHj%!v޸kHAѭTU7陨;[B$a/BHH):OBZ>,JUi5[Qjw庴]3cK;,eªLgfdʪ@gm$ڰ7G R -T/%3*jz|l7ܿ2d#WiWɪF^z jJNIbi6Ce#!4Y1ǔΉnjVͨ#60 ͗r.]gG Pxڢ3~1/eiS>7%,yػn/EB% .光wwC @a9 t\RەNs C2W(T3FjtJW*g*bnabETTN=OEׅ#{e=; % ?=P#Eӌ<k_0UR>8.r6{E_)Y_Ýh>VEHOlO Dm\VkiHBDI $6ץJTF"DbjDKBA  TܹsMh$.n)Lҵ8NA|Νh6Kk1Π(K;]"[eSfi! .S6o:+&#N=BwXU1]g1[(QfEhΘl']U]z9 Z坝lpfh6PT]4wUk5;W_]mF܈Y5DySb+1+Ӳ\3siur93ۘ/,ZJvyL7fb 3=/Ⱦ! d']&}X[9ю^Fv {G@cV*SPb,YíVh@wu轰}\#^ƴ,ĉ@HJGk<@l>{`{(b{6 #HátQj5]W@袢bFRAuI&]\HK["1Z2#(dJL ]qX33JJiT2ZQ'[&SW /Qq^Vݡ3|F>y }2;T 8J|ڧJkv>8;kq;`Id.s;`R0TBSoKy  y_?z_?Ƀ'~_o|Gi/:u3.tiQZ /<}uՐˬ?yUi5{l̚; K!2ȫL٩d 0(Je8Sd⚇d <@k9eo$J\jI:^!D5ص}B -*sΎEY1[nIV8a7s&~dN]Uy-CXiX]a)&TT,Ep(8q4nl]0$B'9׍ZQS/N[)/"Uy{;]/}vvvvٙ{+ǡdeh8 `R`hR"a淫<gIE>MhĪ&d h z#\%HBo#rE dwkf~ DZ`#HcSEشgYRi[.jĹ\ClF`}CjhرIC XW~L)=Bo>'PyMFꂣB9 #d '||:/>la$ )Q*fY[r^҂`Y@nY6?siN Ήj.Cuș22l53`>砩}nahjhyy껤/Z Ŕuqu]z?3wzޥ_GoN/`s(-ǧ/ͬ|{lkǦώ *\DKScqhfnz ܋57X&'LC=X0/(^Я+KKCЃnvr =cvjzVx;7M=˵S5w=NYn@ʥkgf*g>k {,80Ծ./}ԛ|tDȺj{(J;x(㩻R#ӊ +>QB/>*mb`,\\x닽tRHkKMKZj@&D29(A4Z͛mg@ / &ŝ ZEk$Q F8Hl bOM;=lZC=hۛ@L&Bu%-Jb?y87 ְO>ߺN2:m##+L>ܸ^ _4yO(7}sهmF;# xғRz6(;xL@S'(UNY ] ׿mSc:mrg3+3 38<03;40߿29: u#P>4>_Z*@$-]0ՙ6ɲ(գ0R~4}&I!ؔv@*qgY0^VJ$imFR]Tl ˿Hr=cn"SrmȗY@fkffz>tC&4y/.ݾVya_wdzcץ, Uf']GTc$[PBلoR( jii}B'X-|T젷7I?\ weX| =E'l-Yt!;8 @*goZ (M[#xn ~g ++:m)Bg# 4z ) 6W=}o!yv;0Kcsp_d=l>wgju@C##kxrq u槓vg5|;QFr(`%0渓:T FZl!` . zRNv_TS"zSG3bK_iV8ГԩȔC uճ9r ՗FM)`rW<8$Ft"C=P6͉=b²UU+=l1l-ܹ+XN0\) hp50MWXxX UՀAM `{żc豻聀Cžz@@du 4ʳ0smW o WT nǽԚSej% H)cCxaO`y mvž:ž:=uj;c@_}֕+ r `* F8ԩ Ai0{ ˲4-Z5 )Z\PSvyFHJK"ٔ.nC [^{7\KdvɛJRh] >8|C$pW*`>'A a/<> &w> ][T#ސ*]E @ *@vU-@rU]V QHўeY"Hǔ$)3eez/L'ڐ/\\eA| F H}۶~2 z[D<򰈘mI*egq6Ng_(󶀐A9`ɇ$(W!N?Ǡ’ m8BBV1 4xdyG֌djtzq$j 8n:^/jKR9!h ov9EwX&/ uE\› D!aGġ xUwBbV 7L1A2v)xHlbCx~=oL'͋~d}kPG.eV݋0wDa/>GN ܦ7_5˽މĄ7l4_ЄշnrK^?\d I7A 9T[ ӅxypD۲!oܒ\ ~oAil H2X/[kIRP#0RR0ΕIAJM%#wz\NI w,9(<% -V 0ag!b=s.b 7q2Hlb\* sFL)$71-ӁVHOJp>#|xV<> VũҐDvm_<-hRB."vWDL[rK 4 H")PD#)# XRF@ڿ2"< D"EH#*Nԗ NeG :N$Bm(jD DGGw"mMR"pw6DO_V9JRf eohh @H)_ @L2B+ͣQöCVi)4 {I{;Nj7bu.IȺKZӽn OhX@PQ^ag09>vT$ ϊ6]TQy,/;Ys3ndY R HE ȡgn^_Z8T4ˉb8sc EE;@v^Hl.T]MYRh~Ad _E;y` ΰ4A%%S5\?Gx5inj![:=04U%P7Sfh@0!,bI,Bqah5 (*AA4ԝ> $V6cH# ӌǛ۫Vl>v* ǎAS]6> ]ҴTt""B&h9 nnPd Ouǚoҽ@Dt6[/Ac4? GdY~,+rTV+CV!)' ZQ*b]~xD۾M~V RVxsK VuD}m$D1w{eeD˧>b=dπ [s>u۵iuwQL#*Jqp(ǺׯGՎPvkn,oinȶVCU T" T'.ݐ|@(E`j.h>|=p5UOD~/}@ -X$|y2OHz""ix Z5|zO9>MY7Y_7Y _.8O /N? FO6̛Dos ` ^d/_Hi(ƞ }7>ݼE ˼_tW_(Rb @LD^CDC=@(C:P2󖲆 ‹ၟ! d m{Š֓/3摔BZ i˦^IRf e&B4ڱj#vMʲ,x F BeI"nf%,hiܹDi b8_2t /6;<$8]~Nƥ:AglI2!+Q?%J!Ȝ0F}X4nxB ^_g6/X@z3w Jg1lI^croؗ{!"5ɟrar.DX4n4R'"OCtą`q&BDP&V5Ig Dh.8ᣂDPL $mNWf3t{-@>ر2@9fbN,"G 챆]?$5!9|aHГ $ƲjZQBpQ< EΏḚ05XJ5\n@\G]FSzd3a+qge)8-N=)&`(uSVD'AGEr4!u&ԩOvSgE,ZTbXPyIENDB`awf-extended-2.9.0/images/thumbs/gtk3-rtl.png000066400000000000000000000661341477403510000210340ustar00rootroot00000000000000PNG  IHDR`PLTEC82bF9VBoM?¶ɯȽŻފ\Hwʽ`K˿yUGڐo`[HɻeMʿɺNJXC\JΚdLùǿ^IcLƶgPxeǽbKźǼȸܿvYü÷Ǿɿ띗̽·ץ̕sc˼óͿռƹ񵬥pTºļĉ_Lk\zgÕeOüӹfX_Nٞuc׹Ʋ䵵eS}TAXFw}x{p֝q]ǛȎpdm[ڽ~ՙ{mu§қ{dtQ@{upz[MkVXCŵᥰ˓waXSqYknjfjiw\~ńBrخ7LVޜ<403i،I`۾tNIdžӺѫz'UQtRNS\ai IDATx TSW;s#!Ex'Jx)Ј0rZETM0@<<óKyEèPЊVE>]UۺVuV׬sff͝Yk޻;2ߜ$}޿sK?"KBY? -8痯 V+++?W~z7UE17 ʏJQ87~IXQQp\ҹ7뚿%x^t/ڃ#6)E4&{;Of}߬UGT{{{<}sG6g? |m_n~nj5ֱ+/kj<2_5 Eϔl{pڋGr#T>5m;23W?yl?IW)6E/rsҹ7@㊋k}#UQÎCy wPәѦ+cfcY`ӹښև]GMQUEEcM[i'U]ED^I]6MT|9Ѷ? ^䌩?=qP;j>j32,*pٗ]o_￉z^ӟ_6Yexg1AFՆ¨?2@";|'6DETr~ƋW"-4gu%adHŹFx+]4 ;"Ƣ? >G # J:7F7 XEGGxs9cҊ+c>k@*@ǧwh.k58YU2/*0Hxd,8FϣϑVԹa€?Ĵ17P4eT܂//B?$}$~@~0b- ZcҖjTPjD<,Ϊvt8ea@x?R BnMU\oTksQAŠjy..KȫJ6?BnU6^ ur͸UB$VS.#7kTS*Re3_]Ղµvյ<liӍRZa{6N+lZU+!*(˨tVJCsU"]P0 di۽asꪽa Ugjy5ktu<1Kb0jZen{|!F3CݸT5jCq!wFN%TU컬,l֐y*33Uk22`+W۪Mf*^v#4@T]VI~_]WU%6Vtv{j"մZ`Ij%qM쁀8F~ , L &a-{1)ɋ⛖%m ,i7E vCŅ0e֭[o%',ayyꙫ 8(x rp'/aJb 9z),NŢe1tYA^QrQY8WqxKR9^9L$1??ާG*H F4k-̝jLY?K&@z־BńRE{]veW[GFFn@~죽OTeDTjokk> j#(/,opL(kM_;.*ԖUR[WR" `h֯&~죽O @xdw [er]j/ꍀۇbe?WYY,LIַuP ?bkB|-ȗ >.8A(I0s⫴mӾHQю;dmYn?j4"sV yT%c /W ".)wop ~9?ĨP iv)Ke q$⟀2R32R띉 E%envر++4*:.Лȫ5HLv8zE],l8 a@$Ȯ8ǧK$x5i 3R'v?mcv4Ni8q6:N-<}d1R+&bc-&v2t|OCtqp.kEzL&& CD8+EuWV$xܫp… W xe$Yp ${<^LP!HI4S>)*# 3""%#6V8 ?Gnbc - `Jb@B@|QZhT]~rAHdzrwb=SC/H|Bk"r\Ȕ,m #Xq+13-UNY?W_sդvRZm6bGa{ͬx\s*\ { `/]m)kH+,]h5 fTcnɶmo Zi(  |e6H Zyk% 2md$*`CSe+@|d&s"PDG@\a_UpziCbD"t?W1ȞE ?E'&o! ^tqZc![ܼ>y lu%- &h"$MdC譣גm,Y">ǒLS&|sm(žFPu ꬢXٶj[*(6-gX!iM2N$cdueS A''-зx6| jvNBjTu%^_ 2}8pl|˓׳ - >ǰ\a=51%qYۖM/9$'O]Zsɐ@իG mk_qɣ"/ \jf/NViݚZQ$PKl_HrƋTJC XЉ\J·0sU-x6}R{&ո{TZvfj&TyG Ae27x Ez/'X2ҞEx|骕pdnPBI ё#@J8,l!x "mlZ+G;B#DV9 zBBN^~3pb þѓrԕfR<#`Uwk\(p3_xʂ,SnCZf*D)2 9ܰC|''3D66RI43 k+2AJ5Eb*VTZRWSR--''7"\BQӎp H"rpc9J'δgH@Vz\0m>mx. DLwq_gi* p)lHBmBjgE~ Oc9 D1zȀȼ-6yoI5ɋ rvd<@`-+* Hөȶ{3nAPyMc;l-F'T1«t^s,4.v3H,F'-f>C=z-anޓ'+O>vBnb҂n@ZC]Ȳ3OH='b~8W ) un6L':Ya-<CY,H]ၐl@iL súXsUb $Dm4  2('X ')u5?+]AkvP$il:&hC(.+j#G"> A\a?}Po9`d&kSٟtFd|IIN1HuBxi0l'$ t$OiJ@bJ^凳L mp 'L?"Q& 98́LQ?l1N:M 趄\KEC YPUwʑ:+]"%$+@ ع')" f ,X~j˃Y&dyh<UQKYR 4C㰸ʫs: {S>̓2!&UiàO? aBPI)F442@VWk`'Gr͉`mXYsr8)v-,ۗ_^". %%p>k{@0/%< `GLdW[ q[[A t!|kɆB@ڑX:)gYkz Hoi=~\2bFB=ӎ@^ \2iGgR+K<𓖻Ƴ+ch%GMa8̂4@JP{b[" y* @J~,njxZͣoͤ32[&33mPiB ls<9Nl-sˑ`6xeBU&2O`&%f9rc%2!#CciOIlsM|kv-Mt3u:*;6(z`ZDx@kx@8맽pt@ * !w~ yd"/ƻŷO}-a޻wriä(QI=̴SQy/WJRVRzeOYUJ7cKj -K ;|w@u >daFҝwWN'!m+߻6"H]wof@DsU%beyp9Y;H,J%p d+D3Tyᔠ D@v~tUWOvOߍm;8?߾-fy8reHrw,"Rp S'y҅Ȏ|h 4_&voLL_~qh?uKr.yvZK82wFo݁]gMܽ޿.ӟ@GOܹ-[zw1|\4<٨\2 qEyY#6q ڳJLv v\B)yw{Hp[X̑>ãhpP MA H:og~;/ݲR˧Ɨ+6$vO)9tY iLo%_ $m c bJatk Z cQ VBV XŀipԶcYs[)a|h|AG{Yl:kv,3ájCu* aQu'@&Vy:gbe l}̥V&,m?~д<$1|q1 {"քu@ Ѿ/w4Wu; IegBBuڵ#CIj(m|&ەjʺ$o01\2l[i^vk dŵTW-Yx2d0L敶@;_cur!'nEl\R}ڵp= Ǧ y7"\vWqa"oYz&w18 /k :ƒs!j>5uTQ6N2uRT*xβZ.l,NI'MI?6:S^'}7qP<]Eٱe:w||3Ȯe룗E뛿,2rPm\pXt)\/EÑG|>6I&PŰ ҸZwǸ =WkvVDT*B{= 'Ϟ=;?}t[j2bs#yDLA)4BF%O s=- M.NBB@`T v6q?jH(#b0'>j5Yܼ}R5p ===]lpH9VڀY {{˲r<?/*{eU4,";?ۆBXhDBSpLcn~XpaWcO{-띲ScYGs`8$.g"1rR{`*aY2B+IG{~FZ) J󑾂E~ߟTp9N@v֒3$~Z)VSa\ps`1'b'%yGo"=n/]oJEBZB%Lf9Da|κ/5^,~`@vޝVo_}g8\tJoqx\x{4eRQz2 w>7%Z\[dX*d^w܃OȻ|ZM@rkMSo&'1F޾+vNnw¿/);EP;56EuRjCePlfA $zd-\Ӝꂟ8?pmDr_=aߛ{a-w܉c=;o}Gs ];՟)ǣ#<'%06|@Hf`[ RhuxоK0>qUIMF1 =}q: uK%h)j]wwMYIRѐT+%@SR>~8MPu]]6Ϯؚ5(%y,޹(T㤐qŻgW{Wnۖĸ^\PTt8mM8[OeIb8NQ=yݣrcu:Qmg^<]]w2cS ס *1\X13ʬK{..jW*6vY5}€[S wJOAB"/@A0<@& ̞ȸR d[!MuQeR˜dj ;Pnyу5!Ŕ磊&ZOۂϲ^EnҎ1B&ڃ2~@E 4 -lݯ\8'ySb%dN/X~h Xx)`"U yNusWb\8_H|r/DS^L PyiM [7Brb{%2h`"L(lG/k@;g^*NNЉZJ1-!E$td"+FNaw ~18}%.3Vd&bwȦM4.BTf?̇g>Z*YpI@Chc AZ{YUH Sa]6B9s^E#G$ <0#:d87Sri(ʭƓl[yX l$yjuFx&E.6##[{1a%}Ms]qrx˲c\͉R:?=wTUsډ2o5zL DN/{F=d.Rrd&&]RnOkN@Im n&D@o-"%髃1 ́؞ՂJ¼Gm3R[}29 y@N~b<#Yћ)2b>a4Z A1gD~"Z 䱙ylp|Hր~o I D,?{N˓ցạ55aִ||o͍ր~s*p^` kȅG* mz*Oc N@.z`&Myr'@o?;s͕w%>I251CRExL1@"H~M$X XDDtjXfZܲvSgjSnwNwfwg;{@>;{ι<9{xPv.ޗ|$Xd+7@W:))=b׌l1 OUvLy~siuF4#3@0cAA󛛟޼^'Í5?ٹe֐8@3 9njNQlL4 Љ W{9Bݽ~s{YgFO])~ #f<2/Puaq~y jFj #Yul֓Hg7&uiL)^H)ռ~O 5?0cY37^y:rD(u w%RU#EWxF ו➝3;m =|vhɇ=7 uC!h< '6w:ZD&5 Ɉ_࡞r=~@@=r*0_ڱD{Z7DգSexnB@N\ٍA pُBrps@9s!CBǠ$pVI1(dNM7 xa5'\%X|&c-VR- _@j@xFj)9*KR$+QNFc1H҄B/d^R?h滗d _< _$GTHzA ۱Rndp(yEk2c 9L#o2^ # Huxcv\A2S]DvL"N:X,qr{gc܇xD [L -tv*~ո@bQ>:V3@b/~/s=ˊ@6ɁZ8ZR2FWJإO ۰ALC^_ I I*䥻J@LfIa1|~ISH'j7'ƠüsF63G`t$ס:9Pr+1a@6SYG۞7D(5j6w<`KkuWu7~XKcck]O_:E VR/*fMլՑ@Jx$^.L'|깦tXk7D@G/p BQA*Sç!\<(a!BThmG{ZisԘ .c.]R]~ ]k}Y|ug6Y=WE/'T +Mzo`H 8%-xdY}/z"?nB^i=CtzIJB6@ w:绳.tƺUԦFr#\45|oɃkjCM+ާ RΕy;|t_]aT aS+~x+\gbFZ;zA5>zJkRKKjɤ^/N4'%0ذ&Ij U^kTمrWWzH~~Y%" PcB%"]el>&hIZ,jw8iݣ, [*Cj[m EP+f/~=ZwǿDhM|ʀjtᓿ, d]ffpU~ $@ @a K .C+53Y%rN-]V=TSEjkV I 8 'l]P7=JP!+gݺ ǾJ c(ZɥPA$P(}kJVdk-?# H07 ȘiY5DC e蟴-䙋KKbU6}Y5D#["e<@8'8<$/.do WI e '>F:"2Coλ #%yw x8ԍn$Wm^r/@]" ,,$E,=rOt:DB֦ FQ>D,ICla~r(J,_?B<- l8Xȑ%-E`%cEփȦD1D@ >J=~zRghw6?q@FyȂ@^HPVRЂ'= =|4S:V`,xFs)r$OoEy@/^CKf9"5Ϫv >! ȷ2_+2ge#=,Ӹ`Jo' ٗe'"@DY^2=l`E+G-_=<ktƏ]ߠl|8` ~?^ 2`BH, ve*f\@?{JW@Hl ]M.U^DO֑p Djѽ`[)K€?tk`hBZ&qW{Ӊ[ÇJoi΂E=(`b &qcJˏ~bbt) G@en?a=lDSgG"W#ɦֆA u M\nelBWVQ5S(5d/>bZNY@`Bey[)ߛK Q@hoU^hklTΉ'&rݥT&ד록aE5h<'UxUUz=;xGi@`5j?1Xć,^0&ըIUjU)A +| :!ҕ%7eG'qA{{2*(v`. jX%:'UӢ.( G- DD#du+GrqI ֵ dͺ\"Dp!K*PA;R(ylTČHJRU+L/e91v FUX}x@#M'O.`~80*áq8g/@VT=I^pᓱ6o- GB(B~3Js' _Ը d VGs' ٗDpAS6u1%T_Ü#oxSaH, jwA)҆P _xW\~' /@t;ECN/jJ+ `y7ClY} VD.KN"U/^T(I] Wtl_Mc+SIyr `g^ V /U+x5oo#| @vh$EG{{ϯHqMI!" s,B  \a@O mk5^vhCv>O!w3)by-]b_~"+RU\_rU1);sa۳A~ DA>9|jkN}vL5Q@WZBqQ*VXC]y׋tnuL; ӡꂶ=ۿ&z ̊[Bkk*u}I0vtCwxgUb-r}?GL/.Wase@rϟ8J[Z;8б %O%m-XV Bl3IbQBK߬6W-C>@CM/-T*NWK+:+㚕Dlc]DբJKݭ1|"n x`6;̙Cʔ$Ru ~ kυ26tZuZҊC ~TJzh@8Յtzu 7i =ZaH?-O﯍{BL콲zȇ 4TgDXU4$8TvcKVt86 ݊2@R3I{IyLx.5M8TQ=Z xA;'Nn9p{  K/Toˋlkr |J'Ko^K<q '%'CXXCX YYTzGVqQ ZkUXM)Txd9,->{4\m LT/B >zKdƙupKc"0"jWHc;Z=wk>ll E߶>я,c`RBD*}H 9$*O[o_,rՓm۶|MDe~LMonFA"ܼ +R@  @}eb%1-J¾{x7(3Y-֐ӧ{ޕ!GOO{;'Ea@'#LA Yٔp ,<i8+MNJ!ߖ` u;Q [YT^XYXbY#)KW|) ȋ,DÀ`98&z zy5H<:5UrI{$67@q&!ԗQ8"`% 2, /5d} !@`$F RberARK^V X= ̒d.ur3  O|%.e@~ۨӛUVVɼ}Ռ2?9@3gL@G{! .m>-x[Ha*/%tELY3SK*ץQ0f&ÏCϲRD2*f_ ʴ $:<03]No&/¢"At!b)BK}KD7\PWWtr80 85E@f)b$Y̧R4D!2| E@ƤK[?1T&~ ɛ'CؔN<.51'Xv6+9=rͫ<[751z<)hs롂xg5My&gl5[pygVZ΋  tB!2#_\sHږH T$ 9R/8T( ExY^qGkf$:fqrKݜ aZr>*0n: E4o/2/ؽ2Y bsKoI3vȜ!6Q :ȬCeF5%s D@yA MQ8T@<_yhCdFZ 5rgr@\ 900$ "rhHr !pV [V 7!mՐ p* j7G֐-wOMqҖTh!clòmR؂e$XZo' d#kb@bGD)WHx+$Hg09tIc@ r1NH#)cGa>^Jl\HG?R"c><ө[! WeT+dލN(ėe|.'k6-:ӋRi4~M?@m@Rot+P~d&`l,фmZQ+ epڃ.H&Ċrh܄Iu@VqU#@P딝=F* qAhĚ@zZ2J+&jJbFQߝeCMJGsLf@ 01;Lɾ=퇆`2::|\D5 nܼJ9Q L}ڣD ]gL!Wuڐϔv$si]o&߬|cv-iV դ x9Yf% 29kH1GqW|?M8;/uB.Xsiy]z4둛nٌw @$^Ί2&L9 \JH'$1?Y W#BK&Rir_-e+0tƐ9%c)YP;4&JNYBloo؍6t|(GqTF~w7FtHNQHĩ@P*X,@!+1?d^\ $eL"?%KV9ea1lYKS d& (LiH7j}a~Hr+ih H0!7h K.L:O K7;}"Qң 0Z4i<ՀVQȖݵw SVf1WU0a Fⴈ!i;El9}hud#ubne'Bzk94)?*=lMFQ#lj/coOvU׉O3kq~U6ڜNc5=❒$6sZoIУMAmDnԇ0:p&t~ W2X04Anܽ:<"&{J w6*15 cBڮEwo/Ќy@ ^$$P]2d "PPAa)(T T`C|.S_H?ƾ ӨRJa\WU`Ct)31A`WIw|O3b Ti-BI8FJT,/-8 8?MRV>_a ~~ü\~u!'VM2 \ $y)I=̇102Y37ˬ<][>J0Tz<9<|0{- W*JzE ^QR`u3֭ܺsuDnݭw@c=i&KYu4mF;%fdOCGl2b3یu& z+)fs6%Mq܍n@䤘Șs=HJ,^GL 7Gx'ϫWdqxQOt.;&ŽudN^/0KlNxF~]Z,-qif.U i?WO qG3ߏ4nq@o6e٧.M|LY5u?2s4)9ɦu94% NJv1$aCs_@hfQ 簓mAI s5(Րfo~۶=~K+%k[UH[r%12 M ! ia(Fj,B[55UV-ԦV]yۦMd؊!BAҗe/?JcV8-<sϙ'q*eSWFǐӊ:^T#O}^3 Wg8쁪ـFxoo dďZ?⏪ֆ?n0@te@ f s=3Gn{!]énCRaܛR\ 2#ഐGaq05>0"A?y?T:M@u"Uֶ 7 XVqg^p`ꡧL~?7ZEׇo7YH즩r ~KkR=u[Uu҉_ySk[_m=$@M:mdyVJ6hG}*}z_W7r.l_Ѝw_A~qgƍ;+?x;w^}t[ŗ_ݸsomn1_޼yYy竆? R]:x @849&ǭnzG恪oIP\fS!dad@z~ZB,'[TܪkN޽}, !m/7պ_\qݕ W~vwkp'ϵ9/Mw1&T |o7q!= m6L. F ^4!t&0"d`M3 e7nFО1(;L Ϋ%ĉq)^B8 `u}UxɍK3_=yݫ`jٯ\?>6荟aFZaBll='n{Ngc˺•Ξ} tׯ+/™믟T!zu窟ʕQVK{7=SSV4]nHH.G~ j$_Z,C0:r`Rcƪ  `w\x͹}a,<o4wo7 x6F˽#k[[*M߭Zgmӽ[5=.j4뷿j! wZ{ݡh̝[Θ ̛rFRВ|]9-(;9l68SظUO}zZ`d: G͔bhC=򛛠ܼn}]7oҞ- ##v835>C G"{9}zmV=uqS"^ӈXH:el.8"^ "y$J>7zyrb7 Ц>? 6FA 1G(C Ep KG)ѭgI&k0ZmSqlo{e]?yz:@|;inMaF|F؞A&DCҀh@vB@^B;+N̚F6"v풥!4 R6S DՅ~5[X0d=I|}֢Awo,YeM6;d 3 b2'a)DXҫLn`х!gP[%TsfgGy&7ϣPfL&$rq9h`V` F3 !~!a8GJ L"y_#iاr.eBfxIr(Vrs'GK裥dR6e 2RQ@xH'ᔵ%%KE,(j E 'Rs/` AbH)(PsJWaJ.9fX fJL2$@L'# QEyROK6!ZD4H)-e~fx\ԁѹ˰b B rG*!TB{QB|%QI.! $Ht%Q_+p# +cQ]"\0Y]yZ;&\2!2 zQk\"$S $ lL!"٢9+DD"d N#S @ Te$>5yUOU<$_*ѲTh=UKHA-/, K&Ȋ KpZG.!?@@WYk~ZI<1?6*Bȸ>Qj1= E,Qs#=Iy6nEϤqLh@4  Yt Ӏn׀рh@4  Hkрh@NŠF=3SS`ӞDzިw}l6LlgЦPϣ59т~YZ) HIf:(@zMi@nttPX'O90Ҁ4 m& Hi HN !{w{'Ԫ'͙H$+5Z$M,1: 5Z;t)j't͌9=M4yo @lkqOU:?A:ZO>~رξsuMGc'gytMt67Zm#ŝ @;vB}6ҡk"f1cF .72mB5a'9>&|_@) !Xee^RFX"󦌨%-~bB ۫7raJ!rΝ{}tO%vK }?-xׁr\Ȇd.*zeELCya+.B g%I{P yN_\u5V|E ȶX+ᡡ񼟇lL*abҟ ~XyS6I) NΡT PRN![`;~|arKuly@.8#+(;$cpxWxA8 K^f+|Z9"bALEZJ?Z{&dc<5׋Qڷ_R˗wH,6NX2aΤFñؘ;6ac3X,f{g&)όw@x8MhUHR3k*f~)KTȘ[ޔ0s >@t|(aa46\n{ 1!dü_( `ffJ">aCR9)t"X*vYrJ]Vd:@@#%D}ʊDYf  H+WДeUUML eMN0oKc%88@<{~|\18DӠ>dgMB%bJTKb|US?OY9?[9奶¯gTRrIP] ]u,-IeMXwxAarsH[I=X#V%l:h@ 6P,X m}ɒ6_m2#hr!:Rh!xҪNV@C uY'o]V]&[@D puhỶM Ҁl6z|5y P+׀x/X"b7Nc65cHK@8)GAiEX9@.k\J1]<X^[Piv1才ӱ @O,]Vj3^.-[f`Y (Z'մ8or AʥC*@#3(Z&TL$TUT8{@| Nj=22!Sp==WPb S(@4X,Jϓ *VזEd]GDS>()9ITH_NYf1Po )<]Œ$P%Vj@̙#<9>H [@!>@<=`K p+ DH6'd|4-ah>rW؊Oڷtd,-O+lETDb ]eN%ʜ>LWHEC1ԀDҗ3LO 9HœaE@5`<%/$] , W>bYYYO 4܍8Bu >8B(J8d:‚fIr!r>,L.r$)&Drd{%WkJN#2QAqHQkz; 6?T?2j8\dZIENDB`awf-extended-2.9.0/images/thumbs/gtk3.png000066400000000000000000000662761477403510000202440ustar00rootroot00000000000000PNG  IHDR`PLTEC82eG:\D9¶֯ƻȽwͿɻǼ`J˾yUGŊXCɺ[HeM̚dLʽʿɾm_cLƿ̽\Hxe¶ƶùĽ^I^KĹbK]Ipa÷ȹԘfO·[IζӵuXȽ稡ޟǿ԰pTञ̛՗hQó𢛕ڰ~UBļiZȊ`LraubƹºcNzgľmZԎw[yƙՕtfɊdT{p}YE{uvceX{\NsھƊsf׮tP@ƻqj½wqmbYUɓwҙҞ¦jPaȧDŽҳ浯o|Moۻ7LVޘ>51Չ֥5D^t{He寔]ӽvO#΃CǛQGKtRNS\\gnimIDATxyTS@$  Ap8BUB EEd hLL E(=VW]Զkwݮw3qy{={IRؾ=i|د_?ob)؃qooN7\[onz7?ןOފVD("C(܈[Yѓ{[WO~q/3zVo|㿻ozP(iOE2c4{R3Agh-1&[1Kz$術%'7n}p֍[{ $z[ʽ̩=~sdԉՓֳukh_OҘ(ВDؕ1Db[SOhC>z2qXED9z$䝘^2y:kzr:dQb#M+ؒ=p(tɩ[OedL9 T7\9]Zj`K8J}TSo`$* OZo: /)P]ژ,WzU*A'j(Z ElC)=YQfpiR!)W6 RAo^^[_v6 BettPit g`RVIZ^s J^Qo^P)+k<br.W_mN.3hx:UemRP&XzLYV#*<*'T$˿(k.S*GZE:JJ-YTuJeuu>N:򡔿`= Tʚ:^~.NVŵJƠE:&R"pױ5 ' oTWzذ Me vTmlHM}k9H) l{{!HˢدX$0AI Anb?V!A\_ $8&^N+D//;Ä8+Uޢq#Ȏ-U :?]AqC-VsKV!b3 /ӧ--)+閃9Ų$gihۿ4M} dXTC|-ːBW{{o= {p5#a [<1Lls,3v6egg紩0(mx'I`Zv =6 _(,f{P!dUIB/s97=}G△9\g \`[ߐW0PV`bPיגr[k$(UIII<_Doﭧݨutt̹Icp6b("B"qӝM6nuL%;CQb!Z~;aefK<I*@12q^ .畲fR눈 >N&(HAEy*U1}}Dh&___ʐ( &84/EyPs-'/8@w 7Y*i}? ;sj(Z%u"&b'AKP_˂RO[o։?P$ ~ܿ35uconC >d));BY6Y_n~]o  #dMJ$"'vwPP^wcX6ѵ@U0R~![<o `/۱{7T^XX 92*uSCd|AMURc*@EHNI KIWft3R&J6YJZP3X`!ߝ. 6os.b {4[Vu ?\5,#]U]C>Ɯd @Ķ mt.-2822 #\}T*/b.KDf3X.@!{V$he@8|YlxΆXTT E|؋K6/ >X^ J?AXn pR&ڊ iAFf8Ѓ&)є $l?GB%-&D- pA\.`o>o}jQW?egakH K ؾQ~&$ݗ{q!Vq]<@{(qW8l-,eh2=,(D /Joc~+ox:X6_hxחK^M 1W8$k/a8dmi,Lؑ531V%b Lk`V06$0~G 5໙bUwHNi[c6&Y6u[}o m/Z7ㅥ)ꬪ"sxGhnA`Rx 7OJbo]WIm_S _F" .u rㄥQ{N=ܷ&ߗjHLX`=\o_*S5|]A݌x\%N m:?yA>[۳UÝ]9EPO;ΞtpQ0KAl)ڬ1( ioM>otC<[S;ZkTş/;;5 5m /ar5{s8 j́nCs봯]qsEoMEDq>N]^a>S|r{x*xvY(zl!8HV-$G8Ab˞L;2Η/fd aE{`:z %ʋGZ FΣ=1V9<}R+eF TŚg\Ou︐=uzFԞ_=uAdwʁeE%'p^0M 8"\nTuJUA]/\1EJA hO;8&C xX$4= &Ѷ3m1Ǎ,/Wz0nX)a: *G4:eer]/?"la)ͿB + Q#i-Ov6֚ۢyk^#TMm|mQv ,;IWX&a肄 ND"*Aϧsz}GU?X\/U'1 )lBOF*@~J`KhDzqw-Pv\RΖI%-q3Q,6<2/(܄e$C- nEe q8^U6]84 ᱀]@!f E8tA^C]sI c_6>F3 j#( G \\GɃMZ b`Lq!oc+[3h2Ǟ*aoR$%oy|6_R\i>|ʱ? s O0[g NZx)V@> +\WCh']aXZgŠc(<ˆ)"(@A ⑔ L# eRQaqsL?0Gl H#H|&y {~@agjy-2I[dYVa.L۟Da:/: Һިw3kmA33ٶ`ʋ CDQ<,xA ZRe+\;Nk(0C ,b(Iw<]2 p&>{< Lfٽa3*I&9;C4CisJ{>{["{[߀}\pM 0Մ fe/>+b]]Wbs?(:W+]cc/uk|V{A?ol"/MW3wg ӽX cl!L\ A&ib#/a":e}j3|q_  rwhy!,-d J)$2$ȫ bc*/|֘ |s|^o$n0o!rYz1K(AV-6钥ާNT{zx݇_a&,8KX|̭g>b>6^5)0RhUʥrDÜpB\aޒEխ36l J1ɸCw >JaU//'{Iot/K`{s B-t@@,aMTɅ N'_E˪=t!ARKZ^ׇ^üƆ"|M*k {7aq?\)C4YGFFUF= Z.0pݺf] %Rk O=5#D\KA| GėFŏmRGu^uGT&8rק3L5ԣvexDv C (N+?^T +!7@9G Qkka %nJVK^7RWJ&<+f*gQчې 9w k+Cel!ٺ%(Te !up}BF\ԕiW=Qjִ,RB(Em ”~z M{8\"1Nj.F 48IW|m

]Sj[AT*^$fr ;P f/>B!ݎE iK$(,o6/\qC ;(H /A!Q>>ѻe q}NlXOO Ngh^'5ǨR!)kwYFg_A 1.X7bGy( gPUU h2_)Ƃap(Wu,%H JLy<-&Ȑ@PGNk5gk琂`CbUyɪ 7D"N(v<[ H%#2>0-hC@<S֟*ӕ{<'0ml[y<,lZ KZRɴK]c?X?e lz2(K*ȏ(V "]Ekk3Y4qn/;1Cu.Ws-eF|!)yA@Q#>NRvC;{gqdv?ʈ!+jua&kD (A+'l0Ę3/ZLD.; qKx 1$?Ppx>^o,q0~{K66"DErͼߍMmr~X"\. 2E;ւWo>Yf,3ڈ+OwVȲ$XA~ee5_S2+gm?/e4B\ ]eÄ fpr3}ϼŝ"Gvt utvRIx8Aztꤍ1w Bz &u0eUlTq>:= yJt;* |vbݢyd6䓡aZ y΍wQ )EN72@g HS Ud 98 VhGc 'Z^h Oܤb*ˬ?@lw$&],JVtd)ܡOח,ww}V| 2ɧ i_~/wnb5|B e>Z_V Rua4'VPJD"z`WٽcUA ;+b$1߳A.f1|X;S:;>\LW'-B I?f$MnpXQp-ύlCNdsЎ${rƎvGav Oқw޽7oEUnBW!Ǐ>MDB-u#uiqcv{E|ӊjwo U&RԅiPqtAb_;d_ڻ? .ݻP~#绩55>1?{YβˢZHxGG^;,= )ܖwx< ^j<Ѯd)|5[Mw+QCX@+`n̽1S3̤08dT!e&<8FwW |c&0sǖ+rX<YZLj#^ï+vD̴ 6BfTpktrF2~ۢNŹx\v=̑`~ A'$൶arU7#bA_=\"N%dsrQ.h#V$?Y8{z YF"xƐKwXX7C3 n _ga y 3qFa5,Ra3t &y0V1Z9$ BmU77h5AVW+U3fK#xnZEa*zMlzY3B4{LF`x4P0@:^ BWeM(a ŰBXq(,JS&&NXb.$A`p*5C yo! XmowI([Bgq".>KعS-s3IƜk#ُW|{ ,W[Zj_  ,㰔IEo%!Ԙ:0#ԁyU:;4wS֜0>AF9!}Aк%qawwVh|⢗TI%z `C2I:q^y =z2em@;aqSnla'`񨏁4lrBtxǮ(Oa62!w)vh|]Cs*`홷6L]'k:GVNg[mLbLTrk֨oxAz_5΅0FH!&1,.z_qT T-#[}lOԢ|J X{L?}.[+ 5[)%\ԕo1s-\Gj[:f٪ "ꘗSSk:-__;MqrD0As$|(75 A6(y$ r:,XtkLdrբrRAHA&ȍIn\v7غ 5vPA~k)-9o! *$>t*9uAN.hvbvբro~ʺrruA2 ?/\Dqڄ3q̺ g/U g0ֵv qE$nKH2o) "(\$k'   ZA`1 %#Yp@1v.y83$Mt7mgn;;s++ `|{_9{pyγg7U3I@.?@߆8:@ h0 NΑ](kкFHff)HO7UyP Á{#9禣N ,..$CMd@QTAϼ'1$4Yq7Vz5*ჴaHoO7U3 <& _DygȂE_G1,Tn3a_2ypQPAU}xLWY֦ SMNs:^;\;. ϖ\ 7N98 %n3 3pYi_zu7UĤټPB&s Gފ O,9a@SdO0 *ȁ:H çS ]8q1ry/Ue'ܠVG|@TDKyʚY[HͽO=lx޽Ee3>e9R 9P<@oOZ4碮z4ENhAi AP&[bUT 720>J5l_0 zwܜMW <W dӃ)(۳E=ՀH WK+N0!"Ektt4) _$Yr2nU ܫX}Y50634bڈRl! ҥCUBwO,)mMjRF!܍u20pH]#p[4%jf=D N,XtG۴fda|xv]@ {{01 zMY9b[ڂA7hI吾/;A&*b+$ѫh W*w _f#ȳ4 O Ba~7*+ LNY%z[ B7)Ʌ", ˋ ErhӸɆwPgd#uԇg ,9lJ]^nIB+QXF\&.戤̸mBd0 %[Tߦ?ܲ`܅ ΜՃqpBaCВY=؈b#&`0|ȑd޾r 㒇HRnVHzEп>(XHIsz)Yb ]? O>ﻐৃKg\/wg~Д|o6n7-%$r>~ٖ3g[(;J+JHrpB١W:QmPҿԵߕ *:! TЌm@ dlz.D)@@GyFiEZw- 0zzx- e)bC@҆(ɴaZ/; ԺNW@jJ9- Q tcI,r4&F="nd"4%@N. ȹ1T  (ܻmX9\n`l]-2ZBϩkKbmLOzrNKs5 .4vkIP`k\^=*fm/7d0cY h37`Y @*(Pz$oZ {ǏN۷7fo .݅,dÛ|Ig 'WzU$+@@~w =YX 0UV @BzjHhwR.x]aUR^^pGr|$G j&"Ls0:&p <Ӛ=Yևg8?CG a u޸wG7^S#]rJ8sG7 _?Ѩ`H57zR/g a@vj;sH_vKZV}8DUi{^z@H$#a@νFk 3'b8ڨ4_|w+@ i{z{umz}S|7VVXZY-y-> # ˚ͱXU\j[N aďWCsopHQ58VwjKpȑ322vՑ?I.sq GalwM|ۄh5F3,V fCEl@斶|tI>XGGkOoQ@wgKG"!^Zu-Q% Ckק\++Ͽŏ:;Z>t hݤEe5\51<ۜ-MIyNL* )\ɃڦSQՂg>-9z{/Xh#}UX@_"gBǮ34O P pVc)o[G&R? |,iսWK@Hc/{jhScZQ>#gs'{kⒽ1@@liJ oon K#,i5B>J#40Z[;{;[`[ zJYja, HHG^ʂ5 !T hڻJ@^=cuً@.|oۋTt@`˺xCsfs:7y'&* l`H9&-/33yB$7_%4CO 7.G@xxvo)+#_ɿVnI-esÇo.C wm! E ;ݴ3di O5!.$D!]j;C++% ٭[vuZN"pa ,ru]'{@ׯNrڟMf]_(=^.B>uWtuOocwM^rןЉZO@4v7]vzi{?h .ed+stI@ܽޯmqcw̹vmXh!E%[P-w5j-ֶDڢKUVKQ~',r5y{ұ^Ay?i9Mu$(H=i|+J\\o:eM~dasNI^ _xsC"PBg?HnZ>ER9 D||wTsvTJ WUp6ԧvxASWRVH;ŎR;@@Y]4O9OD|$촍ze gc5aj;^BZ7wsaj~fϲ35 ᧬6Z:kzqpg C2#|GOJ⠧"§ӄAacG |/\ژC{T *F´#E\~?l&r IA  wn?lHʌ&H>Q (*A"Dŕr7W x€KR:tk lj- $g7zx0ې{OY-a@Ҿ)͒-- t0tjJ:p86Hnl |vƛ߂b9?ߞgH{'fed~m:'CHSH{7N-?pMױtQA ɢmӂF\ql!T &+DM:q6'kr@vcgc{0=_x%0 )JC+F@@Hv6. }3QJ̍CT[(nZz,ybq8B%#jz/ogRw3@*`)Cv~Zg0d2ge C[H` @mDwuX:DH ^*I-O x;UVYrPϐOE-@.Q Q@4h!җFj!M[-x[bމmގ@Gj20),;IL2 Ti<,~ 8Xr d׾8Q8n߮_F5ŔRIApmm d˥Jݩoqo^ 0U.y"H,xo[ȩt.&IT%fd'BRObBIbOdN 0x~1W*)8^d%PCVJM6ʈV=eGHLcg+8;R 'pF);VQa<z*9I>(eC%Gca NT/gH*Ӡ}/A2";#wkzh@z9ϫ 3̒e /?IC%1kliyRnvZnŽ'RvZ鲗">NJS% qi0 P#y͗J'iB`b>9ڶm-ۺ? өݹeMdI&xDGa%^~pٗR.[ SsKvyźŲ*]yfq[Ê%33f+Y XYyaʛÕcҤP@, tS{DGO㠼 qWO5ѥh5P] x&Z';[,8,b"Z-=VԸ1|uW'r%?1=ko,Xzcgv[up\$"wu{>(UZmbApÔtk(q #\@ tW`Қ3V4&T^.yMתnto`@:mN3 ;{MpBthۯ껱.H{cS*zV1LC'wPt|P4N-)_ 'lT@hQihJXYL~lLF_SAU ԇ}[zq p |,Ve芸  -ebLfu$->m#@;6\ s.53b5y53>#ruϻ_!|WGT)V"f4hmwV[x}}Zxg˜Đ @H@#n A*oA9j&mD &* קto,O$tT@L A=B 5=bcY./[ۄG,TB(8'Huɂvp]š@8"n½*%N:uu*K%s MR y(@8  S e;T6vhPh9RF.),kniQ)v)ʁ,Sw @:8CD14Rw2aizisXN(lS/KND'gRμ.{lTN^Ä̀nWR2#6w{Y Wx\#C"e9u§zf`ʪr/jFM4cS! ֩@ j7 [Vy{K-d}JgpZ/~wN`HԮ}kP]7CNwu /;4ٹ,㤢6R@BpTqȏ9e&bՍ6߶ZHCǯx~tBȽϨA@_Z벗^| B4L6&B]T-.LPz{-©@ ha'{N]| MrФN|jZАM>/e`,c Ҝ 'ޫ-4~ a3zQ86׭`!bϊ*j\ q.ܜҽ@ -r>@k߸R9*ϬbAY=&9s fcn)}}͝w_o@NHaE!͐3Ug 9!7e`'6K׸`\0A嵺fOqg.-+D5 d85Z 3DЅXsۥXC ┝#\EP 0%$Su%_}uH`9xCw * ti5u_;]3szxR_szrfK # @\R>a*nO@lZQC@~Ot ;&%e*5|_RC"v"'Cqbjįm4wG kCT㷦)K]~l%8e5T tRA@J~4yQ$D5YP2^W5 r\4*[& ӡ4Z‘E[Mj6 kC)/׫sd倷B}X#fqcw YZS(115 7M s."H9:,M+er4#"} (0de$Q//=B {kcU[W@(U]t>xiWūQ@2Ȟ/l;гmT g5hm)I&Yڴim HP ]ŬU>)8XTg`Pqp<®ri :+ w{H+C4)٥%mCd<8tƞx/OFVgܿy!C=WK/_r78E"B)wz cbgC!m>LD>Gz.j!Xk$6ڎszgK 2] @<{-rF}ׯV\;- ]!d0ڠiqrtlGbqOP33HO>jG1 Abp}^Q-XbXh}ͺby}{Kl=kCՉ+a}pz{-KBZz-ABK<m].(hk1z=^} J͎2? -!b= {[˄Dѥ'so>yrvg[^힗]!7|^k}~z3jHp[l,8ZTG!(rB\ Pd;#E5Gv3; Zm6H; X/~DRI耬khهVY'~;w}tz)h߻r҉N>n7o= %E}Qa%;7K-A>Go 2Ѝޚ4+ !w&&S0&BN_ǧ(ӧm5 _{~{n{}t:ׯp}i+= ܼq9ܬvHyUV4CQp1bkJ/a^s.: 7/<{]=0_^/~ܽyBO{BfEk7f%-qT_ vHxё$t R~=Ry׌G&!䌅7^S/IA4 {?k[_쫖b<_;e7u3.jy(_Cž_\33dZ\p 3$ -.+bvD'|h(!3L :;'rw-6&|;f}Yٵ+B=}PTcZZak^9xK ` d#aRwNPy_S'w޻y!}nL~ѝ__l# %뀖aaPBS ZD6[ꇜ1$'bK}4ܺsB"[uI?bDi@.AB^҇{o9(ǼXYhЊhwY#!lB℅$ CY=G.`MgϞ}g#:wCaуk'oG[.Lk s /ono+gYF !mb-Cȶ A;lubo6;Ue1~b3~IHaRQg1\ 0-_騖C l,L&be-Ƅ?>o[7x45!xȶqO ׾=a/-r b]gm): ~.S|mB\ rnlH'[1RԺU-[bhmh, 8"ZBTV%4($Sv.AY?5rZӐBx!2#B fPP6YcGIawΚH%~S³,"i"ÖE1Pb[e7X^vQg(   2U$8:PAĈC−X6Bl߹tԮ[ $'pdEV0efOi?L Ә(ol%s9"jZ8hMD=Q0@OD$Hn/pB D!Ŏ|J`i/!2L+d2BL"j$%!`/$1FPTDkl܄˂B0IQQ^>1m]X!PA!QEX!^BIȁI!DK" $'8JEf#.`y|, O4|9X(f ' ѿC6a{ Ƭh3~,2j: "PB:8T>-CpI%`Lh4Rv0 b]RHŧH UaB,TT~r%yQ Gxmc`p!hci=d$pZ* $I) $mO &iqECq{/(P_m&h>JHB9WLg,gӚIȜԿ @oIGN*IUkJdP.sOuh'j((6]JVc[ʄxLhLwal.;U!]XѮ`1oj1B :?7ԑK0n#!Ab1B !CHM0BGHOo݄\*{ ^ԹK{˄L  #*a V{ ߍKȡ>@RgBFP(B< QL yf*]Q4 :RgBB+I};8ցo7ݔ É bJ|. b;(v"z5ÃlZ1V"-˻]WWwWB0Xmsi;0%~G7IS?z`SJ~յY!mU8PUHr̚kvv56Ik9zW% N~rCW}>kChi!|&g;&N-ՕHB|\NtX j$Rr+cDȏl.wϔr\<ƿkx|ER^BVMQ^BֶsEPBژ.UbN ՜x.iN 9~=8ƛأ)N|/?x0>\3BzZ JA:w 8 E'Cr?>00 ffX5# ./dE!}|M#bry&x9xVW@`o`L <]k P^NSvxU~wW{ dfEP*Eē|ZIzZBT5јU,klޘ%hQi !mGtM<+ñQK!>|޽5|W!J(!u!2x!c &dATΤ Խ[2kX!Nfi2VpT V4W.}pX)-D)t Ɠ֎S eL%#yOX*Xi^̊+`Ắt!SM]^4\ SLsKK+ۢu"P^ '䶐 8fjZk!n4vMV*ۘP Yw[<*?WeFk}YLV2X NTQv/wT%[mQemQڠUƨǨ^e!W=<}-]`(iw9 2•B/!](γgC~T>Wͥ9 W<ڊqvX> %vPÍ'ሶr6 letX[R6￳&szb\uݗ55yR)r`\p'P3aRc?M|-,9iBSbf,G LK˘roi N]4ĥQbKKc5'q}_VAH,jc\w^^_۬Вy1gqk۔]h'We4n!]^f֖1+ԔLVuZ3{/λNt!O,o=s[ߏ޺ɭ[MLJڬ~ e;7GB g厉9B\(jefz"-A(d¬\&'#pPtMѾ,(!r@H@H%.v, B*BX%gMBo9S*Ֆv/먫gۅ˅#6^/+w c@,$fPoU#Ÿ] u#Mbƌr!0:Xz  ͛[HOʲÏ^f5*,)0]Gȏ yS=UBՎ!t0JB&$!YR@:dBaMw&-EӁU$ŋa]_TdT=f !$.]LQLdbt^qUr4^J9!2xMu J<īQŠpJ*HfIX aDɩHJk@ݎg8$r0rHA2ъ 9X 3^Fx\1 2AH2$XH$9Zv24\@Xθ &L1%9FbssA4) Eh(QC4 ($13AY2M'* !`h![Lٔ%\ B 'zjTMų8GoBp"F:MIs0@ 1Y}iҡ/"#S^,6XɊR8N54eAe dP CQ":'Y$ pEIENDB`awf-extended-2.9.0/images/thumbs/gtk4-menu.png000066400000000000000000000632431477403510000211760ustar00rootroot00000000000000PNG  IHDR`PLTEC82bF9~TA¶ׯwŗcLǽdLbKyUGƼ[GŻ`KӜeMXC˾^IŶ\Hɽɺȋ]IȽɾȣxfo`_Jʼ˿οø[JƾɿĸuYȹ]KĻ֚gQȿfPȻIJʡ̽bKԯpTk\{g½Дrc;Ŀ碟~UC˕º½şvdótdΚmZ˸䲤ǽکҏbNn^եeT佽랄yǛ¸ЃeY`Or_~y~sx]’ynuP@wn}^Pњsiº~upiOϬƻž>GKXRQ߂}\~uroټ" 5@jlheb#΋ن%tRNS\b"NcOIDATx XWk D*TQ1"mPX֖& j ᮐA &Q^j[Z/T>k>}|?3d5 ݷ?g 8sf3~+I[H*1zkQ%EDwEn{UӢޏ*BT{)*ӓ+UO7~$T!vc~*l[ޯ{qssW^0Bk1qPڽ.rXm{wSnE"< v \t\xMOOU{O??qmw u';nsdυY$m=m.L 'އ;t{ǻG\Z{'ZЬ|bi=Ew=Uyio E'J7 !5Hw۷) {_Z8N};BO ^,NCFSVxH_/:8X'?,Oi|ZV]$Fs]^쎷=>NgOz\.; JtT$*g7+sgzk맟&{k%gy+5ʀ/k+qekzNT^P~o.NѴ]_٦(jXzGwKCRrFS>. V\uAQ9S:x,?Tx$*:tС\Ƚq=k@ȪUw& tԇ~ \e ,\~Q}{WV D aSD³2A1Z`fOGx`Q3S\QdO~EiPGcN MO XAhrr}3,aH$"j( J ۽7VRӭu!Y7w-Իœn{.A`sіϡwqdWGupV(5V)rTwq963mp)l:O63Cmtꙡ遮]juf'U]eXL,߬$$Όs6[lXe>&*=3;+01i .XMn{J:{3Vd7,*EٺU:uZDͨJͨE\.3Y.]RS*X:7]MMurzQ'85甛 ԅd ?v xs:x܎49͡))YuTjdgQyj]`naS\GE.ܶmAێ$-M:S|SJhzN6_@SSrS:v :gVryNNT'Tܴ̔PL/l83^L1,ޜЬJ Ei酎zPKʀN槠_n[iۜ>_\ uܗq|;KvlӮoF>w 9988īCӻv6; \C|nf~CF..'݅ 8]فa{l8u `)[@]YIJOq :E]Y\>fTQV +SӓuV7WNt%6VЊg 68BqHx7}7hGxG "6Ez2شTcSd>sتp"@Bz`wO8¡:Xeg;"q^1$ nl $Ɩc~obH0!p!^^8M?n+$"{=rqn[r%o:Vw ssqq ={6Rg!2 18yxk]C"6E~{['[c.7rQ}}o? dHE mډ8~x9Vo )(z͒A뾛`,7f34 =?,_Fl!Kj9!64!F36%ުhq;<>ܻXoH79Ɵ㑐T??c.@FROc zZzno꭫7V7۽ÿu~ {߁wB;+qR7h8:π W)_~Ǭ'G';A*3֌Ͽ]X$dÆ l4.M6-Ԕ_f&IMZzS(Op8du`ʯR;+"6Is!Ƌju@:q !~ÓJ)ŔefSspB.Lऐ}EDDҦ-g Bti"i][QBabG @+F#I4LSPB g)5 BBA]m_1$oh`Iz!)**)Pĝvu6XR,WIuIPĂZ bH{3!5rP˥JmY#m"oaE Ɔ 4B2U| ח(hR`-d{bh!fBTBqE]Qj` !\VKiE;CB 2 , ʊPȥXYjkBug59FJIԣ"fL&t"!)(h@EJ !U2J`i)f)UYB)e+Y8wʯ#cʄ WB^ O w&RM  ~@DISO02 ,6 z9s9s!$) ?lgOX6Bf.sY``h![`$($4iA DwV[IH /y A%Vj6_h:%HIx"^ =D،1\Rul,]f1 9@,uK! ټC8}昩S)R>L;m ]QN>p*zקq !,o6f|C$4"F:'_NH"?DLdxtĒ%A0 hqBl3PF8e(li">RhK|F,a.1C,2 ܇H[XLAE^gWZ2 OY\ZQͨ^JHS mQyݻwb%K$RS2H/cK E}^wɒR1Kp/CX]"ֲJ0s@)xP3ZQ*aB J(N_K Ֆ E'jfQ^NaL)S t r RfKrsDS1VXӗqc:WS7RXPL@e--,(<3Uc j,/$")JZ(h,DX]mV%B˔2.]QZi/_SwA:ޗ{,ԕZNi.!["ie/{14NPyoΔ)$!׭1ueecOcbG<?Gg+#z?f,`k ?_#wf jg)[}imr__B+XЩjTF c$*eM"fG)تcQ51?g gAE,*Viyind33UeLU`.[\8"s&dOe<غ~V~1"Q(Slc$ aLg;ZBT+BoCm BD>UU{ػ@ ؔ[B^>`tӒpRKij_e&MZoEbu+,nhVAb?GG؄쬦S{L;VgaGJAn{LAΞfJʹ`[&Wa4v0 jA] wv,G`>F!>x/wڐIuB a(vBmA] WC]ING5ѫ¡1a*$j 9Ցش[HLfHxgt|,=ݖH p Мwl 'UC;l3}x7h~Ȟ ˚Cbn̘(6#o?Bs d A"opX6cIr^tWrf/DEbGȯd) MuD(l[x<ȱ_E%ģe,:ϗ|˥ :!} B6؎;V+uAl68- 0̼iF?yGQafB;/ 9thZY1+fy" թPYaܙIcd[ LHYAlu1h/aDa^ǕiyygkhTJ(2O!RHrV jYRN.Vp[!4Ѕ5r _R2Nw0؂.!AI7on&poIn(n(|AH=!t=_/;`Ƶїu ҩ ]Vd?!F?c`Қopuuc^𳎊K3V!-fT3}lB=X} BjkkML8g<`O0EDXoP^F`:d`fXGs<6{L͜kѿ1~tM^ r8,39$ !'Ky7nwdXgD%2qWf 2>cqiBHBscB&MXlv$3~;lg[ǮC#uJ^FePWPHB"8n|q$IPɼ@`83\-3vcYj-gXJ11b("ޡ:Y BX"Dev_FnC߳gXK0u! ǃ]E ā > ř4t2W Hr rq0E׎^|t}v#bko]mmD.oq%ArQ8L~ w+KX A&W),IX>LrqGә-%0#RLBݾF|Ou }Až>x~RX5)]>s/B:4ЉNEW*<&K@C'Ւ>WBS$%t."^㍟.އ}׸{ <./y=sc&`OHB{-ö]k*_QʮRVR _-),͕%ko ]G]þ'gLȋG/]q([B1Z!D!a(2f$:ރ?OC-[(Sd"z [!UN$DR))@IV5ŒQ3;Bxb~紒 F~$r  iE|&#&7 _y'QR0 F%Br`'͇Na ~:/D& :ɕ5HrPЉ@iT(|[JlC,ܜJ fo4BF&b}/>{…C0LͅtV<"}ŻOncFYOn$\/t&0tgV&TeQTRЉBJ|UDi@JU4-wYLLv|uVLJC_%9*v xr !v6m X%v4ig;>B+s!gZHp]w{kfwW< ޸rFBH8pңD 1fV h;F"Hl S)jLW (QNAipZ&9dkБ2bbwd{qbQ&|uh|dL?f}XD8AV4 3(BKψ7a%$HL1Ne3e Ot贡nsseYXqB̉wIt,Y`5z0T\ gujGھ} JH #epXV^#"},zRCv{I,]7۞h}?8eLjB8LE(T,$VF|U\~!5i5u\啎˫Ԋ [C# i(eGI[,ML.+3JeRI5AÔ)<F:SR" $\Xhx8BfwTҀLB}h"NayWII gнRϝ|3D.mLY\fdA.sKt-SAQlJ+džxk[-EC'ݚd!{f1@1v>@ȶQ )$ص9|+~D7do\V(0bKcx Y4B.{.~::!׮='wK'_Z\r?`Inw5E(DT`XĒC*KU$!W~p4m)IAEJHǿ?JJr'$V,R!8[~v`g+ΖZ${F#4QNT5rv]cA%dR4 ҽvOvl#\lpߟ xDJw :,tBhkԯ\gA;Z0tSTɸ,*aacW$[%B" 7y K-m%|@!-O֍ruYS ɾ{w<ɡ> H'9?{Wˮ| gT!Og=BJE+U--؄@g qp1<-לC䕼_3PBν̉$Ϥp5u  !!:C~uݠiFcDhѬ^@;@&$m~_J-FN:#Z;{W3w?fvv眓$$BP]s|sl<<٣C%hh K[׭f] 6tZgw5# '@I wd[۹ wu @2 r/Vm{<S}V"=WI\'w2!(h{7Vݧy|]ֵ=7ȵ Z HLjY&ә dc5Wmrm*cD}S?O t%ѽce@*s V4*&9/ʗ6?\'"{&} &BK?-,,lKp}+]0m%\.E9Z2 |$A~ 7(=oXv;F%=X5eWIh\]B+qCؽGÀA"+T?WNP6,[Y?OxK/5Ń z$Bp!tڇa >yb3_4跔{qEIe{Y~SQ4"\;؀>J~Ū ͸6- r- >}&ku2D9ܺ z}_,1ն5nX= #v{t`vO'vIA}b h:YB#vov ֣GG-+ZQ7 ΨUP-:*Wq m\' !H ~9+c!JD;pף4T3 -m4W$bI=AQ)X4c";ѴZ:X ĉԢmWA[OO :l{{zh$HY!yxUUMA4 '?w#>х:Xe9z{ٍ%E(zi:\3q[o@x[^jwk؍y v-Xs~GyF2  񣪽j렒*̺!@\|Yo߹ B.4OzB!vw3yEYv, L̋Z#Mxԏ~ rU|6]3xSrs\0 +~O d?z 'yoW@KĭdD->ʁdJ,"#q%=оeZ;y Wd-WYZū#z{Oj ) >oKr C 'OF@PY?> 6wc0Ryc@ބ_<7n8D胨<ʾoM ^K[|^,WC4݈t],\U7.H5["яƻN:I_HP  DJHaW]i/ _OzI o|M ^eʑf=- psޭQ OHDiýN&x^}R# LdԻ{NUrΘXIwq҂Q!R@ΞH׵2@9-v3vo10ՉzX{-NAoClנBǐ~?J A!a)$0]?ѵ;:`15,>mQL,2577صwD ^25.j^28,y{_GzyQp%,*ǘřB|į/;y'ȵSGU~/[u[o;7cj(02o1J<ŹcʢHI{E{+l̨?~"OkQP2@ ަk^Kr쩟K VK4p#õGA@-Y{O3vѨwo6̢~@ xԐ!tک?.$,p [J܍yתO>c;_>k1S紈+qugN@Q@ ;!H"\Czo{WVP$~GK$D7`.$67Tiu ]N7Js^+"Sʣ2kɀu*Î!J-K[T`Ri/%ӶSg46|tTHLf2HjhZªۗ\Q[Oxȝd@>t E^DŽ뀐;zģi0{F-hu7J( x, d@h:WEc:Xp{B3{v&7:{ÆXubg]Ͱ܈4\;~he{%<-o@$%,911:I[RX}poups ȞÇP9,HZ!0@CPٳ{DwTlin5C3*H-E AAhJ_Y;2[VV*~uVה'NlGԈ(;;%1NFKKbq6x HOt?LB$/9zbe=IJ=>]NjENx1( ,+~4;+Dg ^&) 9#fz@ػӾ HtK,~9f4΋z78=Wx;>0Ri޵?]@6rGfP|]vvئ=xq *"⯟JM/ܿh{6@mED{NAI+7;O5Zb>C {VswT2įm`I_ˆזt﫻6̅WVŕ8 =8;z't̕>}kck+X>l6$@uSx aIga{|N-miTЩ* ۸!V8#Hi 9Y!r1 H#`&b@޻՝,J[?Rlªn}_`sBO}XY^uҀT¨ӝ>?k]x`DŸ{@?+ ۚ?J!fG>Vrn:vcwEqE cES%0tJk # `vjZ5r6nؚ9mUDmiE LS]^e. ߗHq0bnf@ pJHGEuwU!Wp:qQ_k8NeUͶY@b?ҵHiyi@@埮Xl|3W֩įS|et- 3 πcɢD,-\NzY}-໗eK+CK퍠R(pxr D-d40@ZlZӈ,ۢ(Jx~0wKJAp+ܙH0?# 5>/x~{JK3KkZYT G[N[DSD{$ o'<C ?%;_YyiQ ׿ r;ceՕHNh5^z Ry <>STEbl`U<5 @)D}Y 2?^Qn%iCMX$g5h5u@>"8xȑrhCsLh/@iQDZv>ƆTeō:p YHCאlgG%/T8em嗔[RP\ 3wsSܗ7l$Q0f9v(?Q2fEU%9qJ:\6BR[rS^s7&Ru_bʺزW#ܸ%閼)ژm0k=V_ZRu]X@ "|4z-Kf:dZ/;.Zb̲Tm7gǎ=۶ reWmQ-~;n"rz+8xȮ㟊@rBOJ9@>%= LJ:PZfƩGI2oo9rmCu א /[B(p0@Lan>b@>T\-6i9!c@G+}pfrU4:3) >9X=~2$!1-q7xk/o+ _mI6?\c0  a. )_YOG EXp\G K@`”zɿ07;=9%Vv!~ȸo. *g\!ߤucnff熦yXk|jj4Ep; )/'jpx]iڳ< x A,V* Jf5ee.􁌘Fn0]&5$[(=Ae'q=0=CY01e S0~ق621SAẍ́q,û=% k& y<h@(K^(xȒ.4 dfl\Z~ur+lA2b |zf/]( qqn&kYiEm6_ߧ{xZMZ@ %HPa#y" 7Wt*_倜Aj Pø)VݒAcqXxkH HA558BN  ӗP.MFV:@)@\F@dL RV(2ȘpVkRI+Q:@-4 OPJ Uxe<^Ɨ*vTw:d{Wa~C؆|e!g{tƣJ?#^ GA|Q[T#)f>{}+!S,Tvon2476}ʩ,Jljv%)e4cv͆\&2M p' ;z=.8Q( CK.F;>щay̮:=X@񨥀4 <&*,bRܼ S1RQIi$ A y9:` ɦB):IO<,cQ@ZBG_Qj' jߕd(!|}#s2!!@ 1ݓ3gn,@ ׬i1`n0dU31ohJY\'y0T/yQ i|!:B2 y;UZ!beȭE@nHԷJ+%K1R[OKDlaѶd@^r,b[U,60@>pW'<׏lɧ?2"iE##C>Y@p9I'h 8؀sE@Np@oq'rP>] a@ )r 3tȗ53. d8F{Jgr|\YKٳ))%-qDs1Es'@鴴YZNwE$ +!0^[T9)Wh1|a+)U327y[941sCiN蛞4z8$5MO)aD: TLs,,#*TPp}ةhsG!IUd׉^cbDǃ ~=f3hWdυ<q DžWyB+@PxWV M=$2U,7@5V1ۑ u/KV| ]1oX F.R۶a3'^ VPDVܧΣ.5"ff>ta Ȧ\CffpzSxy}A_Z{tm իJĨ2>b:_{xvcTu jړbDBsS? e Q-p t/%b",*9~(W{b vO@"L]G!<-&q'։M5b06dQ䖃_`-iYRjY&&XU]Owω<*A|ѷNrړ>Rf{udbzdQА oCTb k}OȈ<0:2Lf.0W" j,bƧÛd^3藻A8z !4KqMKCY0(d@#SC( ld5J ZM2y0'gzp Ç$8 0]sj(72=J >uP:CCc" |>Yz\K3H>fOȄ *o˦(ތ' $wWڪK[E~ȼ*4)-i84D,(sJ<*ir.<9# 3!k.kHrV>H]E͒fw'рL>~÷>p'C緐[Π U16ߩ8Ԓwos@H"uwQ"s= P!%T 3ԓ|=I90`p`7L>?d5O+!(!z) Ј Y'5哦:O!k$g>@vEl0?a-t~o!9RS]TST7h*|S=#M8kZalg f3֩9%bXgP0gFa86\4!&4f[Yǐ؟$@÷A~ΐ{,᷐Q~sm:W_ws.zhw-R]wHuQy]`i t"DhRQ򘸜V[~T"X@lHW^}I"wDN8@7jvݺI,?2ҵ: 1;3 \}B)U¢K0vj䚙Q2}#ʅM }9B+- GɓD'.*Zpq*W^Ё&ZFA]S_כ_, |PD̫B ~/_ Y=- UR)Lmb.4ADtMPsf0Am-Ҫ!RrԨZBt(:TK#Bp$[-+7g nR; {S7 /O\ٴRθ!  - 32pK)"'qD9ZH+*'24׊TU*gUo5*mJ+x+{eFjA E_Y[YV ;,dE4BiKRIǑXtg\-w!wɡm)ejXtZ`3Tmm+1&.;8[u©8P+-EZ"eDrFK C>βT mK"|GgαrrtxHT!km(SS[([E"j*$X! ٌlad[E v!h} K%Ö 1!,9mXE foB!XEC:ku5/au?u`{F?dD Pܰr{4|݊7{dG c?: r 䗟%>$㨓W>?Qݨ9πd8,2<ݯ,JU A`Yzz@:/tZ[M҄$&-πd ++Su࢖9.(3ڞC"q0р5J$Y πd 嵕ZeCk 4cmUPx" Tv{YV*D3-C<Ӳt aDɩ][<2 u^&-oXUOEOH]2܍IEصť^S޶#jr0+ D _Qbz4=Eץȍ3ւ-1ԶOqEPј -V+F0/'e4qJq& Ox녌؃ H88s=AtmpA" s,%?4l@tG˜_ Te $7ml_ ;jI )C^4YPG Fb2^4ҌFx2L2Lt#(QXwue.*vtWo~4MIHHħp||C}\0$jv4` Ѫ]ӇK\z^=z{n/C@£['!܀],S?|Z, k%Zg^1U"*Ġ`rTŊRiXV`Yc"(NF}JZxSd>Yݗ$JGk(T]t , 0IL"朔DD;bbȚ+#}Wd-}[&Zl1WķC9b!g |+1!Jj=79䣥D% id^i%[.kl+u9Vw6E!ud7\㈝AJ-{㓄XᓲFCP-ec` i%b1QٶX݈V6Fc4%ٲjt< ۑ^"%N*Bzy.dսhX+`OeaQW=ff-n2~!^b%&d}{ö@boMPZ%M0v݇%Z5͉G9{MngrIk5$hoBi4Z=E-%XC )BDڌҀ`g60Z58j`[ZE+3"-:ZרD5!򕄐fe7AHU5AdtVDމmoqC1!> { IU pɳBMI]KHlMb^hG ,ǐ&:aOftt,`{M " "aG$ VQARZ즸)5C%'+BcBLQ'+bLН|LSUvXUh $ Ru;/(5_1@ɻe(v7YE! .!S  R!FB䪋|'"s!響 9yGs:tJa/zL&dXBB[!{ay."b{HqpWms# {PH8#!ZB'+kF$I4VϤfy#,5Pyg(Gm!WղIBcC\\d^9E™p~wC!=N0[B)V8W0V4Ma{KUsRZ_VҰNv[j,|ϏBl22r;u _&7_Wk2;zIy|C@Sᙋy"l+#B>Wnsϵn6t>-!ꎚ-(ie%RB,&G;lE220LO=BV̼uÜRflEYP^E鷐鿬BK[iA{Al^0ru!=e(d(Vr}B2^X~qPjwn#zɌO;_ϘE+De8&=GH:wb9k73buCJ@D%B}g 1hB^5Gum #"*^h?#0׋-q=pm(oB"|N 8u$Q %\eٺ9Ԙpl0vYn!Y̅B`^&  1 ۙ/O"x c[c:7!}ڄ4KnW5w< ?w來D3{wYȝ<C!W.ˇ.BGi΍?rygTȗ_>~lsO?CxԴp09:]nH߄BHpe|K! SBi}"VEPz~ɆT}s?"@nK5BVoqNx@0/ ? k<;oqXO y:B|:6[rB'soDnQ+6hBnr!eQN:a$oN&D۳em fojeЅ<}*BZf39{ tBY!t"4 .Ɩd*eiS":!9/f_]¼o- DrL6n; MlH].(BAʻ1Жm`?upĿt!AkTGWt}|%oCҢ4M$wR6u^i-5>Bze\Q* 3y';^xoQo-䮍CL?L8:B,$d2ޭ<> X:'X~r{S!?v_=?fyߩ}rth8CĪrfk-Da @*s8݋f!3nuz)!["ܥm6""I֋>BNtp +9|!{ .%I&MJ. *R-[3 ?BCaF!qeJ!p>!2ADX{@,LH1I+W**3B_zM63UAH^7׹ LcY_3ػ,x=Ag펌CBkV ^ZR[B_4KW*9!Ә痄m!%<I8oQq}7_L)C>20; .3Y>Z8[He͟e]|ˌ4{ܛ㻬Xl4aa弚OV8-$;28y!9ga({Lݙd}^eEtm7ѵH:\yU6j8J^ zܛΌPW_r8B++)%WK*G .6=6,7>66k=|%):.h*Q =kg,㺀M܆X!dJ!Ʋv]\i' omQtZLAJB(s騭+)<)ڞF5AoqlJtm46[VUxcf33~BKK1>PhXJo Dgn[B!X!q{ayl]0HEQHQ<&:˓rspl< 1y*6e $;кB:&'쇄QA0bdu9tLDdxZ@j0S7d !׎d!$LȐ~1d?ԊIENDB`awf-extended-2.9.0/images/thumbs/gtk4-rtl.png000066400000000000000000000632211477403510000210270ustar00rootroot00000000000000PNG  IHDR`PLTEC82eG:\D9~TA¶̯źފ\HwȽø^Iʽ˿ǽ[H˾yUGXCΜeMƷȻdL]LcL`KɾȺͥyfͿbKoaʿƻ·uYfPԿǽʼŽĽºZIówdȹ矙̽ķpT̫sd򩢛՝ԥ䕏aMhRk]ù{SAo\eTо൴tcǿo_ڞy}XHɛºk^·sՂdWړym~{cИڿ~y~tԌsgjXƼ}vpľڽ᪔bi[SiOwƈ嵝AKPqlhڿ/*(Hfjx؋׮៛ϰԸ۾>{1bId\śQMϕt:t}btRNS\\Zc^qq}RcwuN{LL٘#15ؘSG%sce+\押Z:5sJ4s1(;7[3W(|Pѩ֞OQmqiAX18~Thgؒq6_1\~k}R !pM8/ $<|^ ]!Nv>z8?hdrxl^+-mȉQw+3<*ܫDY~Q3XK>(<|+QGDv{R5#}್ᯉt>,$Gx#?'w?7^9iV)x-Sꔧ9g^@gc†ON@/sMEhs7G:`s^^#F"o<*hTNyyT+ʱS^ڵ÷s^@իW۽7hnhElBu1W0yyH߾qZ;jkRe)7CS)j1BpZG{㚬^LWXT-Q 5rE@h:hX+U4дJ-xhPK^ZTT,-UTE⇊,{M,bP Ӫ͊"V,@6OO֬Дd*Hbn()1vhF< )kFF.g8=(L;U/0J1+u`hou(䍅 [24ZfYc 5mƻT)&=7%roMaicL`@{f E 4MPRF6ʣ2 = rF4i/k!gE2<@(m)h/;%M$jk,)aզy.i$ T? /YK9j>|o \n{N۟B:䤂/7P c_&{_R7, j1YGb9 ?u%,tEԼ*4MDCCw?ӻ-B=9tė(mz'\=N\e`wm ͂2b9} mILƻƟZ|7 @{ϱ8+jR`ib@N_3Y2Cm;1r!|3Ϥ٣]`$}!jO44;ϑ#>!-/_xd!Hˊ24t(%{򷍽ҜRQ]mwd65Et˰+WZ3-IloHnnn:t׿ swҋG1`ÔO1ۀ Idyj Xccٶ0-{뫡{>Z;1kCzC}C (2xv~%$87#!HT]'V6f2d%Zm,Yv*wgbbzY @C"Bq(bXȡBEp:?*JT~~%}oDp:$DH֢|N9:@uh[B@",z {*cfTl>uuq7!kmGYU9୐BV6!~ ,*d}2!6BHBsxɓ'[0N\IJ.b9 \5g)d0:.}ґxE刣~J8#aɣ=3bΠOp!BSd %!u8b[\= q,G]~, !0n ٶ qGHcB|MqV bHfdǙB|=`KC.*MK i!y0>%, l3g`@U83?;o ,c-M Ih;K,bnn“]o(ONa\XV'X\ @a@:WZ8_rÇ?,: P YH2'K2tG$T_~l`PP}ۺ@ < rm(Tk}^?;1Z$!QL;;耎zɶmp/X/Nppdɹgu dݶmA>\CGt;;;Ǟo& sps>rss|LioTMҳmm)ۥo.O$vv- 7j APSzu,0҂t am=BH?ءv rf䦙y Mi%%g%2fp`ɕ ~$!QY{*!PBMh#Zk"SE\|5ZHwm.p֪TkzBrHFrPFN|!RQ/Mzr&X9YU|6[)QvpTHj$(ȱB7%$OIMVP Xlr#E@H>[$"VCP$$`%BL36 Xp,حP9 l& P$̰ b$TeO{,\,I ${!D %%1`;`X5,Ěl 퓢- i/)dȫm]B a_Vq|Il8B|R? Yr\.WB2FW%!_C!a>'˂^^h娴Ä>hϴ\THz'He$Z%.!uB|p!I y|JhIiH9uAV" sf. k,fkqmHBz[`9 E<<>5e}74h%Y%z"Aɠ:Bɗq :8;R:iN:ZW*.$,Ho4u e_n2p 'BoYuP x2½b(3Qb`yBKCM. 0LU۳# kx~,pŅ4R*4 5@PYH"?I\HP!{9 9Τ_.$!&H @pIA<>IڹmY!vP4ZSV+(;R1!mJ'"Al&p:RDSV"qP"}(Jx`{Ԑ; $|wSU#7Iq C*HL BM$M} %*,~ǑXK% Nj$(j2AV m=ճ)<(ZTj,$oqy?IB/8*)ͺIfnn.!& q[A %Pz z OBgP aC$ )BKIȠQc!,qB|$N{+](DžX4 !Znc[1+-_W7)VAG0Gr Zw7v(dRHr4SCCqɹ>iQd %,49BI 8H =yPS2/DPi@U$8#@c;QHt,Մ8tA2$ٞ2Runf8uid>j8[c!#jAb ^xѮ>`g(3:ʤ$'CCsC 3}0!f }#/ ɤ,ޗNB,Ɇ(q_Bojh\*`%enH=cx=lCLL*/IiJwGT(ۇz-$ i!ޠ=T@2 PP+H0'$]GqGN,G+ "W(C=|p;?ZKcՑ]& 09HY&ŔpSzz(,PlC!(Vz BUzz!#dB1G`Ҝ8qHaX#-Dw u"b_C`sC"6YsՓfד,ț"A9鯶|?C.}~n'==w'o-KB*F0na`Y;{' 4{H/ Qؑ,l-̲RB&+Y͕L\ȯ]s/M߿yAݾ;10t=! -be&e9n8DȂ i<7-DQRQ 'Ƅ8e^ j OCyH }swOoj-Q_@ YE*=9Co2#cVHsBN&K~ @4h%h퉻Nswcw$l_nc =CrI0SCb[>}Kn}_]?/O0en<}w j|WXC!+@ ߻: p!,|T.d?5)7eⲼYK)\-JMxs=ۦ *_;!r'm^bTJ7t7E 2F|ux}!U( W:FBR!„x?ߕ UME9xxq|A2b Dh G "u[CҌ,<->l^ 6;귌6B`! TäzG*m4G,3\̖Y0\z_87WD./4:v%&#He!|1:4B*,Xe΍La[$JL#?>'-)`M#Q8GX9|!plv zzz1,cUkqA(AT44gS17!!Bw6 z o 0#DR&{wRN-In ]#(>=|&(9*HH*wTl(ÀqgllrC*5 SvB[,BJl !Нb!ʧHr0u 29Fح1[,wrY5C);?﯅=L"Z ;5==}Zʕ߂xyp)Jw YVbᱸ,7c:ؚ]q-,6&f@ߦo(,݃ Ha9~{:.9߾ȾwPW.(}"GB ",Nh7魡>x]q 7051[2ۤ܂tߕ-7̅p٨֡Btۺ-҅ #\g=xy"RBVm ,|w~"6fm3n7}ޣt bB]-w] ~pMmX i i!!½7 غ,MH_$m|ߗmIUnbCXm[p=H49ؚ/Y}qff"1S%mEBߙVnP[ ZfG'ڠ­?=!M12` Pdimundϥ 3~˒wBtqB>+*v0l55Au&9LI2?ˢKXo9C]&pa"wmlmBJFpnemp@8kL;lIB6=Ke[8a@Nip$A n%0( &8%_aFS*)D ÑmqHBEoKDVsB/Kw!-$A-:RW`(j!AuDSpCUheǮ4p{1C!}h2,v=~3И .΂1uI<`cx 96QBBC{H3B:zO~$&;9$FQ'p IC"1!1DqoMP]},^:imWtqb;bBCZ0d\K\*56{nC6|,Q0U^ݿ,F:IRNƎ3 >默w#B'ͩmɩ 81 c$v[  ޫKcDOd*%X BcB4``Ua`XHNwӢxn5IhJԥ_1ƍ7ʗBDdбUބ@o~iI&xB@)  1+Bmu"$lw64/XB׆Q-WˠsqEB.49!gNB[E"cĈ sB^0S#!hooA++ ;e$ӝ_($N_ߪhwtׂ%o~;Jt}66hHcp_Q'gW&~#!2'$oB#u蹉`6bbB0v7!-h.2h͆p 8 hw $ o]j 7'$Sc!BVEھ솳MV}'1'yZ 1 w],jMtAR Ks񷬇V&$=.7$,!O>oBaa!!hlPѩ&(ńh~};j Vb.;@' }첼 ^&IN0eʫ #ssR9ŵwjڸZ=qOߠ߻VNߝ B!Vx >D2Bҽ%) U&EnO[D6B: &UR$5up^^ה慀 v"ỀfYPЉL5їŖ]%*  o5OMKہBj(~8OT=ZyltׯWPWݗ/O!CZ #yJ%[+!+vqJ+€"PFUG^{{QS^:6yzO6{km.b؈hXV6c 9K9j 1{n`h g~uॡʎCWL];&wl}:XgY>(ư Q,+DX!< %sV*HnH@h s s"CP3?Oe<`g੸N|﹡ޣM][Zz/o޶Sd%t(AtDz$U" ^[bVJ+c>I LZ(<  >u8 Hd{d_ a܇@jޫm=E^r֖cW~JW["`Q]u<$ V.!* xx[8,nuH PjZV0.@^|z 5דc7omz}ʮ̘ÛP65/J hk„Df17_vwm?dD /. )z䊵0_ __R_j3~, <~c1 Kɣ  /uU9!& mwީT9}'߀x <PVS^YMd wPa#'g9 3@ .pp[=),ijӀiigSdiSC5@^F3`TRw)"aDS/ZH;4ͻ=&jh ui"z㯟Zȉ9IV#,|Rk1cCT\[cԭt%t||̭h0 %" R, + n?&}װrPӡ~,dU~ȋ@9,B6Z= >6wMe XZ(|ްN'SPW KF*9JQm+g$Z-D~ӑ` C3B2 3ߜ0 x5#үWrBJا!zR/^FL-]zlWgr [|&g WUPJ֌dqU;SBߗ|:펅/` 䣣GW @(3j0VvQӟ7l@+;(x EGCE7I3'bS_l}>zmX%R$2j+B R#^9Ln8!s .N ^=|~t42Z(dk0"YOr@m!> κ_~ya[HQR| 9ׁ'~.Hu}! ϴ)]Hz"F`BP# [^? ԥfHR."=h e D 72Z˚Ld49@w^9z5"~^(4mr^?39BKv@1dEI`{04lr~p=ڲi ~6B0~Ubr i![ u|knZ*~% ȩ31hK(=!Qbp!bB JZ'+R[Ŗ5mʍR bϯ G+|@<g#pEno\ʭ)̓$S㏯\6q6HJx=&(8T`X(>"`lmɾLN|uv\lUBq1JlRJSJ?d ]_㯊5?==66oUAD%vHPg WT^nN(ˆ->Ϝ/v w"j bؖ2e=\P8?B /Dyx sS| THtU)AEL\։#u~q)EháxY2~mA1,J$UH_?* yֻ NlIY!xcdyY!@ ,G@ҷz`q`b.@ @H`hO+J!['  rP EQ U@uD$-O@]("YOQA]uucc205ZIcJ%M_A0N?@O P@@tß-Й}?ϥ,Jg=*O7׶d?l;ފ0&/_e y9 @1 2@Ð p#$]wYzH&: $[ŗE8l |$VbuN'!62*`A"_%D,4M-xDݫy i0OLJI, ,DD`\|rpT**VM@Zq};T ?`ֶY4Ȗp [bȷ!_jq6{m\.K"LKdMqh._\ .cC~VکV1-GxCDk4 @u}ɢde4]=a?IFŭDrBf@a޳91PJb)*nN,^w ? -T"'LJ(Ad,1\4|( ً%+-*cD;6FG@1eV,s Q+P\y 8=QNdGZ)-&CDž!K4Ąd@88P}ipe* ~5؛B&%i)џ$k,!$2.';[(.j͕';U1-;H6c$%-^xm^ $t)e]9i@6xo  i,2E}Jv"x #! rU괕brT ;iCM`pGR]Q6kvN=NmeJVXgS)عWQ¥vCm1/FYtVt1k)rwTr_Q@6I9L^K.£@DоnHN8)l|9˜ŏ+X|N3@TSx߁2L {w_y}i !mY!jYݷ Nl1:d)1+lSf. t%1-)l@rkyUE>ZH:3l $}l1 |zP1َKCŁR"ŠK֎r g@n,k$q+1J"C(y$rm}L0-8"%ˉԡ&_t/cp:ZG'9nfUB\:PeEj_%D9@R8Bc<@ `Q l$DY5cc{Áv c2i\)5-D\Pɋ׮=ͭ>|LD+[~YcP}EU;cTeIw*6K:xc'g|V.,R/)^v5c1$疮HEi;D2# ˂djb'Fl&[eLqz0 SOW惖Aw5-D7g\)ˣSXTϠ >nff||bډڀj?#NTev]J^Iݺ?R0p396$Jj؜He>=E #4_pP5ρ6FAgh`ŧCp e E5(6^4rLpJȹQNF)Zʁ>()Kվo Yb9 YNis(8pbBE0u#Gj c+y,%IQf @NsSO|huR",/ Y~z@@@,F_*~E5m)#D#eșqǭuͺl,v jˈƣFm1HtyKnǣf,~jU].[nKWd#jwz4熪/K+),,GbtZ~Y:3:{<>+O:ͩT3bV[7a2O;VK>3n6|G 0!DA\k>ثJ\v)6dD\ikekފC~ 6ʁ1#{Q<|wY+n3a˦;0v f+{,I\*_p*S2&MÚ!~h1:Hej?}*0|cX?zl!ǎ~Hӕ^ToȓP1ئC$(n 8@ AؕhO &?$VxW{H싡.tah<C@>x5:MXfzB8{ jo`h=ؿgvG6H;̢5} ЊbY=XVSi ot8߃]琧>՞;*=FDzS -4wBxq Uۏ#yыz1{qF'#.6BfXl &b\L>8}$8zB0JO{⡭(HaŪb>BFQv&g8N^ܿ_xĘ@ !1$)H{N^Z_a{2{|o"@Fؐ8׈p(IH 'v~v\ >~;e8RvmܕR D C1p, (0d!?4=0 ci{Ǐ@bQRSSC[PșG'zg߼}a(0PZf Fݸ ߢ2ZN[b9~;FL)ֹrDgD.qK -g[9Gn0@2yB:ev]1o߆=x? |M0L CKkC Շ5Kc^o%VaU៑iET,":':7NʬrI @e Q0tp0Iɇ] Z#&0`'ɼ"vVKHR*%e 򸀢u@Ba%]m.${n.ƭ RMr8Ւ B[!nRR#s"3?X`FB‹'Җ|,^i]/mL>LC;NOR֣GA2:<~ @ XEefzNءvXiO{a*4Xtw3N4eT;iAgT(f\L~x`^qڷ~k: 30@VJ|(-niSǭVB[Ȝ[:pa2h!ܵz*[gdnR8݊N Q]4, ֱj /pГ1r=@ۘ Mto$1!1VmDoi32טV+$^@2"I):9A@`)cc [.Yj>,|Hm/AD쉢4b^)wO~z4SREr"/(ȑa\Ip? hkR@,@v.DTӝW @**%8gKxl{S8;]>\ҭ*][`p%Վ >`I*MP[UHa f{Yk-.ɷJG53{sz K jDj\/1u%rL|*VhaPh>=94a X΄ܟ#$>WX. r8z!U,Y`'X q a^N Cݫ^91Q$B}B0㇙0613kLr](쿲_I;i8>`8G>9K0})o0&n`D{ra>*}=Lp}6?j`bV*>CQ4nFH~O?KCE@\ Q8>REz=+|.6Hh1e!H!"VaX$T%caMAB/XonpVw_w LBQttOޏnD52L!׈'rMxB8b ncfBs%w@rmUxϝ08=2$~q;H)<>ɇ/ "1!mh|>Q)ĞJѓ~2E@xw Q%Ǐ;w[q3Y\]" 9!"jAΗgBBw5P&nnEa&1B$ڈ22oUT0@\,7T1K>CQE,d5Pkm*&"/ bѢ# U+Q5?D{hdk"躬u@q4 g[I>*X:kVYߖ\>b+:XZД8ⱚgy!zC9QG|,-VʯєFѵ])5@+Bb7LiU7ײTj׶:aMU-J1U2"+sbJMnTu. ֦ʑ!l*QfL5Ί7+-֪ԨjUbbC! :OV-Gu$UJmW̊QI.f 7 ^k 3 @&0J5 R XMe>ԧX%+2]dSbkd$^?Y!XwgldJmv I>RQBX53b*.1PR0EnSY Znт"jȆ5]LFak3: tB!ɔ+S 6TlEUmښ-JLτy3J"(x!'ThBsi@+#+qn0>!|<*9b $aI7L:(@ن0]!%c(XDIKC0>E[ 6V*6'W" L|WlXVƔU=6TyCPpm`]o0F>\Kb,NU Cx]>#2CBF@▏aŠ|(T)ci0b;eTK c!a͍j4a04(1`\l1`\ 2bxBF!/M|==Umʝ1^I泌T"+XG+WVXxR"ĹnC?__Ũ/zj`ٟNo> Lܙ_\\XX^^bXʼn+X^^XX\\ OS=qɠbBA9i! I\=B:qABfn̏eiuOH/׿-[^*-":ЅbE6   E^&|K'饯 <ʿg+?qB+Dև!$ ]D ~^eQ!YX@z?u(~ + I.dVE?sq t@|u!لəmY%3BQIJUQ{ԅHy`0VS!iҗf6ik ;qcن ,UpuvҖJ6dzӰٻEoVV(8F=5\:~!/;aTN^uCL"/L ݪ>WCȭ1!cz>^B $&#C{rL_^uښ8H N,]lzímfӹͷ-+ӹ|3&|kGr^OTDFv{{m-Y#MuxDGANF/2<7&,asޣln/2B\VP:\Ʈ Bw~'dtGeY[_1?$!QCήL嬝KYYB\x織1azl v" QH.r.ӎz{;bQ׶\{_H "9+BueD$sI0v$%{9sj;¥~(p*K'ڈ ,yխ!9!tz[ds=ު5=MJGR}, ڞCf?ẚ}9[V]+"U22?V)Sij=ltm!ݾc!*/:9ʶ$-$[4 MM?E٫&g2Q?Sr9ӈٳ޼U͊0.tb'qO@p !L+0pS.ÖnizAДrS5)#›qqt]VhMښGl -́wI2x&۲m%۔9LBD­8AW HEa Hbm q5nu1QpTTă>3CJ2) VJ AeVB*'zED r1%U2vih,f -Jf7f* %XFt$V1 .y.uTu>yxJ8 ShWY/!ʫ!ALޞ(^Ɉ?x`i`+$6IENDB`awf-extended-2.9.0/images/thumbs/gtk4.png000066400000000000000000000652101477403510000202300ustar00rootroot00000000000000PNG  IHDR`PLTEC82bF9¶Ƚ̯Ј[HŻwɻގ^Iɼ˾ʿyTFǽ˽eMXCՑ`KޚdLgPcLyf]K]IbK¶ǿø̿ƶĹڏn`οĽĻ÷paȹѫȿtd̲ǾՒ򠙓û[JѴtX眗vdwZǮޯpTڢĴĩk\æƹ͊cRνǻգ䞆zzg~TAǎʅgZ|XHmZބXEǚo[ق|w~rsxmҝ`Rڽpdxso̔ziĸޠDHKa|yhYOѱhFg߷ȓԉե$"!5ޗڿt᳏lHewR؀d#΅>Ь tRNS\ UgAIDATx{TSW;@0 C 2yGB ѶHA@TIIHE A2Bic| (b]7Zsκf{o~/~|, #N}k[M7nu6cSuqݿQ17ah߆o߰a@_򟒍^WwC๣9 ho$?<ϊGB,yhPSSSC`{[5?{Wu烃^7?xo ٸ1fo|eL*ȸJ~rvQjwiupG`iho[c/Xvrpz2~};mL=fCC{;k߸qZ1ޠ=ʷ7"o@k WRڴ`@H|rfbR9:+󋏏5fVV1|l]yBRR||ǭCCe5*j. ߚ{?_ ]Rr&cƿ"oD_~ΧK/ŏů~_OiyԖiqX՟?Rj_ VƦ}Q]X<~qeg#tnՕ^ue{jtugj5_H u} r{ckkkV^itj dlypo??BR_uu3Y架/)ԡscuz_\i55?NM}yhzlZzVuVxl1vۦld~}cl/+Kt)V88|СCcPCW;R? (?2)|>`<3=LMz3!+Gs6^cc`<]Aˤwh?9Ku+_ ܠ)ƠկY\YHCF5!tsV1YfikU_8:<ٳ,9*€*eLBv]uŮ]LcDЄH"tfeڰ)%e25|,U$)!(-i 30I KLo| `+ (Wir'vȘ2XS1x4c~R&_Vˤ6G`ҦjV_{aV;Q|q_~3,f:;vְqE˘퍼FvQUiYNv{}:nՁ>cj3E.lΫp2kwT}ZiF5_D ֪iUrR {fjT lI5{5*Uf-3yBXrX-Qi -ҊkNSB[N׆Zam MM}Ec׃mkDmFOHK?u#\u.oWk2KLc1lBkU2ZZke:NgL`I\4qi"xn/Hy?< ]MaثXNsVG4"lbebi F%ޛX"'L/3\4\ !4m!H o(5!bB^.6۟áx6_z_=k'dIS^3w_3$zz떬bdzy&XS`n_))b(8Y:uɲUkWAm_c/isN`ή]36>\M0kEoӗ M3++Ii߲ʲ l0չ5kJu}MOhCCCg[[7%:0 KZAɒ%kL/BQ)|(I5U5|FY@2!:%fn Xt<\ [Nbe$Ưsi"sǷnݺ< rvdh4tF(t@^?VrF)ɿzg (S\g"Dkg+ddM}Xx~[O$A[ϲI?nT_HByűI]qQ&D<,֦]D [#fʪ֯\Kᕟz}OYLnP( /?A,Z~~I|S cS^,Φe?"B? M{©~`3.?dp 1Qi&I=l?gziBOrp^|&28?* JϹl?@~.q~ Bf\gGZg@Z= Iϑ ==/&& bz$s Yɞ6|B䐐кdɇ2Mu:b3_j@;Kux~tC&ߟaVmjmx"/#iYFK>%"](ؚHÛٲy"\./4hbF-^5Yts4ѣ̙##gGM.ʀ.^b %HȂ\wyĉˇhjc{py ]g(LZJ! v̥rL<V|Ύ@;v2hyOIb_Z7 ikvy '9.{٬2cklP|(/8e) !#re;, R?'ptoYݡ/Qr:~Tg. ljYFI 7abBH^8l7yR  qxFp:/eCTn݈ R!T*?$)Pp.Ts&2(&!Ҏ/޽孛I4o=M89 } w; 2Kb` 9lb~-!ǝBXreDDdPbB3Œ0[!mxBpT%| ӓ./$!`'N9bi\cJX~YR40O!)xJ !A+ \NB=Hm?h"j>4V4 'JSB^ RSBK^'tjJ`[Ht(ZpRUѠ䝒:'H[U _]줬҃99&7ׁC$SzP8,?[R-ɓVN|~L&s^y?X=nn.$~~:x pf)O8DKgPۂef(#K6։|B|_+ٗŤ|2eM,V5URx(a$!4Yѻ9`$=TҭsqHBWo C gGߜ `qX JJ0$+!Np@$/8$D1|E2t w / v IH %&$aA& Lt$l%,F#Hq8D`=l|aQVrW F4)Y0v2] dž$~TIW o vp! f#f[[3{…qv c*h2ӼsQo?$\b PLa9c­'DFD.99't{<|)oȑ:: &:lYkwƴ={\7M`?hg@H!Phv'BɸPׯgS'V*ݰ/uB 0QfBO{vniy6Mdi? C>DžO44'g,cӇٹi<9{وsΚ%&sa2:kѷ4L'Xe&҅_oT&YV%M/aۢMBx[̓=7qk&XnB!@w@Ԑh(#n]P!)CBwJ,Z'2wBt+3E=w+4ݶ32)I ?#57 Y7w4 4݁fGu[A,B؄RcckéHTNR#AeiCz^$6HG@R@!X%^Cj@0Nh?OSR,|I3r tJ\:5!lIg 28a`;݌U68IK; M~zgV7,F $(ļ$j&#D?ݰRn8͗,W:lϭ!W\݀x!&9q3?BiE7;9ha[TGRLR BvX I4wf8{h5$'}(k< h{`aZvR% azp1̠v²âN˹a|{'Tz97ocBzIcme3YȞX߁;=2J6SXIX ې$ I򥀶23 kB=EkY Oضz HB !BAnnP! #s 1+c?L$Lg , ! 62˓$BpnW\e]!FhC!!)f< n}+<8O=ɍώ}_{"$!!(CK!IGjJ/"v.C֍gX-ҏxr)gOv}TچK"$~_ϞO]49u7"oo\:ձkye i-[HO"xNA y ~GOn$L?Soޘq쫩o?سA.D"m4slŰy? B ؛@" u`̺,Bhr ̃ 2f`=YFuoa|GlH Ɋ`\X TC?! U8k V:E)K# Q/#;m eH}d>"22yurlo+Dz}H$cϏ a+Q 6 Q/<[]B1l{wmY6A]{{ކpvD'oMh'_j@U91/fBD,[E'3kn5dھ(J#눗DCmar:Bݳ` Q*I#O B(FBrs@QJv^pmkhs‰ЉSѠȉǣQGRE@MH5xhM 74|Z:?LOBDA`kO҆ub!@ːEґm/܊$2dYہOo9FPM9eKkj,f!2bXc[ݞ袔h ?^qaa@zt hTcKHҩ)?5! kM>kA}J*|%Y S4<d0bgY[3J#11#aw#9iaa#|LezNZgH`!r--Nhnv , 9D?A-(.WBj ,f -=# @žH\⌆H'%ĘEdly.-BB/BEU8(b RtGPkU\:LfdH trZ[B°,&bΰ4)},-NndG"A"D;QK>υI(rEДHԸUa,t@l8%F;/Cc`ّ`=݄V3.YT!VO{9)w a#Θ|X;˛˷;T"v.ڊ~O!'$nS{ :ѹRn͵r eB(3B^xsqQHA2ыثǺb|KBv Exp-E\ݣp1!_2(2ee9%E[rB+E_(b-Yr.=~vS;p#G.`9=IQU5[lCl,rqՀwyb=ŅPR 䜶 ,lA_M}O~Տ>Rseev[V al![0!ɕLN~GnnU~oߘR¤Kq53@# E1x${7 P 꾊AB@ 2K$G fGSM6,!r~ETx'/T"K,*c S\eYLC<ZK"'ȃ٥@<Y!֜O?YGӇ^GoJ\Nc'g!MM}4R-6vKq$"-=w/`5d3}Eޔ_fyȢd^ww*2w*DE 3bHw%V%C; r6 דWQZȣJ0>]*@:`Yk'MAá,`9YlǛA[2>NaQEkH>8pϲDօpk/ $r~@){rLaeYbt&V`D8kҵ| J ^lÁK{Y1$^ڏqEuˢ aKH!xr=|P6.?@ɃRA&2c󊭐$D@DX{P払ku]CjB]53ORl9f o $$әmȋ[a2! r@AnBPf uw_bW`I>dK!pD%m!e`2hK‹tqi|QՙN!DI1Ut r9C:)ȱ^@ꝡ嶄Py7 3 ]Ij|]e|,tooOp]G g` C`UDžTa5 MI^' LnȪ;Sȍn(Mqb6de/rBHgIu,Iq'j|Mؑ\yĭ%;h`RHtΒ%90xtidɎ_P78hԥAEO(E)+Rj E-N\p|aRh)>V㑴ٕ$!DG@&r#r\&ywG0' ,b۱sR _JPɷiW\i!,yBH%D믬ƹ@B{}1ho!}϶^ !/"D^G-D99'EUJ3NiQ^;}El7/,l o!R`֗E:zs݋ζ--5׊z.';ANiWƘ Yo[f 9@! N醸Iә9-{ x>^ [#\9į4_<܌>RHIWn YW܌?|JnVάÂ>ǹi)Jv+s*7ήa$!ﮟKHC~_LH3 X ICݘTL Ⴄ>M ̜֯V:"a7,貛0Z]" bBvljݴń<P׹gZF hxc1ci7q  `A`A0$@B5#i:`Zx 7l6M;t?JH dy:.s7aIwoȒe X#o#yݟI! fIuX|@tʽ)&& 5UI6IT{UtfLNS;Aƅε< r(?LsB6K\sTFMσ|59ە"W^Q @;˲Ц?+$|:@K6ze/Ga@G( ty fB!@@!u2:dlS[VF&0WVRʌrI$\_֍u!5: HoS^ߠMz%xM< St [Hܖ)HDph_(gJ@/,z=@^"b@@?cMH|Z@[ m@:mhOBCݻ"Y@G@@9fC.WAARvA9  a k{ /ϗBn8FI%?M=6Sf vm 9ٿR*[D g_~gps)=Y9c]:H'yV+$5J ό2?.jTaV͸hY$4FuT[+͛S+ @ 7?n@ ֎amc[?}ć??_[  S7+GDV Իcp4:xN[#Ri>/ޑ!r+^>uܺyq`jԻee~O@*wzs$Uvk?wwuzoGnx&z/X';IpQ۲bMDDjn~M74_6ta_٩ۆp_yOzy.OCy 9WR, A@vD#h7lުB#-!i%S=`,<ҦF"pJ9M=v"wxpXߟ?0n#tB}Btj@)p6bE乷8quf@a k<&֫D\.:&-f|uJX@-$in/᤼Ɂ!w2[80P_]vP '7ƫɡޱF\0wGԨla|f)5Nw=? iܟPH V'X)?arSi^ ^Tiـ2KJ&/vUH dOT8VY׵´ H?\;KXD c9 Cü.x^u6_> ?n|,DXZEl?&.}{@?RP <+="n{Zlʕ)2~^mkh)l9@ا1۷~-" )&ře*HE9n7[n͟ywZN4TCu{/ݥqj E~IҌ_~-1䥿 !t ūj??dz ?swuUWzNA&U-2_?dwRo͌ HX^~gV(?^64ոoxo5}ۓUUGyt;xbav6Z2_8BD,$G9=hw7ݺކ;C܊]7w%\}xD~U^^ׂ+栂K@kEathH YJh@|= |GrF5"Q/zE" Nr4XE|ު*\# vj@il/[DݽNw_~P̽IHqIXZ4E>>Af,Q=@{5 ]"E=(%R\Z |ak Cge=@&OUY) jWWfCId"$xuX%ixv@!! >'4y-?QOH" +&F 7hq\O97[^FK>Cβe[&Y$ R'29ե/|Ϫ:< }n qB H7%'`@k)8Z}i XX]xg_k?!9@~SЃ# "wI:f^,)QTRWG.T '>@b)6mVR@&G'(DgL&D椦gg C ܼ(Ϣwvi^ Gx$)rTSO $a[]]x.7/lP  &Ӂh8Nj9,7B]LЁ0vDsGE+Sx@~ȳ dش@(_7$ 2Yi_?Aʋᑋr_ۿ.:JA5p߲s1"!}@ܖ.4I{pu '7u<@cWm,'bƱb %*n{YVuZ+~֍m<@*TyVDv܄W LO ZYR 1_EzKPja1D: 'aMC0n׵_nlk[Q7&moN]r-Pf1{zom`x]Í( :rL.m_o<$9#B! Ǟع:cw.65]!>D^˂.EqU(@ȕ }aa3b ~N]H\RIa@Z䩇bxPiFZȋAn&T;2i u)[/Xo Zv׭?nz٭;[Vuac(HkrET]iIT+=R g!BYZ=Px8@l~p (P." DP14퐨4*&bDۢb Zۨ:L-r u QpyL,\%(sN{LAf w-zkŘ*_\p (P. hkmuzNn0L*daMEjśmAc{Npi@JVMg=*$X^ }$, Hm0mv,%+0CVIalrf:$.ݲ {m@a_L,:'icd9}0iV!KӭezH-CLezȂ*X&s7CM=ZPkȀPQ^ CcC$ 5M 4hZTtl 0 S{U !I ܠ@'T.`al@m8s^o< gźg#ܭf tm/DKc@v75a[͊$& K!tr@0܂{$+ w~%CG.1H7T5?絉}J_K{wIP;a}b8H4v*YB сd#)OJ +pXA/+n#[zXUn:Hf$^}Na@uxnZ^}1zaijcbU[W_Nz/^0ǰKw?HSx}t?a[麑z8Xt{()$8~,AsIH$bCI#Tȗ5K )G`K!m%!qNϴfe̩A})" *-iѝA|ER >YFdcRA,K]__?RW^4N Lqo'ȋ1< ,qAr5 %)~-FisYrgige˲?2uCfV a103B5k! v;@^"(u r]#c}mUCZ'[!`G_6TUw V7tnY}C͔䝶& K:Ĭȡ &=x(1e)mlr12zTVf0Ya@z`; `ctمZàA@0o&%+1JՕJᠼ۷?:GC ΁Pb'(wK郺`gZ d1?TD`IR9]~44G:mT39a1 l K :ܜdLN 19[ jj%9gH[~$pK8/5HhZJtс-;پu,Erؠ7]PGfbr8ک}@ њ (_Kޛ_fC{{)$sg< K}‰K!ZR+Z"*z Ϛ$C6I> 64zeeebdIfdcy%uD B;rȩ8HphSQNJ%0S꫺Bn{D7¨bh-KGeDVZKf, ]%k.ҳDңu3:˨ w޽',PKa#f AKS&AP#_D Tn8TPT/*Q/YR}6bƻ,1ףYdN`XpV;k4$j7\k;[P-\Y$>XaH.|Cj:;vU ׶ l#wWnUS~l4ev| ~Z_ Ӵ\kf$pUVU4cA@B-cIFCL sdzu (Yp3גf5 _|AiܖzX^KGt,_|iwU R?`n!R#  R2V ɶ`iႀPZCdMc4dИZF8pA]fMb fs8= 뚚zG@ߖ r sC:eš!җ5 ޢ"Rش= $OA1XTyog + ԷۿD!&s+ƔBTx=/⸲Ko[0hqP>'JLN\dʈߐ*b Yy9t9R V')_&$C&÷'%F2߂Sx~>voŏv(J)jEjДMI'$h0Q((UM@zXKvȣC·ܿWj oL}M}e\L-KR0uH"tf_ GG'^t}aw]N~ GԱq+C(8FSO^b̘ZyKxkꛯrr[T6|HWfv_Bb(jV'G-Ft5g%va*^ǒ`kc" ӴjaXvi2CNvjg7]U65RS(J4)+B { WgOZF=XfJ@R&zmSTuooi@V'ʌfg r+Yzfu%.Hh-YcA,ef7IѰo/_iY2'qMgt:فoVٴ+zDgui# F3f,1\0,& dN QNX72/f cCd.3.KO8eFտlܷe,IvR.I,3-S1JT Ck T35Ht Ì1[VTsH&tKs|$}zh2ˊaƼ=}G94K= ?):yDN$Ma+)9CrQ EjV(ez4@-Eא-x"])f.+ԊXL*"N1qbF+؉S,S]@ټ3N‰@ |^@D8{-S;׭uQT]1a& nK],؁kB.)sX%RHK]M(sðN-Ο,"?vJ?m T\I67aL4m xّKI,H#q"qWR!t|&I$uvZ: itHQ `ĸwP\s޲Wh֢C~<;KɎmZGeD{$MG=~Bn>~`w; !,O {\þ ܰ Ͻ KCH rcrnCwQu=.6G}omdiF%BF˿!7QlS~}hJ00<>W~&|dV̿GNTsmXj{':Ban@1-RihQ!e#M!wAǨsn_<&^;OϽe][o^1{A^-t\C l lM{h1'؋QIF ][A8ul Bl+ՙF}F`K#][R<\JwMmppml.y/L7~SoAϺXӁ+O蟶|c}l/]CCCoS![lqhj1`]) 9PE2,nKJq,4ό14eAƂS3`yW>!^<`~v=6"!hh&Zy/8'F|AȩY?qltJ,ܡ`8g1(LԢ2}#_kWDH[~(_ bqaB3VRA57j%xM=HQ7̧ ~a^RF;]cx~OѶ|7B|U)Olgz'|s0| ZMqJnl,׻N]-pXX=8Ad,64MC0xu{oobf>3G<>b=689|4$g7Wls /vNwCĞe=c#b cΦ tL0O$D3 ð\JT5f)b)# #A+4Yp2Y%C᱃0WJH0+!Ef=\YOɣh" Y֕r)0j!ˑ\<WM[.2LaWHHY=2HSb $Jj'FN#Wy`?(YeJ6We YʏrGxPz5IG`n~q7_xawevV'Ai0Fg{z{^U3VbZA>Q{{{"״N˳Y$Jݽ›K!c}}꫆RfdRpTVs9>@]4ye;Udһ wT''E#_[SdB^)E/982w(^T^I Rhtr&rR0z  N/MFGWAo(.MZZ B6\pJ>28w#+&,'\o.M!lPHRXBvY0L;ra#ׯ4K!#AS0𱅞R!ǎ  lΜ9q.$7,8oH"/x2Z)oa^s mB6!s d0<8N y@ul0L)dj_ !+D`4pdD,%:]?Dvbe+䅲ƹK!ut!3M"p7 3x:F0*t!Y^g嬝Ts)EKwZ9 ̼@e-p6@;_h]$$|])qmq57pހѝ9*, XB:B%8!? y+5ȕC_6=NY$;~x_ 2![.n B/$ $3]+$T fBU,!y R&^>$.\a ,h?bh]'dgC`})ѧ,SWVP{u,SȬP8&'tI9­p:kwr vG6&3l!J"4K&NhGC;erH 7_HD#FbMX6KytK]]uY3 {mf))kBsmTmTכXBv/aFݣG'&"h&deE{'؄ʉSze/9z** FCr4t? iL0*^M~ h0пAL(l0jBЅ2EU;. !pXă.'6eFԃka"B+qz㢑=4{IP&IK-Lv UC)PkFZ!. / Y ʜXyw'O s ྨˊD.E=!duYH)I 馺eBC| dG@HחCN< d>?N$|YJн.p!'Zęg-c q xvwfli1bc_JEcVxI"Qe~[#u"aXB:  Zt OY'{>,ZZD-a36aXX[Y4R_ f@s"xͤ`r iΤc.Mz^caZX&EӋ:/XM0wVzqAg*s _!M0 nQMW N#TB+DKtЄ E (J)pZr!#%$RE~$ⲦsũW 2BXP)qT. )*]阖4P2Y׸2N,,22ϐ.3deB0DJEFP "@. ͕ a:E/jGb s̙0DJFʄ*RB9VUqNxHsbG!8N92@؆DJQ 2ø8+aqgLwPŤY\fbSRy eU&UWYtDȢME' {B֎Zt.WͅIENDB`awf-extended-2.9.0/scripts/000077500000000000000000000000001477403510000155655ustar00rootroot00000000000000awf-extended-2.9.0/scripts/archlinux/000077500000000000000000000000001477403510000175625ustar00rootroot00000000000000awf-extended-2.9.0/scripts/archlinux/PKGBUILD.gtk2000066400000000000000000000032651477403510000215620ustar00rootroot00000000000000pkgname=awf-gtk2 pkgver=2.9.0 pkgrel=1 pkgdesc="Theme preview application for GTK 2" arch=('x86_64') url='https://github.com/luigifab/awf-extended' license=('GPL3') depends=('gtk2>=2.24.0' 'libnotify>=0.7.0' 'hicolor-icon-theme') #makedepends=('autoconf' 'automake' 'desktop-file-utils' 'gcc' 'gettext' 'gtk2') conflicts=('awf-git') source=("https://github.com/luigifab/awf-extended/archive/v${pkgver}/awf-extended-${pkgver}.tar.gz") sha256sums=("...") prepare() { mv "awf-extended-$pkgver" "$pkgname-$pkgver" cd "$pkgname-$pkgver" sed -i 's/ -eq 3/ -eq -1/g' configure.ac sed -i 's/ -eq 4/ -eq -1/g' configure.ac } build() { cd "$pkgname-$pkgver" autoreconf -fi ./configure make -s } package() { cd "$pkgname-$pkgver" install -Dpm 755 "src/$pkgname" "$pkgdir/usr/bin/$pkgname" install -dm 755 "$pkgdir/usr/share/applications/" desktop-file-install --dir="$pkgdir/usr/share/applications/" "data/$pkgname.desktop" install -Dpm 644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md" install -dm 755 "$pkgdir/usr/share/applications/icons/hicolor/" for file in data/icons/*/*/awf.png; do mv $file ${file/\/awf.png/\/$pkgname.png}; done for file in data/icons/*/*/awf.svg; do mv $file ${file/\/awf.svg/\/$pkgname.svg}; done cp -a data/icons/* "$pkgdir/usr/share/applications/icons/hicolor/" install -Dpm 644 "data/$pkgname.1" "$pkgdir/usr/share/man/man1/$pkgname.1" install -Dpm 644 "data/$pkgname.fr.1" "$pkgdir/usr/share/man/fr/man1/$pkgname.1" for file in src/po/*.po; do code=$(basename "$file" .po) install -dm 755 "$pkgdir/usr/share/locale/$code/LC_MESSAGES/" msgfmt "src/po/$code.po" -o "$pkgdir/usr/share/locale/$code/LC_MESSAGES/$pkgname.mo" done }awf-extended-2.9.0/scripts/archlinux/PKGBUILD.gtk3000066400000000000000000000032551477403510000215620ustar00rootroot00000000000000pkgname=awf-gtk3 pkgver=2.9.0 pkgrel=1 pkgdesc="Theme preview application for GTK 3" arch=('x86_64') url='https://github.com/luigifab/awf-extended' license=('GPL3') depends=('gtk3' 'libnotify>=0.7.0' 'hicolor-icon-theme') #makedepends=('autoconf' 'automake' 'desktop-file-utils' 'gcc' 'gettext' 'gtk3') conflicts=('awf-git') source=("https://github.com/luigifab/awf-extended/archive/v${pkgver}/awf-extended-${pkgver}.tar.gz") sha256sums=("...") prepare() { mv "awf-extended-$pkgver" "$pkgname-$pkgver" cd "$pkgname-$pkgver" sed -i 's/ -eq 2/ -eq -1/g' configure.ac sed -i 's/ -eq 4/ -eq -1/g' configure.ac } build() { cd "$pkgname-$pkgver" autoreconf -fi ./configure make -s } package() { cd "$pkgname-$pkgver" install -Dpm 755 "src/$pkgname" "$pkgdir/usr/bin/$pkgname" install -dm 755 "$pkgdir/usr/share/applications/" desktop-file-install --dir="$pkgdir/usr/share/applications/" "data/$pkgname.desktop" install -Dpm 644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md" install -dm 755 "$pkgdir/usr/share/applications/icons/hicolor/" for file in data/icons/*/*/awf.png; do mv $file ${file/\/awf.png/\/$pkgname.png}; done for file in data/icons/*/*/awf.svg; do mv $file ${file/\/awf.svg/\/$pkgname.svg}; done cp -a data/icons/* "$pkgdir/usr/share/applications/icons/hicolor/" install -Dpm 644 "data/$pkgname.1" "$pkgdir/usr/share/man/man1/$pkgname.1" install -Dpm 644 "data/$pkgname.fr.1" "$pkgdir/usr/share/man/fr/man1/$pkgname.1" for file in src/po/*.po; do code=$(basename "$file" .po) install -dm 755 "$pkgdir/usr/share/locale/$code/LC_MESSAGES/" msgfmt "src/po/$code.po" -o "$pkgdir/usr/share/locale/$code/LC_MESSAGES/$pkgname.mo" done }awf-extended-2.9.0/scripts/archlinux/PKGBUILD.gtk4000066400000000000000000000032561477403510000215640ustar00rootroot00000000000000pkgname=awf-gtk4 pkgver=2.9.0 pkgrel=1 pkgdesc="Theme preview application for GTK 4" arch=('x86_64') url='https://github.com/luigifab/awf-extended' license=('GPL3') depends=('gtk4' 'libnotify>=0.7.0' 'hicolor-icon-theme') #makedepends=('autoconf' 'automake' 'desktop-file-utils' 'gcc' 'gettext' 'gtk4') #conflicts=('awf-git') source=("https://github.com/luigifab/awf-extended/archive/v${pkgver}/awf-extended-${pkgver}.tar.gz") sha256sums=("...") prepare() { mv "awf-extended-$pkgver" "$pkgname-$pkgver" cd "$pkgname-$pkgver" sed -i 's/ -eq 2/ -eq -1/g' configure.ac sed -i 's/ -eq 3/ -eq -1/g' configure.ac } build() { cd "$pkgname-$pkgver" autoreconf -fi ./configure make -s } package() { cd "$pkgname-$pkgver" install -Dpm 755 "src/$pkgname" "$pkgdir/usr/bin/$pkgname" install -dm 755 "$pkgdir/usr/share/applications/" desktop-file-install --dir="$pkgdir/usr/share/applications/" "data/$pkgname.desktop" install -Dpm 644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md" install -dm 755 "$pkgdir/usr/share/applications/icons/hicolor/" for file in data/icons/*/*/awf.png; do mv $file ${file/\/awf.png/\/$pkgname.png}; done for file in data/icons/*/*/awf.svg; do mv $file ${file/\/awf.svg/\/$pkgname.svg}; done cp -a data/icons/* "$pkgdir/usr/share/applications/icons/hicolor/" install -Dpm 644 "data/$pkgname.1" "$pkgdir/usr/share/man/man1/$pkgname.1" install -Dpm 644 "data/$pkgname.fr.1" "$pkgdir/usr/share/man/fr/man1/$pkgname.1" for file in src/po/*.po; do code=$(basename "$file" .po) install -dm 755 "$pkgdir/usr/share/locale/$code/LC_MESSAGES/" msgfmt "src/po/$code.po" -o "$pkgdir/usr/share/locale/$code/LC_MESSAGES/$pkgname.mo" done }awf-extended-2.9.0/scripts/debian-gtk2/000077500000000000000000000000001477403510000176545ustar00rootroot00000000000000awf-extended-2.9.0/scripts/debian-gtk2/changelog000066400000000000000000000004751477403510000215340ustar00rootroot00000000000000awf-gtk2 (2.9.0-1) experimental; urgency=low * New upstream release -- Fabrice Creuzot Fri, 04 Apr 2025 20:00:00 +0000 awf-gtk2 (2.5.0-1) experimental; urgency=low * Initial Debian package release (Closes: #959434) -- Fabrice Creuzot Wed, 07 Jul 2021 20:00:00 +0000 awf-extended-2.9.0/scripts/debian-gtk2/control000066400000000000000000000014051477403510000212570ustar00rootroot00000000000000Source: awf-gtk2 Section: x11 Priority: optional Maintainer: Fabrice Creuzot Build-Depends: debhelper-compat (= 13), libnotify-dev (>= 0.7.0), libgtk2.0-dev (>= 2.24.0) Rules-Requires-Root: no Standards-Version: 4.7.1 Homepage: https://github.com/luigifab/awf-extended Vcs-Browser: https://github.com/luigifab/awf-extended Vcs-Git: https://github.com/luigifab/awf-extended.git Package: awf-gtk2 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: awf Description: theme preview application for GTK 2 A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. . This package provides the GTK 2 version. awf-extended-2.9.0/scripts/debian-gtk2/deb.sh000066400000000000000000000110671477403510000207470ustar00rootroot00000000000000#!/bin/bash # Debian: sudo apt install dpkg-dev devscripts build-essential dh-make dh-autoreconf intltool libnotify-dev libgtk2.0-dev cd "$(dirname "$0")" version="2.9.0" gtk="gtk2" mkdir builder rm -rf builder/* # copy to a tmp directory if [ true ]; then cd builder wget https://github.com/luigifab/awf-extended/archive/v$version/awf-extended-$version.tar.gz tar xzf awf-extended-$version.tar.gz cd .. else temp=awf-extended-$version mkdir /tmp/$temp cp -r ../../* /tmp/$temp/ rm -rf /tmp/$temp/scripts/*/builder/ mv /tmp/$temp builder/ cp /usr/share/common-licenses/GPL*3 builder/$temp/LICENSE cd builder/ tar czf $temp.tar.gz $temp cd .. fi # create packages for Debian and Ubuntu for serie in experimental plucky oracular noble jammy focal bionic xenial trusty; do printf "\n\n#################################################################### $serie ## awf-gtk2 ##\n\n" if [ $serie = "experimental" ]; then # copy for Ubuntu cp -a builder/awf-extended-$version/ builder/awf-extended-$version+src/ cd builder/awf-extended-$version/ elif [ $serie = "unstable" ]; then rm -rf builder/awf-extended-$version/ cp -a builder/awf-extended-$version+src/ builder/awf-extended-$version/ cd builder/awf-extended-$version/ else cp -a builder/awf-extended-$version+src/ builder/awf-extended-$serie-$version/ cd builder/awf-extended-$serie-$version/ fi dh_make -s -y -f ../awf-extended-$version.tar.gz -p awf-$gtk rm -rf debian/*/*ex debian/*ex debian/*EX debian/README* debian/*doc* cp scripts/debian-$gtk/* data/*.1 debian/ cp scripts/debian/*$gtk* scripts/debian/copyright scripts/debian/metadata scripts/debian/watch scripts/debian/clean debian/ head -n -1 debian/*$gtk*.install > debian/install ; rm debian/awf-$gtk.install rm -f debian/deb.sh mv debian/metadata debian/upstream/metadata if [ $serie = "experimental" ]; then mv debian/control.debian debian/control mv debian/changelog.debian debian/changelog echo "=========================== buildpackage ($serie) ==" dpkg-buildpackage -us -uc else # debhelper: experimental:13 focal/mx19/mx21:12 bionic:9 xenial:9 trusty:9 if [ $serie = "unstable" ]; then mv debian/control.debian debian/control elif [ $serie = "mx19" ] || [ $serie = "mx21" ]; then mv debian/control.mx debian/control sed -i 's/debhelper-compat (= 13)/debhelper-compat (= 12)/g' debian/control elif [ $serie = "focal" ]; then mv debian/control.ubuntu debian/control sed -i 's/debhelper-compat (= 13)/debhelper-compat (= 12)/g' debian/control elif [ $serie = "bionic" ]; then mv debian/control.ubuntu debian/control sed -i 's/dh $@/dh $@ --with autoreconf/g' debian/rules sed -i 's/debhelper-compat (= 13)/debhelper-compat (= 9), dh-autoreconf/g' debian/control elif [ $serie = "xenial" ]; then mv debian/control.ubuntu debian/control sed -i 's/dh $@/dh $@ --with autoreconf/g' debian/rules sed -i 's/debhelper-compat (= 13)/debhelper (>= 9), dh-autoreconf/g' debian/control sed -i ':a;N;$!ba;s/Rules-Requires-Root: no\n//g' debian/control echo 9 > debian/compat elif [ $serie = "trusty" ]; then mv debian/control.ubuntu debian/control sed -i 's/dh $@/dh $@ --with autotools_dev,autoreconf/g' debian/rules sed -i 's/override_dh_update_autotools_config/override_dh_autotools-dev_updateconfig/g' debian/rules sed -i 's/debhelper-compat (= 13)/debhelper (>= 9), autotools-dev, dh-autoreconf/g' debian/control sed -i ':a;N;$!ba;s/Rules-Requires-Root: no\n//g' debian/control echo 9 > debian/compat else mv debian/control.ubuntu debian/control fi if [ $serie = "mx23" ] || [ $serie = "mx21" ] || [ $serie = "mx19" ]; then mv debian/changelog.mx debian/changelog sed -i 's/-1) /-1~'$serie'+1) /' debian/changelog elif [ $serie = "unstable" ]; then mv debian/changelog.debian debian/changelog else mv debian/changelog.ubuntu debian/changelog sed -i 's/experimental/'$serie'/g' debian/changelog sed -i 's/-1) /-1+'$serie') /' debian/changelog fi rm -f debian/*.mx debian/*.debian echo "=========================== buildpackage ($serie) ==" dpkg-buildpackage -us -uc -ui -d -S fi echo "=========================== debsign ($serie) ==" cd .. if [ $serie = "experimental" ]; then debsign awf-${gtk}_$version*.changes echo "=========================== lintian ($serie) ==" lintian -EviIL +pedantic awf-$gtk*$version*.deb elif [ $serie = "unstable" ]; then debsign awf-$gtk*$version-*_source.changes else debsign awf-$gtk*$version*$serie*source.changes fi cd .. done printf "\n\n" ls -dlth "$PWD/"builder/*.deb "$PWD/"builder/*.changes printf "\n" rm -rf builder/*/awf-extended-2.9.0/scripts/debian-gtk2/rules000066400000000000000000000011251477403510000207300ustar00rootroot00000000000000#!/usr/bin/make -f export DEB_BUILD_MAINT_OPTIONS = hardening=+all %: dh $@ override_dh_update_autotools_config: sed -i 's/ -eq 3/ -eq -1/g' configure.ac sed -i 's/ -eq 4/ -eq -1/g' configure.ac cp -ar data/icons/ icons-gtk2/ for file in icons-gtk2/*/*/awf.png; do mv $$file `dirname $$file`/awf-gtk2.png; done for file in icons-gtk2/*/*/awf.svg; do mv $$file `dirname $$file`/awf-gtk2.svg; done for file in src/po/*.po; do \ code=`basename "$$file" .po`; \ mkdir -p locale-gtk2/$$code/LC_MESSAGES/; \ msgfmt src/po/$$code.po -o locale-gtk2/$$code/LC_MESSAGES/awf-gtk2.mo; \ done awf-extended-2.9.0/scripts/debian-gtk3/000077500000000000000000000000001477403510000176555ustar00rootroot00000000000000awf-extended-2.9.0/scripts/debian-gtk3/changelog000066400000000000000000000004751477403510000215350ustar00rootroot00000000000000awf-gtk3 (2.9.0-1) experimental; urgency=low * New upstream release -- Fabrice Creuzot Fri, 04 Apr 2025 20:00:00 +0000 awf-gtk3 (2.5.0-1) experimental; urgency=low * Initial Debian package release (Closes: #959434) -- Fabrice Creuzot Wed, 07 Jul 2021 20:00:00 +0000 awf-extended-2.9.0/scripts/debian-gtk3/control000066400000000000000000000013701477403510000212610ustar00rootroot00000000000000Source: awf-gtk3 Section: x11 Priority: optional Maintainer: Fabrice Creuzot Build-Depends: debhelper-compat (= 13), libnotify-dev (>= 0.7.0), libgtk-3-dev Rules-Requires-Root: no Standards-Version: 4.7.1 Homepage: https://github.com/luigifab/awf-extended Vcs-Browser: https://github.com/luigifab/awf-extended Vcs-Git: https://github.com/luigifab/awf-extended.git Package: awf-gtk3 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: awf Description: theme preview application for GTK 3 A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. . This package provides the GTK 3 version. awf-extended-2.9.0/scripts/debian-gtk3/deb.sh000066400000000000000000000110661477403510000207470ustar00rootroot00000000000000#!/bin/bash # Debian: sudo apt install dpkg-dev devscripts build-essential dh-make dh-autoreconf intltool libnotify-dev libgtk-3-dev cd "$(dirname "$0")" version="2.9.0" gtk="gtk3" mkdir builder rm -rf builder/* # copy to a tmp directory if [ true ]; then cd builder wget https://github.com/luigifab/awf-extended/archive/v$version/awf-extended-$version.tar.gz tar xzf awf-extended-$version.tar.gz cd .. else temp=awf-extended-$version mkdir /tmp/$temp cp -r ../../* /tmp/$temp/ rm -rf /tmp/$temp/scripts/*/builder/ mv /tmp/$temp builder/ cp /usr/share/common-licenses/GPL*3 builder/$temp/LICENSE cd builder/ tar czf $temp.tar.gz $temp cd .. fi # create packages for Debian and Ubuntu for serie in experimental plucky oracular noble jammy focal bionic xenial trusty; do printf "\n\n#################################################################### $serie ## awf-gtk3 ##\n\n" if [ $serie = "experimental" ]; then # copy for Ubuntu cp -a builder/awf-extended-$version/ builder/awf-extended-$version+src/ cd builder/awf-extended-$version/ elif [ $serie = "unstable" ]; then rm -rf builder/awf-extended-$version/ cp -a builder/awf-extended-$version+src/ builder/awf-extended-$version/ cd builder/awf-extended-$version/ else cp -a builder/awf-extended-$version+src/ builder/awf-extended-$serie-$version/ cd builder/awf-extended-$serie-$version/ fi dh_make -s -y -f ../awf-extended-$version.tar.gz -p awf-$gtk rm -rf debian/*/*ex debian/*ex debian/*EX debian/README* debian/*doc* cp scripts/debian-$gtk/* data/*.1 debian/ cp scripts/debian/*$gtk* scripts/debian/copyright scripts/debian/metadata scripts/debian/watch scripts/debian/clean debian/ head -n -1 debian/*$gtk*.install > debian/install ; rm debian/awf-$gtk.install rm -f debian/deb.sh mv debian/metadata debian/upstream/metadata if [ $serie = "experimental" ]; then mv debian/control.debian debian/control mv debian/changelog.debian debian/changelog echo "=========================== buildpackage ($serie) ==" dpkg-buildpackage -us -uc else # debhelper: experimental:13 focal/mx19/mx21:12 bionic:9 xenial:9 trusty:9 if [ $serie = "unstable" ]; then mv debian/control.debian debian/control elif [ $serie = "mx19" ] || [ $serie = "mx21" ]; then mv debian/control.mx debian/control sed -i 's/debhelper-compat (= 13)/debhelper-compat (= 12)/g' debian/control elif [ $serie = "focal" ]; then mv debian/control.ubuntu debian/control sed -i 's/debhelper-compat (= 13)/debhelper-compat (= 12)/g' debian/control elif [ $serie = "bionic" ]; then mv debian/control.ubuntu debian/control sed -i 's/dh $@/dh $@ --with autoreconf/g' debian/rules sed -i 's/debhelper-compat (= 13)/debhelper-compat (= 9), dh-autoreconf/g' debian/control elif [ $serie = "xenial" ]; then mv debian/control.ubuntu debian/control sed -i 's/dh $@/dh $@ --with autoreconf/g' debian/rules sed -i 's/debhelper-compat (= 13)/debhelper (>= 9), dh-autoreconf/g' debian/control sed -i ':a;N;$!ba;s/Rules-Requires-Root: no\n//g' debian/control echo 9 > debian/compat elif [ $serie = "trusty" ]; then mv debian/control.ubuntu debian/control sed -i 's/dh $@/dh $@ --with autotools_dev,autoreconf/g' debian/rules sed -i 's/override_dh_update_autotools_config/override_dh_autotools-dev_updateconfig/g' debian/rules sed -i 's/debhelper-compat (= 13)/debhelper (>= 9), autotools-dev, dh-autoreconf/g' debian/control sed -i ':a;N;$!ba;s/Rules-Requires-Root: no\n//g' debian/control echo 9 > debian/compat else mv debian/control.ubuntu debian/control fi if [ $serie = "mx23" ] || [ $serie = "mx21" ] || [ $serie = "mx19" ]; then mv debian/changelog.mx debian/changelog sed -i 's/-1) /-1~'$serie'+1) /' debian/changelog elif [ $serie = "unstable" ]; then mv debian/changelog.debian debian/changelog else mv debian/changelog.ubuntu debian/changelog sed -i 's/experimental/'$serie'/g' debian/changelog sed -i 's/-1) /-1+'$serie') /' debian/changelog fi rm -f debian/*.mx debian/*.debian echo "=========================== buildpackage ($serie) ==" dpkg-buildpackage -us -uc -ui -d -S fi echo "=========================== debsign ($serie) ==" cd .. if [ $serie = "experimental" ]; then debsign awf-${gtk}_$version*.changes echo "=========================== lintian ($serie) ==" lintian -EviIL +pedantic awf-$gtk*$version*.deb elif [ $serie = "unstable" ]; then debsign awf-$gtk*$version-*_source.changes else debsign awf-$gtk*$version*$serie*source.changes fi cd .. done printf "\n\n" ls -dlth "$PWD/"builder/*.deb "$PWD/"builder/*.changes printf "\n" rm -rf builder/*/awf-extended-2.9.0/scripts/debian-gtk3/rules000066400000000000000000000011251477403510000207310ustar00rootroot00000000000000#!/usr/bin/make -f export DEB_BUILD_MAINT_OPTIONS = hardening=+all %: dh $@ override_dh_update_autotools_config: sed -i 's/ -eq 2/ -eq -1/g' configure.ac sed -i 's/ -eq 4/ -eq -1/g' configure.ac cp -ar data/icons/ icons-gtk3/ for file in icons-gtk3/*/*/awf.png; do mv $$file `dirname $$file`/awf-gtk3.png; done for file in icons-gtk3/*/*/awf.svg; do mv $$file `dirname $$file`/awf-gtk3.svg; done for file in src/po/*.po; do \ code=`basename "$$file" .po`; \ mkdir -p locale-gtk3/$$code/LC_MESSAGES/; \ msgfmt src/po/$$code.po -o locale-gtk3/$$code/LC_MESSAGES/awf-gtk3.mo; \ done awf-extended-2.9.0/scripts/debian-gtk4/000077500000000000000000000000001477403510000176565ustar00rootroot00000000000000awf-extended-2.9.0/scripts/debian-gtk4/changelog000066400000000000000000000004751477403510000215360ustar00rootroot00000000000000awf-gtk4 (2.9.0-1) experimental; urgency=low * New upstream release -- Fabrice Creuzot Fri, 04 Apr 2025 20:00:00 +0000 awf-gtk4 (2.5.0-1) experimental; urgency=low * Initial Debian package release (Closes: #959434) -- Fabrice Creuzot Wed, 07 Jul 2021 20:00:00 +0000 awf-extended-2.9.0/scripts/debian-gtk4/control000066400000000000000000000013701477403510000212620ustar00rootroot00000000000000Source: awf-gtk4 Section: x11 Priority: optional Maintainer: Fabrice Creuzot Build-Depends: debhelper-compat (= 13), libnotify-dev (>= 0.7.0), libgtk-4-dev Rules-Requires-Root: no Standards-Version: 4.7.1 Homepage: https://github.com/luigifab/awf-extended Vcs-Browser: https://github.com/luigifab/awf-extended Vcs-Git: https://github.com/luigifab/awf-extended.git Package: awf-gtk4 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: awf Description: theme preview application for GTK 4 A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. . This package provides the GTK 4 version. awf-extended-2.9.0/scripts/debian-gtk4/deb.sh000066400000000000000000000110331477403510000207420ustar00rootroot00000000000000#!/bin/bash # Debian: sudo apt install dpkg-dev devscripts build-essential dh-make dh-autoreconf intltool libnotify-dev libgtk-4-dev cd "$(dirname "$0")" version="2.9.0" gtk="gtk4" mkdir builder rm -rf builder/* # copy to a tmp directory if [ true ]; then cd builder wget https://github.com/luigifab/awf-extended/archive/v$version/awf-extended-$version.tar.gz tar xzf awf-extended-$version.tar.gz cd .. else temp=awf-extended-$version mkdir /tmp/$temp cp -r ../../* /tmp/$temp/ rm -rf /tmp/$temp/scripts/*/builder/ mv /tmp/$temp builder/ cp /usr/share/common-licenses/GPL*3 builder/$temp/LICENSE cd builder/ tar czf $temp.tar.gz $temp cd .. fi # create packages for Debian and Ubuntu for serie in experimental plucky oracular noble jammy; do printf "\n\n#################################################################### $serie ## awf-gtk4 ##\n\n" if [ $serie = "experimental" ]; then # copy for Ubuntu cp -a builder/awf-extended-$version/ builder/awf-extended-$version+src/ cd builder/awf-extended-$version/ elif [ $serie = "unstable" ]; then rm -rf builder/awf-extended-$version/ cp -a builder/awf-extended-$version+src/ builder/awf-extended-$version/ cd builder/awf-extended-$version/ else cp -a builder/awf-extended-$version+src/ builder/awf-extended-$serie-$version/ cd builder/awf-extended-$serie-$version/ fi dh_make -s -y -f ../awf-extended-$version.tar.gz -p awf-$gtk rm -rf debian/*/*ex debian/*ex debian/*EX debian/README* debian/*doc* cp scripts/debian-$gtk/* data/*.1 debian/ cp scripts/debian/*$gtk* scripts/debian/copyright scripts/debian/metadata scripts/debian/watch scripts/debian/clean debian/ head -n -1 debian/*$gtk*.install > debian/install ; rm debian/awf-$gtk.install rm -f debian/deb.sh mv debian/metadata debian/upstream/metadata if [ $serie = "experimental" ]; then mv debian/control.debian debian/control mv debian/changelog.debian debian/changelog echo "=========================== buildpackage ($serie) ==" dpkg-buildpackage -us -uc else # debhelper: experimental:13 focal/mx19/mx21:12 bionic:9 xenial:9 trusty:9 if [ $serie = "unstable" ]; then mv debian/control.debian debian/control elif [ $serie = "mx19" ] || [ $serie = "mx21" ]; then mv debian/control.mx debian/control sed -i 's/debhelper-compat (= 13)/debhelper-compat (= 12)/g' debian/control elif [ $serie = "focal" ]; then mv debian/control.ubuntu debian/control sed -i 's/debhelper-compat (= 13)/debhelper-compat (= 12)/g' debian/control elif [ $serie = "bionic" ]; then mv debian/control.ubuntu debian/control sed -i 's/dh $@/dh $@ --with autoreconf/g' debian/rules sed -i 's/debhelper-compat (= 13)/debhelper-compat (= 9), dh-autoreconf/g' debian/control elif [ $serie = "xenial" ]; then mv debian/control.ubuntu debian/control sed -i 's/dh $@/dh $@ --with autoreconf/g' debian/rules sed -i 's/debhelper-compat (= 13)/debhelper (>= 9), dh-autoreconf/g' debian/control sed -i ':a;N;$!ba;s/Rules-Requires-Root: no\n//g' debian/control echo 9 > debian/compat elif [ $serie = "trusty" ]; then mv debian/control.ubuntu debian/control sed -i 's/dh $@/dh $@ --with autotools_dev,autoreconf/g' debian/rules sed -i 's/override_dh_update_autotools_config/override_dh_autotools-dev_updateconfig/g' debian/rules sed -i 's/debhelper-compat (= 13)/debhelper (>= 9), autotools-dev, dh-autoreconf/g' debian/control sed -i ':a;N;$!ba;s/Rules-Requires-Root: no\n//g' debian/control echo 9 > debian/compat else mv debian/control.ubuntu debian/control fi if [ $serie = "mx23" ] || [ $serie = "mx21" ] || [ $serie = "mx19" ]; then mv debian/changelog.mx debian/changelog sed -i 's/-1) /-1~'$serie'+1) /' debian/changelog elif [ $serie = "unstable" ]; then mv debian/changelog.debian debian/changelog else mv debian/changelog.ubuntu debian/changelog sed -i 's/experimental/'$serie'/g' debian/changelog sed -i 's/-1) /-1+'$serie') /' debian/changelog fi rm -f debian/*.mx debian/*.debian echo "=========================== buildpackage ($serie) ==" dpkg-buildpackage -us -uc -ui -d -S fi echo "=========================== debsign ($serie) ==" cd .. if [ $serie = "experimental" ]; then debsign awf-${gtk}_$version*.changes echo "=========================== lintian ($serie) ==" lintian -EviIL +pedantic awf-$gtk*$version*.deb elif [ $serie = "unstable" ]; then debsign awf-$gtk*$version-*_source.changes else debsign awf-$gtk*$version*$serie*source.changes fi cd .. done printf "\n\n" ls -dlth "$PWD/"builder/*.deb "$PWD/"builder/*.changes printf "\n" rm -rf builder/*/awf-extended-2.9.0/scripts/debian-gtk4/rules000066400000000000000000000011251477403510000207320ustar00rootroot00000000000000#!/usr/bin/make -f export DEB_BUILD_MAINT_OPTIONS = hardening=+all %: dh $@ override_dh_update_autotools_config: sed -i 's/ -eq 2/ -eq -1/g' configure.ac sed -i 's/ -eq 3/ -eq -1/g' configure.ac cp -ar data/icons/ icons-gtk4/ for file in icons-gtk4/*/*/awf.png; do mv $$file `dirname $$file`/awf-gtk4.png; done for file in icons-gtk4/*/*/awf.svg; do mv $$file `dirname $$file`/awf-gtk4.svg; done for file in src/po/*.po; do \ code=`basename "$$file" .po`; \ mkdir -p locale-gtk4/$$code/LC_MESSAGES/; \ msgfmt src/po/$$code.po -o locale-gtk4/$$code/LC_MESSAGES/awf-gtk4.mo; \ done awf-extended-2.9.0/scripts/debian/000077500000000000000000000000001477403510000170075ustar00rootroot00000000000000awf-extended-2.9.0/scripts/debian/awf-gtk2.install000066400000000000000000000004421477403510000220210ustar00rootroot00000000000000data/awf-gtk2.desktop usr/share/applications icons-gtk2/* usr/share/icons/hicolor locale-gtk2/* usr/share/locale debian/fr.luigifab.awfgtk2.metainfo.xml usr/share/metainfo usr/bin/awf-gtk2 usr/binawf-extended-2.9.0/scripts/debian/awf-gtk2.manpages000066400000000000000000000000461477403510000221460ustar00rootroot00000000000000debian/awf-gtk2.1 debian/awf-gtk2.fr.1awf-extended-2.9.0/scripts/debian/awf-gtk3.install000066400000000000000000000004421477403510000220220ustar00rootroot00000000000000data/awf-gtk3.desktop usr/share/applications icons-gtk3/* usr/share/icons/hicolor locale-gtk3/* usr/share/locale debian/fr.luigifab.awfgtk3.metainfo.xml usr/share/metainfo usr/bin/awf-gtk3 usr/binawf-extended-2.9.0/scripts/debian/awf-gtk3.manpages000066400000000000000000000000461477403510000221470ustar00rootroot00000000000000debian/awf-gtk3.1 debian/awf-gtk3.fr.1awf-extended-2.9.0/scripts/debian/awf-gtk4.install000066400000000000000000000004421477403510000220230ustar00rootroot00000000000000data/awf-gtk4.desktop usr/share/applications icons-gtk4/* usr/share/icons/hicolor locale-gtk4/* usr/share/locale debian/fr.luigifab.awfgtk4.metainfo.xml usr/share/metainfo usr/bin/awf-gtk4 usr/binawf-extended-2.9.0/scripts/debian/awf-gtk4.manpages000066400000000000000000000000461477403510000221500ustar00rootroot00000000000000debian/awf-gtk4.1 debian/awf-gtk4.fr.1awf-extended-2.9.0/scripts/debian/changelog.debian000066400000000000000000000011231477403510000220770ustar00rootroot00000000000000awf-gtk (2.9.0-1) unstable; urgency=low * New upstream release -- Fabrice Creuzot Fri, 04 Apr 2025 20:00:00 +0000 awf-gtk (2.8.0-1) unstable; urgency=low * New upstream release -- Fabrice Creuzot Fri, 02 Feb 2024 20:00:00 +0000 awf-gtk (2.6.0-1) experimental; urgency=low * New upstream release -- Fabrice Creuzot Thu, 09 Sep 2021 20:00:00 +0000 awf-gtk (2.5.0-5) experimental; urgency=low * Initial Debian package release (Closes: #959434) -- Fabrice Creuzot Wed, 07 Jul 2021 20:00:00 +0000 awf-extended-2.9.0/scripts/debian/changelog.mx000066400000000000000000000004271477403510000213070ustar00rootroot00000000000000awf-gtk (2.9.0-1) mx; urgency=low * New upstream release -- Fabrice Creuzot Fri, 04 Apr 2025 20:00:00 +0000 awf-gtk (2.8.1-1) mx; urgency=low * Initial MX Linux package release -- Fabrice Creuzot Mon, 03 Mar 2025 20:00:00 +0000 awf-extended-2.9.0/scripts/debian/changelog.ubuntu000066400000000000000000000011331477403510000222000ustar00rootroot00000000000000awf-gtk (2.9.0-1) experimental; urgency=low * New upstream release -- Fabrice Creuzot Fri, 04 Apr 2025 20:00:00 +0000 awf-gtk (2.8.0-1) experimental; urgency=low * New upstream release -- Fabrice Creuzot Fri, 02 Feb 2024 20:00:00 +0000 awf-gtk (2.6.0-1) experimental; urgency=low * New upstream release -- Fabrice Creuzot Thu, 09 Sep 2021 20:00:00 +0000 awf-gtk (2.5.0-5) experimental; urgency=low * Initial Debian package release (Closes: #959434) -- Fabrice Creuzot Wed, 07 Jul 2021 20:00:00 +0000 awf-extended-2.9.0/scripts/debian/clean000066400000000000000000000000611477403510000200110ustar00rootroot00000000000000icons-gtk3/ icons-gtk4/ locale-gtk3/ locale-gtk4/awf-extended-2.9.0/scripts/debian/control.debian000066400000000000000000000021761477403510000216410ustar00rootroot00000000000000Source: awf-gtk Section: x11 Priority: optional Maintainer: Fabrice Creuzot Build-Depends: debhelper-compat (= 13), libnotify-dev (>= 0.7.0), libgtk-3-dev, libgtk-4-dev Rules-Requires-Root: no Standards-Version: 4.7.1 Homepage: https://github.com/luigifab/awf-extended Vcs-Browser: https://github.com/luigifab/awf-extended Vcs-Git: https://github.com/luigifab/awf-extended.git Package: awf-gtk3 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: awf Description: theme preview application for GTK 3 A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. . This package provides the GTK 3 version. Package: awf-gtk4 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: awf Description: theme preview application for GTK 4 A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. . This package provides the GTK 4 version. awf-extended-2.9.0/scripts/debian/control.mx000066400000000000000000000030221477403510000210320ustar00rootroot00000000000000Source: awf-gtk Section: x11 Priority: optional Maintainer: Fabrice Creuzot Build-Depends: debhelper-compat (= 13), libnotify-dev (>= 0.7.0), libgtk2.0-dev (>= 2.24.0), libgtk-3-dev, libgtk-4-dev Rules-Requires-Root: no Standards-Version: 4.7.1 Homepage: https://github.com/luigifab/awf-extended Vcs-Browser: https://github.com/luigifab/awf-extended Vcs-Git: https://github.com/luigifab/awf-extended.git Package: awf-gtk2 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: awf Description: theme preview application for GTK 2 A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. . This package provides the GTK 2 version. Package: awf-gtk3 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: awf Description: theme preview application for GTK 3 A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. . This package provides the GTK 3 version. Package: awf-gtk4 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: awf Description: theme preview application for GTK 4 A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. . This package provides the GTK 4 version. awf-extended-2.9.0/scripts/debian/control.ubuntu000066400000000000000000000030221477403510000217300ustar00rootroot00000000000000Source: awf-gtk Section: x11 Priority: optional Maintainer: Fabrice Creuzot Build-Depends: debhelper-compat (= 13), libnotify-dev (>= 0.7.0), libgtk2.0-dev (>= 2.24.0), libgtk-3-dev, libgtk-4-dev Rules-Requires-Root: no Standards-Version: 4.7.1 Homepage: https://github.com/luigifab/awf-extended Vcs-Browser: https://github.com/luigifab/awf-extended Vcs-Git: https://github.com/luigifab/awf-extended.git Package: awf-gtk2 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: awf Description: theme preview application for GTK 2 A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. . This package provides the GTK 2 version. Package: awf-gtk3 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: awf Description: theme preview application for GTK 3 A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. . This package provides the GTK 3 version. Package: awf-gtk4 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: awf Description: theme preview application for GTK 4 A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. . This package provides the GTK 4 version. awf-extended-2.9.0/scripts/debian/copyright000066400000000000000000000023371477403510000207470ustar00rootroot00000000000000Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Source: https://github.com/luigifab/awf-extended Upstream-Contact: Fabrice Creuzot Files: * Copyright: 2011-2016 Valère Monseur (valr) 2020-2025 Fabrice Creuzot (luigifab) License: GPL-3+ Files: */fr.luigifab.*.metainfo.xml */slackware/* Copyright: 2020-2025 Fabrice Creuzot (luigifab) License: Expat License: GPL-3+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. . This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. . You should have received a copy of the GNU General Public License along with this program. If not, see . . On Debian systems, the complete text of the GNU General Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". awf-extended-2.9.0/scripts/debian/deb.sh000066400000000000000000000106421477403510000201000ustar00rootroot00000000000000#!/bin/bash # Debian: sudo apt install dpkg-dev devscripts build-essential dh-make dh-autoreconf intltool libnotify-dev libgtk2.0-dev libgtk-3-dev libgtk-4-dev cd "$(dirname "$0")" version="2.9.0" mkdir builder rm -rf builder/* # copy to a tmp directory if [ true ]; then cd builder wget https://github.com/luigifab/awf-extended/archive/v$version/awf-extended-$version.tar.gz tar xzf awf-extended-$version.tar.gz cd .. else temp=awf-extended-$version mkdir /tmp/$temp cp -r ../../* /tmp/$temp/ rm -rf /tmp/$temp/scripts/*/builder/ mv /tmp/$temp builder/ cp /usr/share/common-licenses/GPL*3 builder/$temp/LICENSE cd builder/ tar czf $temp.tar.gz $temp cd .. fi # create packages for Debian and Ubuntu and MX Linux for serie in experimental unstable oracular mx23; do printf "\n\n#################################################################### $serie ## awf-gtk ##\n\n" if [ $serie = "experimental" ]; then # copy for Ubuntu cp -a builder/awf-extended-$version/ builder/awf-extended-$version+src/ cd builder/awf-extended-$version/ elif [ $serie = "unstable" ]; then rm -rf builder/awf-extended-$version/ cp -a builder/awf-extended-$version+src/ builder/awf-extended-$version/ cd builder/awf-extended-$version/ else cp -a builder/awf-extended-$version+src/ builder/awf-extended-$serie-$version/ cd builder/awf-extended-$serie-$version/ fi dh_make -s -y -f ../awf-extended-$version.tar.gz -p awf-gtk rm -rf debian/*/*ex debian/*ex debian/*EX debian/README* debian/*doc* cp scripts/debian/* data/*.1 debian/ rm -f debian/deb.sh mv debian/metadata debian/upstream/metadata if [ $serie = "experimental" ]; then mv debian/control.ubuntu debian/control # yes mv debian/changelog.debian debian/changelog echo "=========================== buildpackage ($serie) ==" dpkg-buildpackage -us -uc else # debhelper: experimental:13 focal/mx19/mx21:12 bionic:9 xenial:9 trusty:9 if [ $serie = "unstable" ]; then mv debian/control.debian debian/control sed -i -e 's/#sed -i/sed -i/g' -e 's/ "gtk2"//g' debian/rules elif [ $serie = "mx19" ] || [ $serie = "mx21" ]; then mv debian/control.mx debian/control sed -i 's/debhelper-compat (= 13)/debhelper-compat (= 12)/g' debian/control elif [ $serie = "focal" ]; then mv debian/control.ubuntu debian/control sed -i 's/debhelper-compat (= 13)/debhelper-compat (= 12)/g' debian/control elif [ $serie = "bionic" ]; then mv debian/control.ubuntu debian/control sed -i 's/dh $@/dh $@ --with autoreconf/g' debian/rules sed -i 's/debhelper-compat (= 13)/debhelper-compat (= 9), dh-autoreconf/g' debian/control elif [ $serie = "xenial" ]; then mv debian/control.ubuntu debian/control sed -i 's/dh $@/dh $@ --with autoreconf/g' debian/rules sed -i 's/debhelper-compat (= 13)/debhelper (>= 9), dh-autoreconf/g' debian/control sed -i ':a;N;$!ba;s/Rules-Requires-Root: no\n//g' debian/control echo 9 > debian/compat elif [ $serie = "trusty" ]; then mv debian/control.ubuntu debian/control sed -i 's/dh $@/dh $@ --with autotools_dev,autoreconf/g' debian/rules sed -i 's/override_dh_update_autotools_config/override_dh_autotools-dev_updateconfig/g' debian/rules sed -i 's/debhelper-compat (= 13)/debhelper (>= 9), autotools-dev, dh-autoreconf/g' debian/control sed -i ':a;N;$!ba;s/Rules-Requires-Root: no\n//g' debian/control echo 9 > debian/compat else mv debian/control.ubuntu debian/control fi if [ $serie = "mx23" ] || [ $serie = "mx21" ] || [ $serie = "mx19" ]; then mv debian/changelog.mx debian/changelog sed -i 's/-1) /-1~'$serie'+1) /' debian/changelog elif [ $serie = "unstable" ]; then mv debian/changelog.debian debian/changelog else mv debian/changelog.ubuntu debian/changelog sed -i 's/experimental/'$serie'/g' debian/changelog sed -i 's/-1) /-1+'$serie') /' debian/changelog fi rm -f debian/*.mx debian/*.debian echo "=========================== buildpackage ($serie) ==" dpkg-buildpackage -us -uc -ui -d -S fi echo "=========================== debsign ($serie) ==" cd .. if [ $serie = "experimental" ]; then debsign awf-gtk_$version*.changes echo "=========================== lintian ($serie) ==" lintian -EviIL +pedantic awf-gtk*$version*.deb elif [ $serie = "unstable" ]; then debsign awf-gtk*$version-*_source.changes else debsign awf-gtk*$version*$serie*source.changes fi cd .. done printf "\n\n" ls -dlth "$PWD/"builder/*.deb "$PWD/"builder/*.changes printf "\n" rm -rf builder/*/awf-extended-2.9.0/scripts/debian/fr.luigifab.awfgtk2.metainfo.xml000066400000000000000000000013131477403510000250640ustar00rootroot00000000000000 fr.luigifab.awfgtk2 awf-gtk2 GPL-3.0-or-later MIT

Theme preview application for GTK 2

A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme.

https://github.com/luigifab/awf-extended awf-gtk2.desktop awf-gtk2 awf-extended-2.9.0/scripts/debian/fr.luigifab.awfgtk3.metainfo.xml000066400000000000000000000013131477403510000250650ustar00rootroot00000000000000 fr.luigifab.awfgtk3 awf-gtk3 GPL-3.0-or-later MIT Theme preview application for GTK 3

A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme.

https://github.com/luigifab/awf-extended awf-gtk3.desktop awf-gtk3
awf-extended-2.9.0/scripts/debian/fr.luigifab.awfgtk4.metainfo.xml000066400000000000000000000013131477403510000250660ustar00rootroot00000000000000 fr.luigifab.awfgtk4 awf-gtk4 GPL-3.0-or-later MIT Theme preview application for GTK 4

A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme.

https://github.com/luigifab/awf-extended awf-gtk4.desktop awf-gtk4
awf-extended-2.9.0/scripts/debian/metadata000066400000000000000000000006101477403510000205070ustar00rootroot00000000000000Bug-Database: https://github.com/luigifab/awf-extended/issues/ Bug-Submit: https://github.com/luigifab/awf-extended/issues/new Documentation: https://github.com/luigifab/awf-extended Repository: https://github.com/luigifab/awf-extended.git Repository-Browse: https://github.com/luigifab/awf-extended Screenshots: https://raw.githubusercontent.com/luigifab/awf-extended/levelup/images/gtk3.pngawf-extended-2.9.0/scripts/debian/rules000066400000000000000000000011651477403510000200670ustar00rootroot00000000000000#!/usr/bin/make -f export DEB_BUILD_MAINT_OPTIONS = hardening=+all %: dh $@ override_dh_update_autotools_config: #sed -i 's/ -eq 2/ -eq -1/g' configure.ac for gtk in "gtk2" "gtk3" "gtk4"; do \ cp -ar data/icons/ icons-$$gtk/; \ for file in icons-$$gtk/*/*/awf.png; do mv $$file `dirname $$file`/awf-$$gtk.png; done; \ for file in icons-$$gtk/*/*/awf.svg; do mv $$file `dirname $$file`/awf-$$gtk.svg; done; \ for file in src/po/*.po; do \ code=`basename "$$file" .po`; \ mkdir -p locale-$$gtk/$$code/LC_MESSAGES/; \ msgfmt src/po/$$code.po -o locale-$$gtk/$$code/LC_MESSAGES/awf-$$gtk.mo; \ done; \ done awf-extended-2.9.0/scripts/debian/watch000066400000000000000000000003461477403510000200430ustar00rootroot00000000000000version=4 opts="searchmode=plain,\ filenamemangle=s%v?@ANY_VERSION@%@PACKAGE@-$1.tar.xz%" \ https://api.github.com/repos/luigifab/awf-extended/releases?per_page=50 \ https://api.github.com/repos/[^/]+/[^/]+/tarball/v?@ANY_VERSION@awf-extended-2.9.0/scripts/fedora/000077500000000000000000000000001477403510000170255ustar00rootroot00000000000000awf-extended-2.9.0/scripts/fedora/awf-gtk2.spec000066400000000000000000000064501477403510000213300ustar00rootroot00000000000000Name: awf-gtk2 Version: 2.9.0 Release: 1%{?dist} Summary: Theme preview application for GTK 2 Summary(fr): Application d'aperçu de thème pour GTK 2 License: GPL-3.0-or-later URL: https://github.com/luigifab/awf-extended Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz BuildRequires: aspell-fr BuildRequires: autoconf BuildRequires: automake BuildRequires: desktop-file-utils BuildRequires: libnotify-devel >= 0.7.0 BuildRequires: gcc BuildRequires: gettext BuildRequires: gtk2-devel >= 2.24.0 Requires: gtk2 >= 2.24.0 Requires: libnotify >= 0.7.0 Requires: hicolor-icon-theme %description %{expand: A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. This package provides the GTK 2 version.} %description -l fr %{expand: La fabrique à widgets est une application d'aperçu de thème pour GTK. Elle affiche les différents types de widgets fournis par GTK dans une seule fenêtre permettant de voir l'effet visuel du thème appliqué. Ce paquet fournit la version GTK 2.} %prep %setup -q -n awf-extended-%{version} sed -i 's/ -eq 3/ -eq -1/g' configure.ac sed -i 's/ -eq 4/ -eq -1/g' configure.ac %build autoreconf -fi %configure %make_build %install %make_install install -dm 755 %{buildroot}%{_datadir}/applications/ desktop-file-install --dir=%{buildroot}%{_datadir}/applications/ data/%{name}.desktop install -dm 755 %{buildroot}%{_datadir}/icons/hicolor/ for file in data/icons/*/*/awf.png; do mv $file ${file/\/awf.png/\/%{name}.png}; done for file in data/icons/*/*/awf.svg; do mv $file ${file/\/awf.svg/\/%{name}.svg}; done cp -a data/icons/* %{buildroot}%{_datadir}/icons/hicolor/ install -Dpm 644 data/%{name}.1 %{buildroot}%{_mandir}/man1/%{name}.1 install -Dpm 644 data/%{name}.fr.1 %{buildroot}%{_mandir}/fr/man1/%{name}.1 for file in src/po/*.po; do code=$(basename "$file" .po) install -dm 755 %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/ msgfmt src/po/$code.po -o %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/%{name}.mo done %find_lang %{name} --with-man %files -f %{name}.lang %license LICENSE %doc README.md %{_bindir}/%{name} %{_datadir}/applications/%{name}.desktop %{_datadir}/icons/hicolor/*/apps/%{name}.png %{_datadir}/icons/hicolor/scalable/apps/%{name}.svg %{_mandir}/man1/%{name}.1* %changelog * Fri Apr 04 2025 Fabrice Creuzot - 2.9.0-1 - New upstream release * Mon Mar 03 2025 Fabrice Creuzot - 2.8.1-1 - New upstream release * Fri Feb 02 2024 Fabrice Creuzot - 2.8.0-1 - New upstream release * Fri Jun 16 2023 Fabrice Creuzot - 2.7.0-2 - Package spec update * Tue Jun 06 2023 Fabrice Creuzot - 2.7.0-1 - New upstream release * Thu Sep 09 2021 Fabrice Creuzot - 2.6.0-1 - New upstream release * Wed Jul 07 2021 Fabrice Creuzot - 2.5.0-1 - New upstream release * Wed May 05 2021 Fabrice Creuzot - 2.4.0-1 - New upstream release * Sun Apr 04 2021 Fabrice Creuzot - 2.3.0-1 - New upstream release * Wed Nov 11 2020 Fabrice Creuzot - 2.2.0-1 - Initial Fedora package release (Closes: rhbz#1893321) awf-extended-2.9.0/scripts/fedora/awf-gtk3.spec000066400000000000000000000064241477403510000213320ustar00rootroot00000000000000Name: awf-gtk3 Version: 2.9.0 Release: 1%{?dist} Summary: Theme preview application for GTK 3 Summary(fr): Application d'aperçu de thème pour GTK 3 License: GPL-3.0-or-later URL: https://github.com/luigifab/awf-extended Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz BuildRequires: aspell-fr BuildRequires: autoconf BuildRequires: automake BuildRequires: desktop-file-utils BuildRequires: libnotify-devel >= 0.7.0 BuildRequires: gcc BuildRequires: gettext BuildRequires: gtk3-devel Requires: gtk3 Requires: libnotify >= 0.7.0 Requires: hicolor-icon-theme %description %{expand: A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. This package provides the GTK 3 version.} %description -l fr %{expand: La fabrique à widgets est une application d'aperçu de thème pour GTK. Elle affiche les différents types de widgets fournis par GTK dans une seule fenêtre permettant de voir l'effet visuel du thème appliqué. Ce paquet fournit la version GTK 3.} %prep %setup -q -n awf-extended-%{version} sed -i 's/ -eq 2/ -eq -1/g' configure.ac sed -i 's/ -eq 4/ -eq -1/g' configure.ac %build autoreconf -fi %configure %make_build %install %make_install install -dm 755 %{buildroot}%{_datadir}/applications/ desktop-file-install --dir=%{buildroot}%{_datadir}/applications/ data/%{name}.desktop install -dm 755 %{buildroot}%{_datadir}/icons/hicolor/ for file in data/icons/*/*/awf.png; do mv $file ${file/\/awf.png/\/%{name}.png}; done for file in data/icons/*/*/awf.svg; do mv $file ${file/\/awf.svg/\/%{name}.svg}; done cp -a data/icons/* %{buildroot}%{_datadir}/icons/hicolor/ install -Dpm 644 data/%{name}.1 %{buildroot}%{_mandir}/man1/%{name}.1 install -Dpm 644 data/%{name}.fr.1 %{buildroot}%{_mandir}/fr/man1/%{name}.1 for file in src/po/*.po; do code=$(basename "$file" .po) install -dm 755 %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/ msgfmt src/po/$code.po -o %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/%{name}.mo done %find_lang %{name} --with-man %files -f %{name}.lang %license LICENSE %doc README.md %{_bindir}/%{name} %{_datadir}/applications/%{name}.desktop %{_datadir}/icons/hicolor/*/apps/%{name}.png %{_datadir}/icons/hicolor/scalable/apps/%{name}.svg %{_mandir}/man1/%{name}.1* %changelog * Fri Apr 04 2025 Fabrice Creuzot - 2.9.0-1 - New upstream release * Mon Mar 03 2025 Fabrice Creuzot - 2.8.1-1 - New upstream release * Fri Feb 02 2024 Fabrice Creuzot - 2.8.0-1 - New upstream release * Fri Jun 16 2023 Fabrice Creuzot - 2.7.0-2 - Package spec update * Tue Jun 06 2023 Fabrice Creuzot - 2.7.0-1 - New upstream release * Thu Sep 09 2021 Fabrice Creuzot - 2.6.0-1 - New upstream release * Wed Jul 07 2021 Fabrice Creuzot - 2.5.0-1 - New upstream release * Wed May 05 2021 Fabrice Creuzot - 2.4.0-1 - New upstream release * Sun Apr 04 2021 Fabrice Creuzot - 2.3.0-1 - New upstream release * Wed Nov 11 2020 Fabrice Creuzot - 2.2.0-1 - Initial Fedora package release (Closes: rhbz#1893323) awf-extended-2.9.0/scripts/fedora/awf-gtk4.spec000066400000000000000000000063001477403510000213240ustar00rootroot00000000000000Name: awf-gtk4 Version: 2.9.0 Release: 1%{?dist} Summary: Theme preview application for GTK 4 Summary(fr): Application d'aperçu de thème pour GTK 4 License: GPL-3.0-or-later URL: https://github.com/luigifab/awf-extended Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz BuildRequires: aspell-fr BuildRequires: autoconf BuildRequires: automake BuildRequires: desktop-file-utils BuildRequires: libnotify-devel >= 0.7.0 BuildRequires: gcc BuildRequires: gettext BuildRequires: gtk4-devel Requires: gtk4 Requires: libnotify >= 0.7.0 Requires: hicolor-icon-theme %description %{expand: A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. This package provides the GTK 4 version.} %description -l fr %{expand: La fabrique à widgets est une application d'aperçu de thème pour GTK. Elle affiche les différents types de widgets fournis par GTK dans une seule fenêtre permettant de voir l'effet visuel du thème appliqué. Ce paquet fournit la version GTK 4.} %prep %setup -q -n awf-extended-%{version} sed -i 's/ -eq 2/ -eq -1/g' configure.ac sed -i 's/ -eq 3/ -eq -1/g' configure.ac %build autoreconf -fi %configure %make_build %install %make_install install -dm 755 %{buildroot}%{_datadir}/applications/ desktop-file-install --dir=%{buildroot}%{_datadir}/applications/ data/%{name}.desktop install -dm 755 %{buildroot}%{_datadir}/icons/hicolor/ for file in data/icons/*/*/awf.png; do mv $file ${file/\/awf.png/\/%{name}.png}; done for file in data/icons/*/*/awf.svg; do mv $file ${file/\/awf.svg/\/%{name}.svg}; done cp -a data/icons/* %{buildroot}%{_datadir}/icons/hicolor/ install -Dpm 644 data/%{name}.1 %{buildroot}%{_mandir}/man1/%{name}.1 install -Dpm 644 data/%{name}.fr.1 %{buildroot}%{_mandir}/fr/man1/%{name}.1 for file in src/po/*.po; do code=$(basename "$file" .po) install -dm 755 %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/ msgfmt src/po/$code.po -o %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/%{name}.mo done %find_lang %{name} --with-man %files -f %{name}.lang %license LICENSE %doc README.md %{_bindir}/%{name} %{_datadir}/applications/%{name}.desktop %{_datadir}/icons/hicolor/*/apps/%{name}.png %{_datadir}/icons/hicolor/scalable/apps/%{name}.svg %{_mandir}/man1/%{name}.1* %changelog * Fri Apr 04 2025 Fabrice Creuzot - 2.9.0-1 - New upstream release * Mon Mar 03 2025 Fabrice Creuzot - 2.8.1-1 - New upstream release * Fri Feb 02 2024 Fabrice Creuzot - 2.8.0-1 - New upstream release * Fri Jun 16 2023 Fabrice Creuzot - 2.7.0-2 - Package spec update * Tue Jun 06 2023 Fabrice Creuzot - 2.7.0-1 - New upstream release * Thu Sep 09 2021 Fabrice Creuzot - 2.6.0-1 - New upstream release * Wed Jul 07 2021 Fabrice Creuzot - 2.5.0-1 - New upstream release * Wed May 05 2021 Fabrice Creuzot - 2.4.0-1 - New upstream release * Sun Apr 04 2021 Fabrice Creuzot - 2.3.0-1 - Initial Fedora package release (Closes: rhbz#1946092) awf-extended-2.9.0/scripts/fedora/rpm-gtk2.sh000066400000000000000000000026771477403510000210400ustar00rootroot00000000000000#!/bin/bash # Fedora: sudo dnf install rpmdevtools rpm-sign autoconf automake libnotify-devel gtk2-devel desktop-file-utils aspell-fr enchant2-aspell # Fedora: configure: error: C compiler cannot create executables? remove and reinstall glibc-devel gcc cd "$(dirname "$0")" version="2.9.0" gtk="gtk2" mkdir -p builder ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} find builder/* ! -name "*$version*.rpm" ! -name "*$version*.gz" -exec rm -rf {} + 2>/dev/null # copy to a tmp directory if [ true ]; then chmod 644 awf-$gtk.spec spectool -g -R awf-$gtk.spec else temp=awf-extended-$version mkdir /tmp/$temp cp -r ../../* /tmp/$temp/ rm -rf /tmp/$temp/scripts/*/builder/ mv /tmp/$temp builder/ cp /usr/share/common-licenses/GPL*3 builder/$temp/LICENSE cd builder/ tar czf $temp.tar.gz $temp cd .. cp builder/$temp.tar.gz ~/rpmbuild/SOURCES/awf-$gtk-$version.tar.gz chmod 644 awf-$gtk.spec fi # create package (rpm sign https://access.redhat.com/articles/3359321) rpmbuild -ba awf-$gtk.spec rpm --addsign ~/rpmbuild/RPMS/*/awf-$gtk*.rpm rpm --addsign ~/rpmbuild/SRPMS/awf-$gtk*.rpm mv ~/rpmbuild/RPMS/*/awf-$gtk*.rpm builder/ mv ~/rpmbuild/SRPMS/awf-$gtk*.rpm builder/ echo "===========================" rpm --checksig builder/awf-$gtk*.rpm echo "===========================" rpmlint awf-$gtk.spec builder/awf-$gtk*.rpm echo "===========================" ls -dlth "$PWD/"builder/*.rpm echo "===========================" # cleanup rm -rf builder/*/awf-extended-2.9.0/scripts/fedora/rpm-gtk3.sh000066400000000000000000000026771477403510000210410ustar00rootroot00000000000000#!/bin/bash # Fedora: sudo dnf install rpmdevtools rpm-sign autoconf automake libnotify-devel gtk3-devel desktop-file-utils aspell-fr enchant2-aspell # Fedora: configure: error: C compiler cannot create executables? remove and reinstall glibc-devel gcc cd "$(dirname "$0")" version="2.9.0" gtk="gtk3" mkdir -p builder ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} find builder/* ! -name "*$version*.rpm" ! -name "*$version*.gz" -exec rm -rf {} + 2>/dev/null # copy to a tmp directory if [ true ]; then chmod 644 awf-$gtk.spec spectool -g -R awf-$gtk.spec else temp=awf-extended-$version mkdir /tmp/$temp cp -r ../../* /tmp/$temp/ rm -rf /tmp/$temp/scripts/*/builder/ mv /tmp/$temp builder/ cp /usr/share/common-licenses/GPL*3 builder/$temp/LICENSE cd builder/ tar czf $temp.tar.gz $temp cd .. cp builder/$temp.tar.gz ~/rpmbuild/SOURCES/awf-$gtk-$version.tar.gz chmod 644 awf-$gtk.spec fi # create package (rpm sign https://access.redhat.com/articles/3359321) rpmbuild -ba awf-$gtk.spec rpm --addsign ~/rpmbuild/RPMS/*/awf-$gtk*.rpm rpm --addsign ~/rpmbuild/SRPMS/awf-$gtk*.rpm mv ~/rpmbuild/RPMS/*/awf-$gtk*.rpm builder/ mv ~/rpmbuild/SRPMS/awf-$gtk*.rpm builder/ echo "===========================" rpm --checksig builder/awf-$gtk*.rpm echo "===========================" rpmlint awf-$gtk.spec builder/awf-$gtk*.rpm echo "===========================" ls -dlth "$PWD/"builder/*.rpm echo "===========================" # cleanup rm -rf builder/*/awf-extended-2.9.0/scripts/fedora/rpm-gtk4.sh000066400000000000000000000026771477403510000210420ustar00rootroot00000000000000#!/bin/bash # Fedora: sudo dnf install rpmdevtools rpm-sign autoconf automake libnotify-devel gtk4-devel desktop-file-utils aspell-fr enchant2-aspell # Fedora: configure: error: C compiler cannot create executables? remove and reinstall glibc-devel gcc cd "$(dirname "$0")" version="2.9.0" gtk="gtk4" mkdir -p builder ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} find builder/* ! -name "*$version*.rpm" ! -name "*$version*.gz" -exec rm -rf {} + 2>/dev/null # copy to a tmp directory if [ true ]; then chmod 644 awf-$gtk.spec spectool -g -R awf-$gtk.spec else temp=awf-extended-$version mkdir /tmp/$temp cp -r ../../* /tmp/$temp/ rm -rf /tmp/$temp/scripts/*/builder/ mv /tmp/$temp builder/ cp /usr/share/common-licenses/GPL*3 builder/$temp/LICENSE cd builder/ tar czf $temp.tar.gz $temp cd .. cp builder/$temp.tar.gz ~/rpmbuild/SOURCES/awf-$gtk-$version.tar.gz chmod 644 awf-$gtk.spec fi # create package (rpm sign https://access.redhat.com/articles/3359321) rpmbuild -ba awf-$gtk.spec rpm --addsign ~/rpmbuild/RPMS/*/awf-$gtk*.rpm rpm --addsign ~/rpmbuild/SRPMS/awf-$gtk*.rpm mv ~/rpmbuild/RPMS/*/awf-$gtk*.rpm builder/ mv ~/rpmbuild/SRPMS/awf-$gtk*.rpm builder/ echo "===========================" rpm --checksig builder/awf-$gtk*.rpm echo "===========================" rpmlint awf-$gtk.spec builder/awf-$gtk*.rpm echo "===========================" ls -dlth "$PWD/"builder/*.rpm echo "===========================" # cleanup rm -rf builder/*/awf-extended-2.9.0/scripts/mageia/000077500000000000000000000000001477403510000170105ustar00rootroot00000000000000awf-extended-2.9.0/scripts/mageia/awf-gtk2.spec000066400000000000000000000052161477403510000213120ustar00rootroot00000000000000Name: awf-gtk2 Version: 2.9.0 Release: %mkrel 1 Summary: Theme preview application for GTK 2 Summary(fr): Application d'aperçu de thème pour GTK 2 License: GPLv3+ Group: Development/Basic URL: https://github.com/luigifab/awf-extended Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz BuildRequires: aspell-fr BuildRequires: autoconf BuildRequires: automake BuildRequires: desktop-file-utils BuildRequires: libnotify-devel >= 0.7.0 BuildRequires: gcc BuildRequires: gettext BuildRequires: gtk2-devel >= 2.24.0 Requires: gtk2 >= 2.24.0 Requires: libnotify >= 0.7.0 Requires: hicolor-icon-theme %description %{expand: A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. This package provides the GTK 2 version.} %description -l fr %{expand: La fabrique à widgets est une application d'aperçu de thème pour GTK. Elle affiche les différents types de widgets fournis par GTK dans une seule fenêtre permettant de voir l'effet visuel du thème appliqué. Ce paquet fournit la version GTK 2.} %prep %setup -q -n awf-extended-%{version} sed -i 's/ -eq 3/ -eq -1/g' configure.ac sed -i 's/ -eq 4/ -eq -1/g' configure.ac %build autoreconf -fi %configure %make_build %install %make_install install -dm 755 %{buildroot}%{_datadir}/applications/ desktop-file-install --dir=%{buildroot}%{_datadir}/applications/ data/%{name}.desktop install -dm 755 %{buildroot}%{_datadir}/icons/hicolor/ for file in data/icons/*/*/awf.png; do mv $file ${file/\/awf.png/\/%{name}.png}; done for file in data/icons/*/*/awf.svg; do mv $file ${file/\/awf.svg/\/%{name}.svg}; done cp -a data/icons/* %{buildroot}%{_datadir}/icons/hicolor/ install -Dpm 644 data/%{name}.1 %{buildroot}%{_mandir}/man1/%{name}.1 install -Dpm 644 data/%{name}.fr.1 %{buildroot}%{_mandir}/fr/man1/%{name}.1 for file in src/po/*.po; do code=$(basename "$file" .po) install -dm 755 %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/ msgfmt src/po/$code.po -o %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/%{name}.mo done %find_lang %{name} --with-man %files -f %{name}.lang %license LICENSE %doc README.md %{_bindir}/%{name} %{_datadir}/applications/%{name}.desktop %{_datadir}/icons/hicolor/*/apps/%{name}.png %{_datadir}/icons/hicolor/scalable/apps/%{name}.svg %{_mandir}/man1/%{name}.1* %changelog * Fri Apr 04 2025 Fabrice Creuzot - 2.9.0-1.mga9 - New upstream release * Mon Mar 03 2025 Fabrice Creuzot - 2.8.1-1.mga9 - Initial Mageia package release (Closes: mbz#32827) awf-extended-2.9.0/scripts/mageia/awf-gtk3.spec000066400000000000000000000051731477403510000213150ustar00rootroot00000000000000Name: awf-gtk3 Version: 2.9.0 Release: %mkrel 1 Summary: Theme preview application for GTK 3 Summary(fr): Application d'aperçu de thème pour GTK 4 License: GPLv3+ Group: Development/Basic URL: https://github.com/luigifab/awf-extended Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz BuildRequires: aspell-fr BuildRequires: autoconf BuildRequires: automake BuildRequires: desktop-file-utils BuildRequires: libnotify-devel >= 0.7.0 BuildRequires: gcc BuildRequires: gettext BuildRequires: gtk3-devel Requires: gtk+3 Requires: libnotify >= 0.7.0 Requires: hicolor-icon-theme %description %{expand: A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. This package provides the GTK 3 version.} %description -l fr %{expand: La fabrique à widgets est une application d'aperçu de thème pour GTK. Elle affiche les différents types de widgets fournis par GTK dans une seule fenêtre permettant de voir l'effet visuel du thème appliqué. Ce paquet fournit la version GTK 3.} %prep %setup -q -n awf-extended-%{version} sed -i 's/ -eq 2/ -eq -1/g' configure.ac sed -i 's/ -eq 4/ -eq -1/g' configure.ac %build autoreconf -fi %configure %make_build %install %make_install install -dm 755 %{buildroot}%{_datadir}/applications/ desktop-file-install --dir=%{buildroot}%{_datadir}/applications/ data/%{name}.desktop install -dm 755 %{buildroot}%{_datadir}/icons/hicolor/ for file in data/icons/*/*/awf.png; do mv $file ${file/\/awf.png/\/%{name}.png}; done for file in data/icons/*/*/awf.svg; do mv $file ${file/\/awf.svg/\/%{name}.svg}; done cp -a data/icons/* %{buildroot}%{_datadir}/icons/hicolor/ install -Dpm 644 data/%{name}.1 %{buildroot}%{_mandir}/man1/%{name}.1 install -Dpm 644 data/%{name}.fr.1 %{buildroot}%{_mandir}/fr/man1/%{name}.1 for file in src/po/*.po; do code=$(basename "$file" .po) install -dm 755 %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/ msgfmt src/po/$code.po -o %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/%{name}.mo done %find_lang %{name} --with-man %files -f %{name}.lang %license LICENSE %doc README.md %{_bindir}/%{name} %{_datadir}/applications/%{name}.desktop %{_datadir}/icons/hicolor/*/apps/%{name}.png %{_datadir}/icons/hicolor/scalable/apps/%{name}.svg %{_mandir}/man1/%{name}.1* %changelog * Fri Apr 04 2025 Fabrice Creuzot - 2.9.0-1.mga9 - New upstream release * Mon Mar 03 2025 Fabrice Creuzot - 2.8.1-1.mga9 - Initial Mageia package release (Closes: mbz#32827) awf-extended-2.9.0/scripts/mageia/awf-gtk4.spec000066400000000000000000000051721477403510000213150ustar00rootroot00000000000000Name: awf-gtk4 Version: 2.9.0 Release: %mkrel 1 Summary: Theme preview application for GTK 4 Summary(fr): Application d'aperçu de thème pour GTK 4 License: GPLv3+ Group: Development/Basic URL: https://github.com/luigifab/awf-extended Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz BuildRequires: aspell-fr BuildRequires: autoconf BuildRequires: automake BuildRequires: desktop-file-utils BuildRequires: libnotify-devel >= 0.7.0 BuildRequires: gcc BuildRequires: gettext BuildRequires: gtk4-devel Requires: gtk4 Requires: libnotify >= 0.7.0 Requires: hicolor-icon-theme %description %{expand: A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. This package provides the GTK 4 version.} %description -l fr %{expand: La fabrique à widgets est une application d'aperçu de thème pour GTK. Elle affiche les différents types de widgets fournis par GTK dans une seule fenêtre permettant de voir l'effet visuel du thème appliqué. Ce paquet fournit la version GTK 4.} %prep %setup -q -n awf-extended-%{version} sed -i 's/ -eq 2/ -eq -1/g' configure.ac sed -i 's/ -eq 3/ -eq -1/g' configure.ac %build autoreconf -fi %configure %make_build %install %make_install install -dm 755 %{buildroot}%{_datadir}/applications/ desktop-file-install --dir=%{buildroot}%{_datadir}/applications/ data/%{name}.desktop install -dm 755 %{buildroot}%{_datadir}/icons/hicolor/ for file in data/icons/*/*/awf.png; do mv $file ${file/\/awf.png/\/%{name}.png}; done for file in data/icons/*/*/awf.svg; do mv $file ${file/\/awf.svg/\/%{name}.svg}; done cp -a data/icons/* %{buildroot}%{_datadir}/icons/hicolor/ install -Dpm 644 data/%{name}.1 %{buildroot}%{_mandir}/man1/%{name}.1 install -Dpm 644 data/%{name}.fr.1 %{buildroot}%{_mandir}/fr/man1/%{name}.1 for file in src/po/*.po; do code=$(basename "$file" .po) install -dm 755 %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/ msgfmt src/po/$code.po -o %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/%{name}.mo done %find_lang %{name} --with-man %files -f %{name}.lang %license LICENSE %doc README.md %{_bindir}/%{name} %{_datadir}/applications/%{name}.desktop %{_datadir}/icons/hicolor/*/apps/%{name}.png %{_datadir}/icons/hicolor/scalable/apps/%{name}.svg %{_mandir}/man1/%{name}.1* %changelog * Fri Apr 04 2025 Fabrice Creuzot - 2.9.0-1.mga9 - New upstream release * Mon Mar 03 2025 Fabrice Creuzot - 2.8.1-1.mga9 - Initial Mageia package release (Closes: mbz#32827) awf-extended-2.9.0/scripts/mageia/rpm-gtk2.sh000066400000000000000000000025431477403510000210130ustar00rootroot00000000000000#!/bin/bash # Mageia: sudo urpmi --no-recommends rpmdevtools rpm-sign autoconf automake libnotify-devel gtk2-devel desktop-file-utils aspell-fr enchant2-aspell cd "$(dirname "$0")" version="2.9.0" gtk="gtk2" mkdir -p builder ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} find builder/* ! -name "*$version*.rpm" ! -name "*$version*.gz" -exec rm -rf {} + 2>/dev/null # copy to a tmp directory if [ true ]; then chmod 644 awf-$gtk.spec spectool -g -R awf-$gtk.spec else temp=awf-extended-$version mkdir /tmp/$temp cp -r ../../* /tmp/$temp/ rm -rf /tmp/$temp/scripts/*/builder/ mv /tmp/$temp builder/ cp /usr/share/common-licenses/GPL*3 builder/$temp/LICENSE cd builder/ tar czf $temp.tar.gz $temp cd .. cp builder/$temp.tar.gz ~/rpmbuild/SOURCES/awf-$gtk-$version.tar.gz chmod 644 awf-$gtk.spec fi # create package (rpm sign https://access.redhat.com/articles/3359321) rpmbuild -ba awf-$gtk.spec rpm --addsign ~/rpmbuild/RPMS/*/awf-$gtk*.rpm rpm --addsign ~/rpmbuild/SRPMS/awf-$gtk*.rpm mv ~/rpmbuild/RPMS/*/awf-$gtk*.rpm builder/ mv ~/rpmbuild/SRPMS/awf-$gtk*.rpm builder/ echo "===========================" rpm --checksig builder/awf-$gtk*.rpm echo "===========================" rpmlint awf-$gtk.spec builder/awf-$gtk*.rpm echo "===========================" ls -dlth "$PWD/"builder/*.rpm echo "===========================" # cleanup rm -rf builder/*/awf-extended-2.9.0/scripts/mageia/rpm-gtk3.sh000066400000000000000000000025431477403510000210140ustar00rootroot00000000000000#!/bin/bash # Mageia: sudo urpmi --no-recommends rpmdevtools rpm-sign autoconf automake libnotify-devel gtk3-devel desktop-file-utils aspell-fr enchant2-aspell cd "$(dirname "$0")" version="2.9.0" gtk="gtk3" mkdir -p builder ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} find builder/* ! -name "*$version*.rpm" ! -name "*$version*.gz" -exec rm -rf {} + 2>/dev/null # copy to a tmp directory if [ true ]; then chmod 644 awf-$gtk.spec spectool -g -R awf-$gtk.spec else temp=awf-extended-$version mkdir /tmp/$temp cp -r ../../* /tmp/$temp/ rm -rf /tmp/$temp/scripts/*/builder/ mv /tmp/$temp builder/ cp /usr/share/common-licenses/GPL*3 builder/$temp/LICENSE cd builder/ tar czf $temp.tar.gz $temp cd .. cp builder/$temp.tar.gz ~/rpmbuild/SOURCES/awf-$gtk-$version.tar.gz chmod 644 awf-$gtk.spec fi # create package (rpm sign https://access.redhat.com/articles/3359321) rpmbuild -ba awf-$gtk.spec rpm --addsign ~/rpmbuild/RPMS/*/awf-$gtk*.rpm rpm --addsign ~/rpmbuild/SRPMS/awf-$gtk*.rpm mv ~/rpmbuild/RPMS/*/awf-$gtk*.rpm builder/ mv ~/rpmbuild/SRPMS/awf-$gtk*.rpm builder/ echo "===========================" rpm --checksig builder/awf-$gtk*.rpm echo "===========================" rpmlint awf-$gtk.spec builder/awf-$gtk*.rpm echo "===========================" ls -dlth "$PWD/"builder/*.rpm echo "===========================" # cleanup rm -rf builder/*/awf-extended-2.9.0/scripts/mageia/rpm-gtk4.sh000066400000000000000000000025431477403510000210150ustar00rootroot00000000000000#!/bin/bash # Mageia: sudo urpmi --no-recommends rpmdevtools rpm-sign autoconf automake libnotify-devel gtk4-devel desktop-file-utils aspell-fr enchant2-aspell cd "$(dirname "$0")" version="2.9.0" gtk="gtk4" mkdir -p builder ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} find builder/* ! -name "*$version*.rpm" ! -name "*$version*.gz" -exec rm -rf {} + 2>/dev/null # copy to a tmp directory if [ true ]; then chmod 644 awf-$gtk.spec spectool -g -R awf-$gtk.spec else temp=awf-extended-$version mkdir /tmp/$temp cp -r ../../* /tmp/$temp/ rm -rf /tmp/$temp/scripts/*/builder/ mv /tmp/$temp builder/ cp /usr/share/common-licenses/GPL*3 builder/$temp/LICENSE cd builder/ tar czf $temp.tar.gz $temp cd .. cp builder/$temp.tar.gz ~/rpmbuild/SOURCES/awf-$gtk-$version.tar.gz chmod 644 awf-$gtk.spec fi # create package (rpm sign https://access.redhat.com/articles/3359321) rpmbuild -ba awf-$gtk.spec rpm --addsign ~/rpmbuild/RPMS/*/awf-$gtk*.rpm rpm --addsign ~/rpmbuild/SRPMS/awf-$gtk*.rpm mv ~/rpmbuild/RPMS/*/awf-$gtk*.rpm builder/ mv ~/rpmbuild/SRPMS/awf-$gtk*.rpm builder/ echo "===========================" rpm --checksig builder/awf-$gtk*.rpm echo "===========================" rpmlint awf-$gtk.spec builder/awf-$gtk*.rpm echo "===========================" ls -dlth "$PWD/"builder/*.rpm echo "===========================" # cleanup rm -rf builder/*/awf-extended-2.9.0/scripts/openmandriva/000077500000000000000000000000001477403510000202505ustar00rootroot00000000000000awf-extended-2.9.0/scripts/openmandriva/awf-gtk2.spec000066400000000000000000000052141477403510000225500ustar00rootroot00000000000000Name: awf-gtk2 Version: 2.9.0 Release: 1 Summary: Theme preview application for GTK 2 Summary(fr): Application d'aperçu de thème pour GTK 2 License: GPLv3+ Group: Development/Basic URL: https://github.com/luigifab/awf-extended Source0: %{url}/archive/v%{version}/awf-extended-%{version}.tar.gz BuildRequires: aspell-fr BuildRequires: autoconf BuildRequires: automake BuildRequires: desktop-file-utils BuildRequires: libnotify-devel >= 0.7.0 BuildRequires: gcc BuildRequires: gettext BuildRequires: gtk2-devel >= 2.24.0 Requires: gtk2 >= 2.24.0 Requires: libnotify >= 0.7.0 Requires: hicolor-icon-theme # gtk+2.0-devel gtk+2.0 %description %{expand: A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. This package provides the GTK 2 version.} %description -l fr %{expand: La fabrique à widgets est une application d'aperçu de thème pour GTK. Elle affiche les différents types de widgets fournis par GTK dans une seule fenêtre permettant de voir l'effet visuel du thème appliqué. Ce paquet fournit la version GTK 2.} %prep %setup -q -n awf-extended-%{version} sed -i 's/ -eq 3/ -eq -1/g' configure.ac sed -i 's/ -eq 4/ -eq -1/g' configure.ac %build autoreconf -fi %configure %make_build %install %make_install install -dm 755 %{buildroot}%{_datadir}/applications/ desktop-file-install --dir=%{buildroot}%{_datadir}/applications/ data/%{name}.desktop install -dm 755 %{buildroot}%{_datadir}/icons/hicolor/ for file in data/icons/*/*/awf.png; do mv $file ${file/\/awf.png/\/%{name}.png}; done for file in data/icons/*/*/awf.svg; do mv $file ${file/\/awf.svg/\/%{name}.svg}; done cp -a data/icons/* %{buildroot}%{_datadir}/icons/hicolor/ install -Dpm 644 data/%{name}.1 %{buildroot}%{_mandir}/man1/%{name}.1 install -Dpm 644 data/%{name}.fr.1 %{buildroot}%{_mandir}/fr/man1/%{name}.1 for file in src/po/*.po; do code=$(basename "$file" .po) install -dm 755 %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/ msgfmt src/po/$code.po -o %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/%{name}.mo done %find_lang %{name} --with-man %files -f %{name}.lang %license LICENSE %doc README.md %{_bindir}/%{name} %{_datadir}/applications/%{name}.desktop %{_datadir}/icons/hicolor/*/apps/%{name}.png %{_datadir}/icons/hicolor/scalable/apps/%{name}.svg %{_mandir}/man1/%{name}.1* %changelog * Fri Apr 04 2025 Fabrice Creuzot - 2.9.0-1 - New upstream release * Mon Mar 03 2025 Fabrice Creuzot - 2.8.1-1 - Initial OpenMandriva package release awf-extended-2.9.0/scripts/openmandriva/awf-gtk3.spec000066400000000000000000000051701477403510000225520ustar00rootroot00000000000000Name: awf-gtk3 Version: 2.9.0 Release: 1 Summary: Theme preview application for GTK 3 Summary(fr): Application d'aperçu de thème pour GTK 4 License: GPLv3+ Group: Development/Basic URL: https://github.com/luigifab/awf-extended Source0: %{url}/archive/v%{version}/awf-extended-%{version}.tar.gz BuildRequires: aspell-fr BuildRequires: autoconf BuildRequires: automake BuildRequires: desktop-file-utils BuildRequires: libnotify-devel >= 0.7.0 BuildRequires: gcc BuildRequires: gettext BuildRequires: gtk3-devel Requires: gtk3 Requires: libnotify >= 0.7.0 Requires: hicolor-icon-theme # gtk+3.0-devel gtk+3.0 %description %{expand: A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. This package provides the GTK 3 version.} %description -l fr %{expand: La fabrique à widgets est une application d'aperçu de thème pour GTK. Elle affiche les différents types de widgets fournis par GTK dans une seule fenêtre permettant de voir l'effet visuel du thème appliqué. Ce paquet fournit la version GTK 3.} %prep %setup -q -n awf-extended-%{version} sed -i 's/ -eq 2/ -eq -1/g' configure.ac sed -i 's/ -eq 4/ -eq -1/g' configure.ac %build autoreconf -fi %configure %make_build %install %make_install install -dm 755 %{buildroot}%{_datadir}/applications/ desktop-file-install --dir=%{buildroot}%{_datadir}/applications/ data/%{name}.desktop install -dm 755 %{buildroot}%{_datadir}/icons/hicolor/ for file in data/icons/*/*/awf.png; do mv $file ${file/\/awf.png/\/%{name}.png}; done for file in data/icons/*/*/awf.svg; do mv $file ${file/\/awf.svg/\/%{name}.svg}; done cp -a data/icons/* %{buildroot}%{_datadir}/icons/hicolor/ install -Dpm 644 data/%{name}.1 %{buildroot}%{_mandir}/man1/%{name}.1 install -Dpm 644 data/%{name}.fr.1 %{buildroot}%{_mandir}/fr/man1/%{name}.1 for file in src/po/*.po; do code=$(basename "$file" .po) install -dm 755 %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/ msgfmt src/po/$code.po -o %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/%{name}.mo done %find_lang %{name} --with-man %files -f %{name}.lang %license LICENSE %doc README.md %{_bindir}/%{name} %{_datadir}/applications/%{name}.desktop %{_datadir}/icons/hicolor/*/apps/%{name}.png %{_datadir}/icons/hicolor/scalable/apps/%{name}.svg %{_mandir}/man1/%{name}.1* %changelog * Fri Apr 04 2025 Fabrice Creuzot - 2.9.0-1 - New upstream release * Mon Mar 03 2025 Fabrice Creuzot - 2.8.1-1 - Initial OpenMandriva package release awf-extended-2.9.0/scripts/openmandriva/awf-gtk4.spec000066400000000000000000000051661477403510000225600ustar00rootroot00000000000000Name: awf-gtk4 Version: 2.9.0 Release: 1 Summary: Theme preview application for GTK 4 Summary(fr): Application d'aperçu de thème pour GTK 4 License: GPLv3+ Group: Development/Basic URL: https://github.com/luigifab/awf-extended Source0: %{url}/archive/v%{version}/awf-extended-%{version}.tar.gz BuildRequires: aspell-fr BuildRequires: autoconf BuildRequires: automake BuildRequires: desktop-file-utils BuildRequires: libnotify-devel >= 0.7.0 BuildRequires: gcc BuildRequires: gettext BuildRequires: gtk4-devel Requires: gtk4 Requires: libnotify >= 0.7.0 Requires: hicolor-icon-theme # gtk4.0-devel gtk4.0 %description %{expand: A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. This package provides the GTK 4 version.} %description -l fr %{expand: La fabrique à widgets est une application d'aperçu de thème pour GTK. Elle affiche les différents types de widgets fournis par GTK dans une seule fenêtre permettant de voir l'effet visuel du thème appliqué. Ce paquet fournit la version GTK 4.} %prep %setup -q -n awf-extended-%{version} sed -i 's/ -eq 2/ -eq -1/g' configure.ac sed -i 's/ -eq 3/ -eq -1/g' configure.ac %build autoreconf -fi %configure %make_build %install %make_install install -dm 755 %{buildroot}%{_datadir}/applications/ desktop-file-install --dir=%{buildroot}%{_datadir}/applications/ data/%{name}.desktop install -dm 755 %{buildroot}%{_datadir}/icons/hicolor/ for file in data/icons/*/*/awf.png; do mv $file ${file/\/awf.png/\/%{name}.png}; done for file in data/icons/*/*/awf.svg; do mv $file ${file/\/awf.svg/\/%{name}.svg}; done cp -a data/icons/* %{buildroot}%{_datadir}/icons/hicolor/ install -Dpm 644 data/%{name}.1 %{buildroot}%{_mandir}/man1/%{name}.1 install -Dpm 644 data/%{name}.fr.1 %{buildroot}%{_mandir}/fr/man1/%{name}.1 for file in src/po/*.po; do code=$(basename "$file" .po) install -dm 755 %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/ msgfmt src/po/$code.po -o %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/%{name}.mo done %find_lang %{name} --with-man %files -f %{name}.lang %license LICENSE %doc README.md %{_bindir}/%{name} %{_datadir}/applications/%{name}.desktop %{_datadir}/icons/hicolor/*/apps/%{name}.png %{_datadir}/icons/hicolor/scalable/apps/%{name}.svg %{_mandir}/man1/%{name}.1* %changelog * Fri Apr 04 2025 Fabrice Creuzot - 2.9.0-1 - New upstream release * Mon Mar 03 2025 Fabrice Creuzot - 2.8.1-1 - Initial OpenMandriva package release awf-extended-2.9.0/scripts/openmandriva/rpm-gtk2.sh000066400000000000000000000024451477403510000222540ustar00rootroot00000000000000#!/bin/bash # Mageia: sudo dnf rpmdevtools rpm-sign autoconf automake libnotify-devel gtk2-devel desktop-file-utils aspell-fr enchant2-aspell abb cd "$(dirname "$0")" version="2.9.0" gtk="gtk2" mkdir -p builder builder/{BUILD,RPMS,SRPMS} find builder/* ! -name "*$version*.rpm" ! -name "*$version*.gz" -exec rm -rf {} + 2>/dev/null # copy to a tmp directory if [ true ]; then chmod 644 awf-$gtk.spec spectool -g -R awf-$gtk.spec else temp=awf-extended-$version mkdir /tmp/$temp cp -r ../../* /tmp/$temp/ rm -rf /tmp/$temp/scripts/*/builder/ mv /tmp/$temp builder/ cp /usr/share/common-licenses/GPL*3 builder/$temp/LICENSE cd builder/ tar czf $temp.tar.gz $temp cd .. mv builder/$temp.tar.gz awf-extended-$version.tar.gz chmod 644 awf-$gtk.spec fi # create package (rpm sign https://access.redhat.com/articles/3359321) cp -a awf-extended-$version.tar.gz awf-$gtk.spec builder/ cd builder/ abb builda rpm --addsign RPMS/*/awf-$gtk*.rpm rpm --addsign SRPMS/awf-$gtk*.rpm mv RPMS/*/awf-$gtk*.rpm . mv SRPMS/awf-$gtk*.rpm . echo "===========================" rpm --checksig *.rpm echo "===========================" rpmlint awf-$gtk.spec *.rpm echo "===========================" ls -dlth "$PWD/"*.rpm echo "===========================" cd .. # cleanup rm -rf builder/*/ builder/*buildlog builder/*specawf-extended-2.9.0/scripts/openmandriva/rpm-gtk3.sh000066400000000000000000000024451477403510000222550ustar00rootroot00000000000000#!/bin/bash # Mageia: sudo dnf rpmdevtools rpm-sign autoconf automake libnotify-devel gtk3-devel desktop-file-utils aspell-fr enchant2-aspell abb cd "$(dirname "$0")" version="2.9.0" gtk="gtk3" mkdir -p builder builder/{BUILD,RPMS,SRPMS} find builder/* ! -name "*$version*.rpm" ! -name "*$version*.gz" -exec rm -rf {} + 2>/dev/null # copy to a tmp directory if [ true ]; then chmod 644 awf-$gtk.spec spectool -g -R awf-$gtk.spec else temp=awf-extended-$version mkdir /tmp/$temp cp -r ../../* /tmp/$temp/ rm -rf /tmp/$temp/scripts/*/builder/ mv /tmp/$temp builder/ cp /usr/share/common-licenses/GPL*3 builder/$temp/LICENSE cd builder/ tar czf $temp.tar.gz $temp cd .. mv builder/$temp.tar.gz awf-extended-$version.tar.gz chmod 644 awf-$gtk.spec fi # create package (rpm sign https://access.redhat.com/articles/3359321) cp -a awf-extended-$version.tar.gz awf-$gtk.spec builder/ cd builder/ abb builda rpm --addsign RPMS/*/awf-$gtk*.rpm rpm --addsign SRPMS/awf-$gtk*.rpm mv RPMS/*/awf-$gtk*.rpm . mv SRPMS/awf-$gtk*.rpm . echo "===========================" rpm --checksig *.rpm echo "===========================" rpmlint awf-$gtk.spec *.rpm echo "===========================" ls -dlth "$PWD/"*.rpm echo "===========================" cd .. # cleanup rm -rf builder/*/ builder/*buildlog builder/*specawf-extended-2.9.0/scripts/openmandriva/rpm-gtk4.sh000066400000000000000000000024451477403510000222560ustar00rootroot00000000000000#!/bin/bash # Mageia: sudo dnf rpmdevtools rpm-sign autoconf automake libnotify-devel gtk4-devel desktop-file-utils aspell-fr enchant2-aspell abb cd "$(dirname "$0")" version="2.9.0" gtk="gtk4" mkdir -p builder builder/{BUILD,RPMS,SRPMS} find builder/* ! -name "*$version*.rpm" ! -name "*$version*.gz" -exec rm -rf {} + 2>/dev/null # copy to a tmp directory if [ true ]; then chmod 644 awf-$gtk.spec spectool -g -R awf-$gtk.spec else temp=awf-extended-$version mkdir /tmp/$temp cp -r ../../* /tmp/$temp/ rm -rf /tmp/$temp/scripts/*/builder/ mv /tmp/$temp builder/ cp /usr/share/common-licenses/GPL*3 builder/$temp/LICENSE cd builder/ tar czf $temp.tar.gz $temp cd .. mv builder/$temp.tar.gz awf-extended-$version.tar.gz chmod 644 awf-$gtk.spec fi # create package (rpm sign https://access.redhat.com/articles/3359321) cp -a awf-extended-$version.tar.gz awf-$gtk.spec builder/ cd builder/ abb builda rpm --addsign RPMS/*/awf-$gtk*.rpm rpm --addsign SRPMS/awf-$gtk*.rpm mv RPMS/*/awf-$gtk*.rpm . mv SRPMS/awf-$gtk*.rpm . echo "===========================" rpm --checksig *.rpm echo "===========================" rpmlint awf-$gtk.spec *.rpm echo "===========================" ls -dlth "$PWD/"*.rpm echo "===========================" cd .. # cleanup rm -rf builder/*/ builder/*buildlog builder/*specawf-extended-2.9.0/scripts/opensuse/000077500000000000000000000000001477403510000174265ustar00rootroot00000000000000awf-extended-2.9.0/scripts/opensuse/awf-gtk2.spec000066400000000000000000000062641477403510000217340ustar00rootroot00000000000000Name: awf-gtk2 Version: 2.9.0 Release: 0 Summary: Theme preview application for GTK 2 Summary(fr): Application d'aperçu de thème pour GTK 2 License: GPL-3.0-or-later URL: https://github.com/luigifab/awf-extended Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz BuildRequires: aspell-fr BuildRequires: autoconf BuildRequires: automake BuildRequires: desktop-file-utils BuildRequires: libnotify-devel >= 0.7.0 BuildRequires: gcc BuildRequires: gettext BuildRequires: gtk2-devel >= 2.24.0 Requires: gtk2 >= 2.24.0 Requires: libnotify >= 0.7.0 Requires: hicolor-icon-theme %description %{expand: A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. This package provides the GTK 2 version.} %description -l fr %{expand: La fabrique à widgets est une application d'aperçu de thème pour GTK. Elle affiche les différents types de widgets fournis par GTK dans une seule fenêtre permettant de voir l'effet visuel du thème appliqué. Ce paquet fournit la version GTK 2.} %prep %setup -q -n awf-extended-%{version} sed -i 's/ -eq 3/ -eq -1/g' configure.ac sed -i 's/ -eq 4/ -eq -1/g' configure.ac %build autoreconf -fi %configure %make_build %install %make_install install -dm 755 %{buildroot}%{_datadir}/applications/ desktop-file-install --dir=%{buildroot}%{_datadir}/applications/ data/%{name}.desktop install -dm 755 %{buildroot}%{_datadir}/icons/hicolor/ for file in data/icons/*/*/awf.png; do mv $file ${file/\/awf.png/\/%{name}.png}; done for file in data/icons/*/*/awf.svg; do mv $file ${file/\/awf.svg/\/%{name}.svg}; done cp -a data/icons/* %{buildroot}%{_datadir}/icons/hicolor/ install -Dpm 644 data/%{name}.1 %{buildroot}%{_mandir}/man1/%{name}.1 install -Dpm 644 data/%{name}.fr.1 %{buildroot}%{_mandir}/fr/man1/%{name}.1 for file in src/po/*.po; do code=$(basename "$file" .po) install -dm 755 %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/ msgfmt src/po/$code.po -o %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/%{name}.mo done %find_lang %{name} --with-man %files -f %{name}.lang %license LICENSE %doc README.md %{_bindir}/%{name} %{_datadir}/applications/%{name}.desktop %{_datadir}/icons/hicolor/*/apps/%{name}.png %{_datadir}/icons/hicolor/scalable/apps/%{name}.svg %{_mandir}/man1/%{name}.1* %changelog * Fri Apr 04 2025 Fabrice Creuzot - 2.9.0-1 - New upstream release * Mon Mar 03 2025 Fabrice Creuzot - 2.8.1-1 - New upstream release * Fri Feb 02 2024 Fabrice Creuzot - 2.8.0-1 - New upstream release * Fri Jun 16 2023 Fabrice Creuzot - 2.7.0-2 - Package spec update * Tue Jun 06 2023 Fabrice Creuzot - 2.7.0-1 - New upstream release * Thu Sep 09 2021 Fabrice Creuzot - 2.6.0-1 - New upstream release * Wed Jul 07 2021 Fabrice Creuzot - 2.5.0-1 - New upstream release * Wed May 05 2021 Fabrice Creuzot - 2.4.0-1 - New upstream release * Sun Apr 04 2021 Fabrice Creuzot - 2.3.0-1 - Initial openSUSE package release awf-extended-2.9.0/scripts/opensuse/awf-gtk3.spec000066400000000000000000000062401477403510000217270ustar00rootroot00000000000000Name: awf-gtk3 Version: 2.9.0 Release: 0 Summary: Theme preview application for GTK 3 Summary(fr): Application d'aperçu de thème pour GTK 3 License: GPL-3.0-or-later URL: https://github.com/luigifab/awf-extended Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz BuildRequires: aspell-fr BuildRequires: autoconf BuildRequires: automake BuildRequires: desktop-file-utils BuildRequires: libnotify-devel >= 0.7.0 BuildRequires: gcc BuildRequires: gettext BuildRequires: gtk3-devel Requires: gtk3 Requires: libnotify >= 0.7.0 Requires: hicolor-icon-theme %description %{expand: A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. This package provides the GTK 3 version.} %description -l fr %{expand: La fabrique à widgets est une application d'aperçu de thème pour GTK. Elle affiche les différents types de widgets fournis par GTK dans une seule fenêtre permettant de voir l'effet visuel du thème appliqué. Ce paquet fournit la version GTK 3.} %prep %setup -q -n awf-extended-%{version} sed -i 's/ -eq 2/ -eq -1/g' configure.ac sed -i 's/ -eq 4/ -eq -1/g' configure.ac %build autoreconf -fi %configure %make_build %install %make_install install -dm 755 %{buildroot}%{_datadir}/applications/ desktop-file-install --dir=%{buildroot}%{_datadir}/applications/ data/%{name}.desktop install -dm 755 %{buildroot}%{_datadir}/icons/hicolor/ for file in data/icons/*/*/awf.png; do mv $file ${file/\/awf.png/\/%{name}.png}; done for file in data/icons/*/*/awf.svg; do mv $file ${file/\/awf.svg/\/%{name}.svg}; done cp -a data/icons/* %{buildroot}%{_datadir}/icons/hicolor/ install -Dpm 644 data/%{name}.1 %{buildroot}%{_mandir}/man1/%{name}.1 install -Dpm 644 data/%{name}.fr.1 %{buildroot}%{_mandir}/fr/man1/%{name}.1 for file in src/po/*.po; do code=$(basename "$file" .po) install -dm 755 %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/ msgfmt src/po/$code.po -o %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/%{name}.mo done %find_lang %{name} --with-man %files -f %{name}.lang %license LICENSE %doc README.md %{_bindir}/%{name} %{_datadir}/applications/%{name}.desktop %{_datadir}/icons/hicolor/*/apps/%{name}.png %{_datadir}/icons/hicolor/scalable/apps/%{name}.svg %{_mandir}/man1/%{name}.1* %changelog * Fri Apr 04 2025 Fabrice Creuzot - 2.9.0-1 - New upstream release * Mon Mar 03 2025 Fabrice Creuzot - 2.8.1-1 - New upstream release * Fri Feb 02 2024 Fabrice Creuzot - 2.8.0-1 - New upstream release * Fri Jun 16 2023 Fabrice Creuzot - 2.7.0-2 - Package spec update * Tue Jun 06 2023 Fabrice Creuzot - 2.7.0-1 - New upstream release * Thu Sep 09 2021 Fabrice Creuzot - 2.6.0-1 - New upstream release * Wed Jul 07 2021 Fabrice Creuzot - 2.5.0-1 - New upstream release * Wed May 05 2021 Fabrice Creuzot - 2.4.0-1 - New upstream release * Sun Apr 04 2021 Fabrice Creuzot - 2.3.0-1 - Initial openSUSE package release awf-extended-2.9.0/scripts/opensuse/awf-gtk4.spec000066400000000000000000000062401477403510000217300ustar00rootroot00000000000000Name: awf-gtk4 Version: 2.9.0 Release: 0 Summary: Theme preview application for GTK 4 Summary(fr): Application d'aperçu de thème pour GTK 4 License: GPL-3.0-or-later URL: https://github.com/luigifab/awf-extended Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz BuildRequires: aspell-fr BuildRequires: autoconf BuildRequires: automake BuildRequires: desktop-file-utils BuildRequires: libnotify-devel >= 0.7.0 BuildRequires: gcc BuildRequires: gettext BuildRequires: gtk4-devel Requires: gtk4 Requires: libnotify >= 0.7.0 Requires: hicolor-icon-theme %description %{expand: A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme. This package provides the GTK 4 version.} %description -l fr %{expand: La fabrique à widgets est une application d'aperçu de thème pour GTK. Elle affiche les différents types de widgets fournis par GTK dans une seule fenêtre permettant de voir l'effet visuel du thème appliqué. Ce paquet fournit la version GTK 4.} %prep %setup -q -n awf-extended-%{version} sed -i 's/ -eq 2/ -eq -1/g' configure.ac sed -i 's/ -eq 3/ -eq -1/g' configure.ac %build autoreconf -fi %configure %make_build %install %make_install install -dm 755 %{buildroot}%{_datadir}/applications/ desktop-file-install --dir=%{buildroot}%{_datadir}/applications/ data/%{name}.desktop install -dm 755 %{buildroot}%{_datadir}/icons/hicolor/ for file in data/icons/*/*/awf.png; do mv $file ${file/\/awf.png/\/%{name}.png}; done for file in data/icons/*/*/awf.svg; do mv $file ${file/\/awf.svg/\/%{name}.svg}; done cp -a data/icons/* %{buildroot}%{_datadir}/icons/hicolor/ install -Dpm 644 data/%{name}.1 %{buildroot}%{_mandir}/man1/%{name}.1 install -Dpm 644 data/%{name}.fr.1 %{buildroot}%{_mandir}/fr/man1/%{name}.1 for file in src/po/*.po; do code=$(basename "$file" .po) install -dm 755 %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/ msgfmt src/po/$code.po -o %{buildroot}%{_datadir}/locale/$code/LC_MESSAGES/%{name}.mo done %find_lang %{name} --with-man %files -f %{name}.lang %license LICENSE %doc README.md %{_bindir}/%{name} %{_datadir}/applications/%{name}.desktop %{_datadir}/icons/hicolor/*/apps/%{name}.png %{_datadir}/icons/hicolor/scalable/apps/%{name}.svg %{_mandir}/man1/%{name}.1* %changelog * Fri Apr 04 2025 Fabrice Creuzot - 2.9.0-1 - New upstream release * Mon Mar 03 2025 Fabrice Creuzot - 2.8.1-1 - New upstream release * Fri Feb 02 2024 Fabrice Creuzot - 2.8.0-1 - New upstream release * Fri Jun 16 2023 Fabrice Creuzot - 2.7.0-2 - Package spec update * Tue Jun 06 2023 Fabrice Creuzot - 2.7.0-1 - New upstream release * Thu Sep 09 2021 Fabrice Creuzot - 2.6.0-1 - New upstream release * Wed Jul 07 2021 Fabrice Creuzot - 2.5.0-1 - New upstream release * Wed May 05 2021 Fabrice Creuzot - 2.4.0-1 - New upstream release * Sun Apr 04 2021 Fabrice Creuzot - 2.3.0-1 - Initial openSUSE package release awf-extended-2.9.0/scripts/opensuse/rpm-gtk2.sh000066400000000000000000000025401477403510000214260ustar00rootroot00000000000000#!/bin/bash # openSUSE: sudo zypper install rpmdevtools rpm-build autoconf automake libnotify-devel gtk2-devel desktop-file-utils aspell-fr cd "$(dirname "$0")" version="2.9.0" gtk="gtk2" mkdir -p builder ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} find builder/* ! -name "*$version*.rpm" ! -name "*$version*.gz" -exec rm -rf {} + 2>/dev/null # copy to a tmp directory if [ true ]; then chmod 644 awf-$gtk.spec spectool -g -R awf-$gtk.spec else temp=awf-extended-$version mkdir /tmp/$temp cp -r ../../* /tmp/$temp/ rm -rf /tmp/$temp/scripts/*/builder/ mv /tmp/$temp builder/ cp /usr/share/licenses/*-firmware/GPL-3 builder/$temp/LICENSE # * = kernel cd builder/ tar czf $temp.tar.gz $temp cd .. cp builder/$temp.tar.gz ~/rpmbuild/SOURCES/awf-$gtk-$version.tar.gz chmod 644 awf-$gtk.spec fi # create package (rpm sign https://access.redhat.com/articles/3359321) rpmbuild -ba awf-$gtk.spec rpm --addsign ~/rpmbuild/RPMS/*/awf-$gtk*.rpm rpm --addsign ~/rpmbuild/SRPMS/awf-$gtk*.rpm mv ~/rpmbuild/RPMS/*/awf-$gtk*.rpm builder/ mv ~/rpmbuild/SRPMS/awf-$gtk*.rpm builder/ echo "===========================" rpm --checksig builder/awf-$gtk*.rpm echo "===========================" rpmlint awf-$gtk.spec builder/awf-$gtk*.rpm echo "===========================" ls -dlth "$PWD/"builder/*.rpm echo "===========================" # cleanup rm -rf builder/*/awf-extended-2.9.0/scripts/opensuse/rpm-gtk3.sh000066400000000000000000000025401477403510000214270ustar00rootroot00000000000000#!/bin/bash # openSUSE: sudo zypper install rpmdevtools rpm-build autoconf automake libnotify-devel gtk3-devel desktop-file-utils aspell-fr cd "$(dirname "$0")" version="2.9.0" gtk="gtk3" mkdir -p builder ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} find builder/* ! -name "*$version*.rpm" ! -name "*$version*.gz" -exec rm -rf {} + 2>/dev/null # copy to a tmp directory if [ true ]; then chmod 644 awf-$gtk.spec spectool -g -R awf-$gtk.spec else temp=awf-extended-$version mkdir /tmp/$temp cp -r ../../* /tmp/$temp/ rm -rf /tmp/$temp/scripts/*/builder/ mv /tmp/$temp builder/ cp /usr/share/licenses/*-firmware/GPL-3 builder/$temp/LICENSE # * = kernel cd builder/ tar czf $temp.tar.gz $temp cd .. cp builder/$temp.tar.gz ~/rpmbuild/SOURCES/awf-$gtk-$version.tar.gz chmod 644 awf-$gtk.spec fi # create package (rpm sign https://access.redhat.com/articles/3359321) rpmbuild -ba awf-$gtk.spec rpm --addsign ~/rpmbuild/RPMS/*/awf-$gtk*.rpm rpm --addsign ~/rpmbuild/SRPMS/awf-$gtk*.rpm mv ~/rpmbuild/RPMS/*/awf-$gtk*.rpm builder/ mv ~/rpmbuild/SRPMS/awf-$gtk*.rpm builder/ echo "===========================" rpm --checksig builder/awf-$gtk*.rpm echo "===========================" rpmlint awf-$gtk.spec builder/awf-$gtk*.rpm echo "===========================" ls -dlth "$PWD/"builder/*.rpm echo "===========================" # cleanup rm -rf builder/*/awf-extended-2.9.0/scripts/opensuse/rpm-gtk4.sh000066400000000000000000000025401477403510000214300ustar00rootroot00000000000000#!/bin/bash # openSUSE: sudo zypper install rpmdevtools rpm-build autoconf automake libnotify-devel gtk4-devel desktop-file-utils aspell-fr cd "$(dirname "$0")" version="2.9.0" gtk="gtk4" mkdir -p builder ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} find builder/* ! -name "*$version*.rpm" ! -name "*$version*.gz" -exec rm -rf {} + 2>/dev/null # copy to a tmp directory if [ true ]; then chmod 644 awf-$gtk.spec spectool -g -R awf-$gtk.spec else temp=awf-extended-$version mkdir /tmp/$temp cp -r ../../* /tmp/$temp/ rm -rf /tmp/$temp/scripts/*/builder/ mv /tmp/$temp builder/ cp /usr/share/licenses/*-firmware/GPL-3 builder/$temp/LICENSE # * = kernel cd builder/ tar czf $temp.tar.gz $temp cd .. cp builder/$temp.tar.gz ~/rpmbuild/SOURCES/awf-$gtk-$version.tar.gz chmod 644 awf-$gtk.spec fi # create package (rpm sign https://access.redhat.com/articles/3359321) rpmbuild -ba awf-$gtk.spec rpm --addsign ~/rpmbuild/RPMS/*/awf-$gtk*.rpm rpm --addsign ~/rpmbuild/SRPMS/awf-$gtk*.rpm mv ~/rpmbuild/RPMS/*/awf-$gtk*.rpm builder/ mv ~/rpmbuild/SRPMS/awf-$gtk*.rpm builder/ echo "===========================" rpm --checksig builder/awf-$gtk*.rpm echo "===========================" rpmlint awf-$gtk.spec builder/awf-$gtk*.rpm echo "===========================" ls -dlth "$PWD/"builder/*.rpm echo "===========================" # cleanup rm -rf builder/*/awf-extended-2.9.0/scripts/slackware/000077500000000000000000000000001477403510000175415ustar00rootroot00000000000000awf-extended-2.9.0/scripts/slackware/README000066400000000000000000000002701477403510000204200ustar00rootroot00000000000000A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme.awf-extended-2.9.0/scripts/slackware/awf.SlackBuild000066400000000000000000000101421477403510000222530ustar00rootroot00000000000000#!/bin/bash # Slackware build script for awf # Copyright 2025 Fabrice Creuzot, France # All rights reserved. # # Redistribution and use of this script, with or without modification, is # permitted provided that the following conditions are met: # # 1. Redistributions of this script must retain the above copyright # notice, this list of conditions and the following disclaimer. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. cd $(dirname $0) ; CWD=$(pwd) PRGNAM=awf VERSION=${VERSION:-2.9.0} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} if [ -z "$ARCH" ]; then case "$( uname -m )" in i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac fi if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" exit 0 fi TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} if [ "$ARCH" = "i586" ]; then SLKCFLAGS="-O2 -march=i586 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "i686" ]; then SLKCFLAGS="-O2 -march=i686 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC" LIBDIRSUFFIX="64" else SLKCFLAGS="-O2" LIBDIRSUFFIX="" fi set -e rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf $PRGNAM-extended-$VERSION tar xvf $CWD/$PRGNAM-extended-$VERSION.tar.gz cd $PRGNAM-extended-$VERSION chown -R root:root . find -L . \ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ -o -perm 511 \) -exec chmod 755 {} \; -o \ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; # action autoreconf -fiv ./configure \ --prefix=/usr \ --libdir=/usr/lib${LIBDIRSUFFIX} \ --sysconfdir=/etc \ --localstatedir=/var \ --mandir=/usr/man \ --docdir=/usr/doc/$PRGNAM-$VERSION \ --build=$ARCH-slackware-linux make make install DESTDIR=$PKG for gtk in "gtk2" "gtk3" "gtk4"; do install -Dpm 644 data/awf-$gtk.desktop $PKG/usr/share/applications/awf-$gtk.desktop cp -ar data/icons/ icons-$gtk/ for file in icons-$gtk/*/*/awf.png; do mv $file `dirname $file`/awf-$gtk.png; done for file in icons-$gtk/*/*/awf.svg; do mv $file `dirname $file`/awf-$gtk.svg; done install -dm 755 $PKG/usr/share/icons/hicolor/ cp -a icons-$gtk/* $PKG/usr/share/icons/hicolor/ install -Dpm 644 data/awf-$gtk.1 $PKG/usr/man/man1/awf-$gtk.1 install -Dpm 644 data/awf-$gtk.fr.1 $PKG/usr/man/fr/man1/awf-$gtk.1 for file in src/po/*.po; do code=`basename "$file" .po` mkdir -p locale-$gtk/$code/LC_MESSAGES/ msgfmt src/po/$code.po -o locale-$gtk/$code/LC_MESSAGES/awf-$gtk.mo install -Dpm 644 locale-$gtk/$code/LC_MESSAGES/awf-$gtk.mo $PKG/usr/share/locale/$code/LC_MESSAGES/awf-$gtk.mo done done # cleanup rm -rf icons-gtk*/ locale-gtk*/ rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true find $PKG/usr/man -type f -exec gzip -9 {} \; for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cp -a \ README.md LICENSE \ $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc cat $CWD/doinst.sh > $PKG/install/doinst.sh cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPEawf-extended-2.9.0/scripts/slackware/awf.info000066400000000000000000000004231477403510000211720ustar00rootroot00000000000000PRGNAM="awf" VERSION="2.9.0" HOMEPAGE="https://github.com/luigifab/awf-extended" DOWNLOAD="https://github.com/luigifab/awf-extended/archive/v2.9.0/awf-extended-2.9.0.tar.gz" MD5SUM="..." DOWNLOAD_x86_64="" MD5SUM_x86_64="" REQUIRES="" MAINTAINER="Fabrice Creuzot" EMAIL="..."awf-extended-2.9.0/scripts/slackware/doinst.sh000066400000000000000000000005021477403510000213720ustar00rootroot00000000000000if [ -x /usr/bin/update-desktop-database ]; then /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1 fi if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then if [ -x /usr/bin/gtk-update-icon-cache ]; then /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1 fi fi awf-extended-2.9.0/scripts/slackware/slack-desc000066400000000000000000000014651477403510000215030ustar00rootroot00000000000000# HOW TO EDIT THIS FILE: # The "handy ruler" below makes it easier to edit a package description. # Line up the first '|' above the ':' following the base package name, and # the '|' on the right side marks the last column you can put a character in. # You must make exactly 11 lines for the formatting to be correct. It's also # customary to leave one space after the ':' except on otherwise blank lines. |-----handy-ruler------------------------------------------------------| awf: awf (A Widget Factory) awf: awf: A widget factory is a theme preview application for GTK. It displays awf: the various widget types provided by GTK in a single window allowing awf: to see the visual effect of the applied theme. awf: awf: For GTK 2.24, 3.x, 4.x. awf: awf: awf: Homepage: https://github.com/luigifab/awf-extended awf:awf-extended-2.9.0/src/000077500000000000000000000000001477403510000146655ustar00rootroot00000000000000awf-extended-2.9.0/src/Makefile.am000066400000000000000000000014131477403510000167200ustar00rootroot00000000000000bin_PROGRAMS = if GTK4 bin_PROGRAMS += awf-gtk@GTK4_SUFFIX@ awf_gtk@GTK4_SUFFIX@_SOURCES = awf-gtk4.c awf_gtk@GTK4_SUFFIX@_CPPFLAGS = $(GTK4_CFLAGS) $(LIBNOTIFY_CFLAGS) -I/usr/include/gtk-4.0/unix-print awf_gtk@GTK4_SUFFIX@_LDADD = $(GTK4_LIBS) $(LIBNOTIFY_LIBS) endif if GTK3 bin_PROGRAMS += awf-gtk@GTK3_SUFFIX@ awf_gtk@GTK3_SUFFIX@_SOURCES = awf-gtk3.c awf_gtk@GTK3_SUFFIX@_CPPFLAGS = $(GTK3_CFLAGS) $(LIBNOTIFY_CFLAGS) -I/usr/include/gtk-3.0/unix-print awf_gtk@GTK3_SUFFIX@_LDADD = $(GTK3_LIBS) $(LIBNOTIFY_LIBS) endif if GTK2 bin_PROGRAMS += awf-gtk@GTK2_SUFFIX@ awf_gtk@GTK2_SUFFIX@_SOURCES = awf-gtk2.c awf_gtk@GTK2_SUFFIX@_CPPFLAGS = $(GTK2_CFLAGS) $(LIBNOTIFY_CFLAGS) -I/usr/include/gtk-unix-print-2.0 awf_gtk@GTK2_SUFFIX@_LDADD = $(GTK2_LIBS) $(LIBNOTIFY_LIBS) endifawf-extended-2.9.0/src/awf-gtk2.c000066400000000000000000002627661477403510000164760ustar00rootroot00000000000000/** * Forked M/10/03/2020 * Updated L/31/03/2025 * * Copyright 2020-2025 | Fabrice Creuzot (luigifab) * https://github.com/luigifab/awf-extended * https://www.luigifab.fr/gtk/awf-extended * * Forked from * Copyright 2011-2017 | Valère Monseur (valr) * https://github.com/valr/awf * * Forked from * AWF is originally based on the code from The Widget Factory * created by Richard Stellingwerff * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published * by the free software foundation, either version 3 of the license, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but without any warranty, without even the implied warranty of * merchantability or fitness for a particular purpose. See the * GNU General Public License (GPL) for more details. * * * Translations update: * xgettext --keyword=_app -d awf -o src/awf.pot -k_ -s src/awf-gtk*.c * msgmerge src/po/fr.po src/awf.pot -o src/po/fr.po * msgfmt src/po/fr.po -o src/fr/LC_MESSAGES/awf.mo * * Tested with build.sh (via VirtualBox 7.0) with: * Debian Testing 64 (1536 MB) GTK 2.24/3.24/4.18 + GLIB 2.84 + Pango 1.56 * Fedora Rawhide 64 (1536 MB) GTK 2.24/3.24/4.18 + GLIB 2.84 + Pango 1.56 * Ubuntu 24.10 Oracular Oriole 64 (4096 MB) GTK 2.24/3.24/4.16 + GLIB 2.82 + Pango 1.54 * Ubuntu 24.04 Noble Numbat 64 (4096 MB) GTK 2.24/3.24/4.14 + GLIB 2.80 + Pango 1.52 * Ubuntu 23.10 Mantic Minotaur 64 (3072 MB) GTK 2.24/3.24/4.12 + GLIB 2.78 + Pango 1.51 * Ubuntu 23.04 Lunar Lobster 64 (3072 MB) GTK 2.24/3.24/4.10 + GLIB 2.76 + Pango 1.50 * Ubuntu 22.10 Kinetic Kudu 64 (2176 MB) GTK 2.24/3.24/4.8 + GLIB 2.74 + Pango 1.50 * Ubuntu 22.04 Jammy Jellyfish 64 (2176 MB) GTK 2.24/3.24/4.6 + GLIB 2.72 + Pango 1.50 * Ubuntu 21.10 Impish Indri 64 (2176 MB) GTK 2.24/3.24/4.4 + GLIB 2.68 + Pango 1.48 * Ubuntu 21.04 Hirsute Hippo 64 (2176 MB) GTK 2.24/3.24/4.0 + GLIB 2.68 + Pango 1.48 * Ubuntu 17.04 Zesty Zapus 32 (1536 MB) GTK 2.24/3.22 + GLIB 2.52 + Pango 1.40 * Ubuntu 16.10 Yakkety Yak 32 (1536 MB) GTK 2.24/3.20 + GLIB 2.50 + Pango 1.40 * Ubuntu 16.04 Xenial Xerus 32 (1536 MB) GTK 2.24/3.18 + GLIB 2.48 + Pango 1.38 * Ubuntu 15.10 Wily Werewolf 32 (1024 MB) GTK 2.24/3.16 + GLIB 2.46 + Pango 1.36 * Ubuntu 15.04 Vivid Vervet 32 (1024 MB) GTK 2.24/3.14 + GLIB 2.44 + Pango 1.36 * Ubuntu 14.10 Utopic Unicorn 32 (1024 MB) GTK 2.24/3.12 + GLIB 2.42 + Pango 1.36 * Ubuntu 14.04 Trusty Tahr 32 (1024 MB) GTK 2.24/3.10 + GLIB 2.40 + Pango 1.36 * Ubuntu 13.10 Saucy Salamander 32 (1024 MB) GTK 2.24/3.8 + GLIB 2.38 + Pango 1.32 * Ubuntu 13.04 Raring Ringtail 32 (1024 MB) GTK 2.24/3.6 + GLIB 2.36 + Pango 1.32 * Ubuntu 12.04 Precise Pangolin 32 (1024 MB) GTK 2.24/3.4 + GLIB 2.32 + Pango 1.30 * Ubuntu 11.10 Oneiric Ocelot 32 (1024 MB) GTK 2.24/3.2 + GLIB 2.30 + Pango 1.29 * Ubuntu 11.04 Natty Narwhal 32 (1024 MB) GTK 2.24/3.0 + GLIB 2.28 + Pango 1.28 */ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #include #include #include #include #include #include #include #include #if GLIB_CHECK_VERSION (2,30,0) #include #endif #pragma GCC diagnostic pop #define GETTEXT_PACKAGE g_strdup_printf ("awf-gtk%d", GTK_MAJOR_VERSION) #define BOXH (gtk_hbox_new (FALSE, 0)) #define BOXV (gtk_vbox_new (FALSE, 0)) #define SEPH (gtk_hseparator_new ()) #define SEPV (gtk_vseparator_new ()) #define PANEH (gtk_hpaned_new ()) #define PANEV (gtk_vpaned_new ()) #define GDK_KEY_F1 0xffbe #define GDK_KEY_F2 0xffbf #define GDK_KEY_F3 0xffc0 #define GDK_KEY_F4 0xffc1 #define GDK_KEY_F5 0xffc2 #define GDK_KEY_F6 0xffc3 #define GDK_KEY_F7 0xffc4 #define GDK_KEY_F8 0xffc5 #define GDK_KEY_F9 0xffc6 #define GDK_KEY_F10 0xffc7 #define GDK_KEY_F11 0xffc8 #define GDK_KEY_F12 0xffc9 #define GDK_KEY_Delete 0xffff #define GDK_KEY_KP_Delete 0xff9f #define GDK_KEY_BackSpace 0xff08 #define AWF_OPEN "/Test/Open" #define AWF_RECE "/Test/Recent" #define AWF_CALE "/Test/Calendar" #define AWF_SCAT "/Test/ScalesTop" #define AWF_SCAB "/Test/ScalesBottom" #define AWF_SCAR "/Test/ScalesRight" #define AWF_SCAL "/Test/ScalesLeft" #define AWF_SAVE "/Test/Save" #define AWF_REFR "/Test/Refresh" #define AWF_PROP "/Test/Properties" #define AWF_PRSE "/Test/PrintSetup" #define AWF_PRIN "/Test/Print" #define AWF_ABOU "/Test/About" #define AWF_MCUT "/Test/More/Cut" #define AWF_MCOP "/Test/More/Copy" #define AWF_MPAS "/Test/More/Past" #define AWF_CLOS "/Test/Close" #define AWF_QUIT "/Test/Quit" #define AWF_ACCEL_OPEN "O" #define AWF_ACCEL_RECE NULL #define AWF_ACCEL_CALE NULL #define AWF_ACCEL_SCAT NULL #define AWF_ACCEL_SCAB NULL #define AWF_ACCEL_SCAR NULL #define AWF_ACCEL_SCAL NULL #define AWF_ACCEL_SAVE "S" #define AWF_ACCEL_REFR "F5" #define AWF_ACCEL_PROP "Return" #define AWF_ACCEL_PRSE "P" #define AWF_ACCEL_PRIN "P" #define AWF_ACCEL_ABOU "F1" #define AWF_ACCEL_MCUT "X" #define AWF_ACCEL_MCOP "C" #define AWF_ACCEL_MPAS "V" #define AWF_ACCEL_CLOS "W" #define AWF_ACCEL_QUIT "Q" // @see https://stackoverflow.com/a/10018581/2980105 #define _app(String) dgettext (GETTEXT_PACKAGE, String) #define _gtk(String) dgettext (g_strdup_printf ("gtk%d0", GTK_MAJOR_VERSION), String) // global variables static GSList *list_system_theme = NULL; static GSList *list_user_theme = NULL; static GtkWidget *window = NULL, *toolbar = NULL, *toolbarentry = NULL, *statusbar = NULL; static GtkWidget *volume1 = NULL, *volume2 = NULL; static GtkWidget *progressbar1 = NULL, *progressbar2 = NULL, *progressbar3 = NULL, *progressbar4 = NULL, *progressbar8 = NULL, *progressbar9 = NULL; static GtkWidget *scale1 = NULL, *scale2 = NULL, *scale3 = NULL, *scale4 = NULL, *scale5 = NULL, *scale6 = NULL; static GtkWidget *notebook1 = NULL, *notebook2 = NULL, *notebook3 = NULL, *notebook4 = NULL; static GtkWidget *current_menuitem = NULL; static int current_direction = GTK_TEXT_DIR_NONE; static gchar *current_theme = "auto"; static gchar *opt_theme = "auto"; static gchar *opt_screenshot = NULL; static gboolean opt_startspinner = TRUE; static gboolean allow_update_theme = TRUE; static gboolean must_save_accels = FALSE; // global functions static void quit (); static GSList* awf_load_theme (gchar *directory); static int awf_compare_theme (gconstpointer theme1, gconstpointer theme2); static void update_text_direction (int direction); static void update_window_size (); static void update_theme (gchar *new_theme); static void update_statusbar (gchar *message); static void update_values (GtkRange *range); static void update_widgets (); static void update_marks (GtkScale *scale, gboolean value, int position); static void display_notification (); static void find_and_update_labels (GtkWidget *widget, gboolean special); static gboolean on_notification_action (void *data); static gboolean on_sighup (void *data); static gboolean take_screenshot (void *data); static void create_window (gpointer app); static void create_widgets (GtkWidget *root); static void add_to (GtkBox *box, GtkWidget *widget, gboolean fill, gboolean expand, guint padding, guint spacing); static void add_progressbar_and_entrybar (); static void create_toolbar_items (GtkWidget *root); static void create_combos_entries (GtkWidget *root); static void create_spinbuttons (GtkWidget *root); static void create_checkbuttons (GtkWidget *root); static void create_radiobuttons (GtkWidget *root); static void create_otherbuttons (GtkWidget *root1, GtkWidget *root2, GtkWidget *root3, GtkWidget *root4, GtkWidget *root5); static void create_progressbars (GtkWidget *root1, GtkWidget *root2, GtkWidget *root3, GtkWidget *root4); static void create_labels (GtkWidget *root); static void create_spinners (GtkWidget *root); static void create_expander (GtkWidget *root); static void create_frames (GtkWidget *root1, GtkWidget *root2); static void create_notebooks (GtkWidget *root1, GtkWidget *root2); static void create_notebook_tab (GtkWidget *notebook, gchar *text, gboolean close); static void create_treview (GtkWidget *root); static GtkWidget* create_horizontal_scale (gdouble value, gboolean draw, gboolean inverted, int position); static GtkWidget* create_vertical_scale (gdouble value, gboolean draw, gboolean inverted, int position); static void create_traditional_menubar (GtkWidget *root); static GtkWidget* create_menu (GtkWidget *root, gchar *text); static GtkWidget* create_menuitem_tearoff (GtkWidget *menu); static GtkWidget* create_menuitem_check (GtkWidget *menu, gchar *text, gboolean checked, gboolean inconsistent, gboolean disabled); static GtkWidget* create_menuitem_radio (GtkWidget *menu, gchar *text, gboolean checked, gboolean inconsistent, gboolean disabled, GSList *group); static GtkWidget* create_menuitem (GtkWidget *menu, gchar *text, gboolean disabled, gchar *accel, gchar *keymap, GCallback function); static void accels_load (); static void accels_select (GtkWidget *widget); static void accels_deselect (GtkWidget *widget); static void accels_change (GtkWidget *widget, GdkEventKey *event); static void accels_save (); static void dialog_open (); static void dialog_recent (); static void dialog_save (); static void dialog_message (); static void dialog_page_setup (); static void dialog_print (); static void dialog_about (); static void dialog_calendar (); static void dialog_scales_top (); static void dialog_scales_bottom (); static void dialog_scales_right (); static void dialog_scales_left (); static void dialog_scales (int position); // run run run int main (int argc, gchar **argv) { int opt = 0, status = 0; GSList *iterator = NULL; // load available themes list_system_theme = awf_load_theme ("/usr/share/themes"); list_system_theme = g_slist_sort (list_system_theme, (GCompareFunc) awf_compare_theme); gchar *directory = g_build_path ("/", g_getenv ("HOME"), ".themes", NULL); list_user_theme = awf_load_theme (directory); list_user_theme = g_slist_sort (list_user_theme, (GCompareFunc) awf_compare_theme); g_free (directory); // locale setlocale (LC_ALL, ""); if (g_file_test ("/usr/share/locale", G_FILE_TEST_IS_DIR)) bindtextdomain (GETTEXT_PACKAGE, "/usr/share/locale"); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); // init static struct option long_options[] = { {"version", no_argument, NULL, 'v'}, {"list-themes", no_argument, NULL, 'l'}, {"no-spinners", no_argument, NULL, 'n'}, {"theme", required_argument, NULL, 't'}, {"screenshot", required_argument, NULL, 's'}, {"help", no_argument, NULL, 'x'}, {"ltr", no_argument, NULL, 'y'}, {"rtl", no_argument, NULL, 'z'}, {NULL, 0, NULL, 0} }; while ((opt = getopt_long (argc, argv, "vlnt:s:hxyz", long_options, NULL)) != -1) { switch (opt) { // --version -v case 'v': g_printf ("%s\n", VERSION); return status; // --list-themes -l case 'l': for (iterator = list_system_theme; iterator; iterator = iterator->next) g_printf ("%s\n", (gchar*) iterator->data); for (iterator = list_user_theme; iterator; iterator = iterator->next) g_printf ("%s\n", (gchar*) iterator->data); return status; // --no-spinners -n case 'n': opt_startspinner = FALSE; // --theme -t case 't': if (g_slist_find_custom (list_system_theme, optarg, &awf_compare_theme) || g_slist_find_custom (list_user_theme, optarg, &awf_compare_theme)) opt_theme = (gchar*) optarg; break; // --screenshot -s case 's': opt_screenshot = optarg; break; // --ltr case 'y': current_direction = GTK_TEXT_DIR_LTR; break; // --rtl case 'z': current_direction = GTK_TEXT_DIR_RTL; break; // --help (via GtkApplication) -h case 'x': case 'h': default: if (opt == 'x') { #if GLIB_CHECK_VERSION (2,42,0) && GTK_CHECK_VERSION (3,4,0) break; #endif } g_printf ("%s\n\n %s %s\n %s %s\n %s %s\n %s %s\n %s %s\n %s %s\n %s %s\n\n%s\n%s\n", g_strdup_printf (_app("A widget factory - GTK %d.%d"), GTK_MAJOR_VERSION, GTK_MINOR_VERSION), "-v ", _app("Show version number."), "-l ", _app("List available themes."), "-n ", _app("Don't start spinners."), "-t ", _app("Run with the specified theme."), "-s ", g_strdup_printf (_app("Run and save a png screenshot on %s."), "SIGHUP"), "--ltr ", _app("Start with text from left to right (Left-To-Right)."), "--rtl ", _app("Start with text from right to left (Right-To-Left)."), g_strdup_printf (_app("compiled with gtk %d.%d.%d and glib %d.%d.%d and pango %s"), GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION, GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION, PANGO_VERSION_STRING), g_strdup_printf (_app(" started with gtk %d.%d.%d and glib %d.%d.%d and pango %s"), gtk_major_version, gtk_minor_version, gtk_micro_version, glib_major_version, glib_minor_version, glib_micro_version, pango_version_string ()) ); return status; } } // create and show window // @code specdific for gtk2 #if GLIB_CHECK_VERSION (2,30,0) g_unix_signal_add (SIGHUP, on_sighup, NULL); #endif gtk_init (&argc, &argv); create_window (NULL); return status; } static void quit () { // @common accels_save (); exit (0); } static GSList* awf_load_theme (gchar *directory) { // @common GSList *list = NULL; g_return_val_if_fail (directory != NULL, NULL); if (g_file_test (directory, G_FILE_TEST_IS_DIR)) { GError *error = NULL; GDir *dir = g_dir_open (directory, 0, &error); if (dir) { gchar *theme = g_strdup (g_dir_read_name (dir)); gchar *gtkdir = g_strdup_printf ("gtk-%d.0", GTK_MAJOR_VERSION); while (theme) { gchar *theme_path = g_build_path ("/", directory, g_strstrip (theme), NULL); if (g_file_test (theme_path, G_FILE_TEST_IS_DIR)) { gchar *theme_subpath = g_build_path ("/", theme_path, gtkdir, NULL); if (g_file_test (theme_subpath, G_FILE_TEST_IS_DIR)) list = g_slist_prepend (list, theme); g_free (theme_subpath); } g_free (theme_path); theme = g_strdup (g_dir_read_name (dir)); } g_dir_close (dir); g_free (gtkdir); g_free (theme); } if (error) { g_fprintf (stderr, "unable to open directory: %s (%s)\n", directory, error->message); g_error_free (error); } } if (list) list = g_slist_reverse (list); return list; } static int awf_compare_theme (gconstpointer theme1, gconstpointer theme2) { // @common return g_strcmp0 ((gchar*) theme1, (gchar*) theme2); } static void update_text_direction (int direction) { // @common 80% // we must ignore the activate signal when menubar is created if (!allow_update_theme) return; if (((direction == GTK_TEXT_DIR_LTR) || (direction == 1)) && (gtk_widget_get_direction (window) != GTK_TEXT_DIR_LTR)) { gboolean toggle = gtk_notebook_get_scrollable (GTK_NOTEBOOK (notebook1)); current_direction = GTK_TEXT_DIR_LTR; gtk_widget_set_default_direction (current_direction); gtk_scale_clear_marks (GTK_SCALE (scale5)); update_marks (GTK_SCALE (scale5), toggle, GTK_POS_LEFT); gtk_scale_clear_marks (GTK_SCALE (scale6)); update_marks (GTK_SCALE (scale6), toggle, GTK_POS_RIGHT); } else if (((direction == GTK_TEXT_DIR_RTL) || (direction == 2)) && (gtk_widget_get_direction (window) != GTK_TEXT_DIR_RTL)) { gboolean toggle = gtk_notebook_get_scrollable (GTK_NOTEBOOK (notebook1)); gtk_scale_clear_marks (GTK_SCALE (scale5)); update_marks (GTK_SCALE (scale5), toggle, GTK_POS_RIGHT); gtk_scale_clear_marks (GTK_SCALE (scale6)); update_marks (GTK_SCALE (scale6), toggle, GTK_POS_LEFT); current_direction = GTK_TEXT_DIR_RTL; gtk_widget_set_default_direction (current_direction); } } static void update_window_size () { gtk_window_resize (GTK_WINDOW (window), 50, 50); } static void update_theme (gchar *new_theme) { // @common // we must ignore the activate signal when menubar is created if (!allow_update_theme) return; if (strcmp ((gchar*) new_theme, "refresh") == 0) { gchar *default_theme = "None"; if (g_slist_find_custom (list_system_theme, "Default", &awf_compare_theme)) default_theme = "Default"; else if (g_slist_find_custom (list_system_theme, "Raleigh", &awf_compare_theme)) default_theme = "Raleigh"; if (default_theme) { g_object_set (gtk_settings_get_default (), "gtk-theme-name", default_theme, NULL); g_usleep (G_USEC_PER_SEC / 2); g_object_set (gtk_settings_get_default (), "gtk-theme-name", current_theme, NULL); // @todo? force reload of ".config/gtk*/gtk.css" gchar *text = g_strdup_printf (_app("Theme %s reloaded."), current_theme); update_statusbar (text); g_free (text); update_window_size (); if (opt_screenshot) g_timeout_add_seconds (1, take_screenshot, NULL); } } else if (strcmp ((gchar*) new_theme, "auto") == 0) { g_object_get (gtk_settings_get_default (), "gtk-theme-name", ¤t_theme, NULL); update_window_size (); } else if (strcmp ((gchar*) current_theme, (gchar*) new_theme) != 0) { g_object_set (gtk_settings_get_default (), "gtk-theme-name", new_theme, NULL); g_object_get (gtk_settings_get_default (), "gtk-theme-name", ¤t_theme, NULL); //g_settings_set_string (g_settings_new ("org.mate.Marco.general"), "theme", (gchar*) current_theme); gchar *text = g_strdup_printf (_app("Theme %s loaded."), current_theme); update_statusbar (text); g_free (text); update_window_size (); } } static void update_statusbar (gchar *message) { // @common if (statusbar) { char buffer[12]; time_t rawtime; time (&rawtime); strftime (buffer, sizeof buffer, "%T", localtime (&rawtime)); gchar *text = g_strdup_printf ("%s - %s", buffer, message); gtk_statusbar_push (GTK_STATUSBAR (statusbar), gtk_statusbar_get_context_id (GTK_STATUSBAR (statusbar), "gné"), text); g_free (text); } } static void update_values (GtkRange *range) { double value = gtk_range_get_value (range); // range (0..1) gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar1), value / 100.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar2), value / 100.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar3), value / 100.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar4), value / 100.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar8), value / 100.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar9), value / 100.0); // range (0..1) gtk_scale_button_set_value (GTK_SCALE_BUTTON (volume1), value / 100.0); // range (0..100) if (scale1 != (GtkWidget*) range) gtk_range_set_value (GTK_RANGE (scale1), value); if (scale2 != (GtkWidget*) range) gtk_range_set_value (GTK_RANGE (scale2), value); if (scale3 != (GtkWidget*) range) gtk_range_set_value (GTK_RANGE (scale3), value); if (scale4 != (GtkWidget*) range) gtk_range_set_value (GTK_RANGE (scale4), value); if (scale5 != (GtkWidget*) range) gtk_range_set_value (GTK_RANGE (scale5), value); if (scale6 != (GtkWidget*) range) gtk_range_set_value (GTK_RANGE (scale6), value); if (gtk_progress_bar_get_text (GTK_PROGRESS_BAR (progressbar1))) { gchar *text = g_strdup_printf ("%i %%", (int) value); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progressbar1), text); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progressbar2), text); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progressbar3), text); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progressbar4), text); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progressbar8), (value > 50) ? text : NULL); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progressbar9), (value > 50) ? text : NULL); g_free (text); } } static void update_widgets () { // function called when user click on [+] toolbar button // when toggle = true, the [+] toolbar button is NOT checked gboolean toggle = gtk_notebook_get_scrollable (GTK_NOTEBOOK (notebook1)); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook1), !toggle); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook2), !toggle); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook3), !toggle); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook4), !toggle); gtk_widget_set_sensitive (scale2, toggle); gtk_widget_set_sensitive (scale4, toggle); gtk_widget_set_sensitive (scale6, toggle); gtk_widget_set_sensitive (progressbar2, toggle); gtk_widget_set_sensitive (progressbar4, toggle); if (toggle) { gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progressbar1), NULL); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progressbar2), NULL); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progressbar3), NULL); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progressbar4), NULL); } else { gchar *text = g_strdup_printf ("%i %%", (int) gtk_range_get_value (GTK_RANGE (scale1))); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progressbar1), text); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progressbar2), text); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progressbar3), text); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progressbar4), text); g_free (text); } gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progressbar8), NULL); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progressbar9), NULL); // via add_progressbar_and_entrybar // show progressbar in toolbar and statusbar when [+] toolbar button is NOT checked if (toggle) { gtk_widget_set_visible (progressbar8, FALSE); gtk_widget_set_visible (progressbar9, FALSE); gtk_widget_set_visible (toolbarentry, FALSE); } else { gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar8), 0.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar9), 0.0); gtk_widget_set_visible (progressbar8, TRUE); gtk_widget_set_visible (progressbar9, TRUE); gtk_widget_set_visible (toolbarentry, TRUE); } gtk_scale_clear_marks (GTK_SCALE (scale5)); update_marks (GTK_SCALE (scale5), !toggle, GTK_POS_LEFT); gtk_scale_clear_marks (GTK_SCALE (scale6)); update_marks (GTK_SCALE (scale6), !toggle, GTK_POS_RIGHT); update_window_size (); } static void update_marks (GtkScale *scale, gboolean value, int position) { // @common if (value) { gtk_scale_add_mark (scale, 0, position, NULL); gtk_scale_add_mark (scale, 25, position, "25"); gtk_scale_add_mark (scale, 50, position, "50"); gtk_scale_add_mark (scale, 75, position, "75"); gtk_scale_add_mark (scale, 100, position, NULL); } else { gtk_scale_add_mark (scale, 0, position, NULL); gtk_scale_add_mark (scale, 25, position, NULL); gtk_scale_add_mark (scale, 50, position, NULL); gtk_scale_add_mark (scale, 75, position, NULL); gtk_scale_add_mark (scale, 100, position, NULL); } } static void display_notification () { // @common if (notify_init (GETTEXT_PACKAGE)) { // Ubuntu 11.04 with libnotify-dev 0.5.x, so you must use libnotify-dev 0.7.x from Ubuntu 11.10 NotifyNotification *notif = notify_notification_new (GETTEXT_PACKAGE, _app("A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme."), "dialog-information"); notify_notification_add_action (notif, "nothing", _gtk("Close"), NOTIFY_ACTION_CALLBACK (on_notification_action), NULL, NULL); notify_notification_add_action (notif, "close", _gtk("Close"), NOTIFY_ACTION_CALLBACK (on_notification_action), NULL, NULL); notify_notification_set_timeout (notif, 50000); notify_notification_show (notif, NULL); g_object_unref (G_OBJECT (notif)); notify_uninit (); } } static void find_and_update_labels (GtkWidget *widget, gboolean special) { // with ChatGPT if (GTK_IS_LABEL (widget)) { gtk_label_set_ellipsize (GTK_LABEL (widget), PANGO_ELLIPSIZE_END); } else if (GTK_IS_CONTAINER (widget)) { GList *children = gtk_container_get_children (GTK_CONTAINER (widget)); GList *iter; for (iter = children; iter != NULL; iter = iter->next) find_and_update_labels (GTK_WIDGET (iter->data), special); g_list_free (children); } } static gboolean on_notification_action (void *data) { // @common return FALSE; } static gboolean on_sighup (void *data) { // @common update_theme ("refresh"); #if defined (G_SOURCE_CONTINUE) return G_SOURCE_CONTINUE; #else return TRUE; // glib < 2.32 #endif } static gboolean take_screenshot (void *data) { // @common 50% GdkPixbuf *image = NULL; int width = 0, height = 0; GdkWindow *root = gtk_widget_get_window (window); gtk_window_get_size (GTK_WINDOW (window), &width, &height); image = gdk_pixbuf_get_from_drawable (NULL, root, gdk_colormap_get_system (), 0, 0, 0, 0, width, height); if (image) { gdk_pixbuf_save (image, opt_screenshot, "png", NULL, "compression", "9", NULL); g_object_unref (image); gchar *text = g_strdup_printf (_app("Theme reloaded, then screenshot saved (%s)."), opt_screenshot); update_statusbar (text); g_free (text); } return FALSE; } // layout and widgets static void create_window (gpointer app) { GtkWidget *vbox_window, *widgets; gchar *text; // window window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_name (GTK_WIDGET (window), "AwfMainWindow"); gtk_window_set_icon_name (GTK_WINDOW (window), GETTEXT_PACKAGE); text = g_strdup_printf (_app("A widget factory - GTK %d.%d"), GTK_MAJOR_VERSION, GTK_MINOR_VERSION); gtk_window_set_title (GTK_WINDOW (window), text); g_free (text); // theme auto or from command line if (strcmp ((gchar*) current_theme, (gchar*) opt_theme) != 0) update_theme (opt_theme); else update_theme (current_theme); allow_update_theme = FALSE; if (current_direction == GTK_TEXT_DIR_NONE) current_direction = gtk_widget_get_default_direction (); // layout vbox_window = BOXV; gtk_container_add (GTK_CONTAINER (window), vbox_window); GtkWidget *menubar = gtk_menu_bar_new (); create_traditional_menubar (menubar); add_to (GTK_BOX (vbox_window), menubar, FALSE, FALSE, 0, 0); toolbar = gtk_toolbar_new (); add_to (GTK_BOX (vbox_window), toolbar, FALSE, FALSE, 0, 0); create_toolbar_items (toolbar); widgets = BOXV; add_to (GTK_BOX (vbox_window), widgets, TRUE, TRUE, 0, 0); create_widgets (widgets); statusbar = gtk_statusbar_new (); add_to (GTK_BOX (vbox_window), statusbar, FALSE, FALSE, 0, 0); text = g_strdup_printf (_app("Theme %s loaded."), current_theme); update_statusbar (text); g_free (text); // go go go allow_update_theme = TRUE; update_text_direction (current_direction); g_signal_connect (window, "destroy", G_CALLBACK (quit), NULL); gtk_widget_show_all (window); add_progressbar_and_entrybar (); gtk_main (); } static void create_widgets (GtkWidget *root) { // @common 50% GtkWidget *hbox_columns = BOXH; GtkWidget *vbox_column1 = BOXV, *vbox_combo_entry = BOXV, *hbox_spin = BOXH, *hbox_check_radio = BOXH, *vbox_check = BOXV, *vbox_radio = BOXV; GtkWidget *vbox_column2 = BOXV, *vbox_buttons = BOXV, *hbox_btns1 = BOXH, *hbox_btns2 = BOXH, *hbox_btns3 = BOXH, *hbox_btns4 = BOXH; GtkWidget *vbox_column3 = BOXV, *vbox_progressbar1 = BOXV, *vbox_progressbar2 = BOXV, *hbox_progressbar1 = BOXH, *hbox_progressbar2 = BOXH; GtkWidget *vbox_column4 = BOXV, *vbox_others = BOXV, *hbox_label = BOXH, *hbox_spinner = BOXH; GtkWidget *vpane = PANEV, *hpane1 = PANEH, *hpane2 = PANEH; GtkWidget *hbox_frame1 = BOXH, *hbox_frame2 = BOXH, *hbox_notebook1 = BOXH, *hbox_notebook2 = BOXH; // columns layout add_to (GTK_BOX (root), hbox_columns, TRUE, TRUE, 0, 0); // column 1 add_to (GTK_BOX (hbox_columns), vbox_column1, TRUE, TRUE, 5, 0); add_to (GTK_BOX (vbox_column1), vbox_combo_entry, FALSE, TRUE, 5, 3); create_combos_entries (vbox_combo_entry); add_to (GTK_BOX (vbox_column1), hbox_spin, FALSE, FALSE, 5, 0); create_spinbuttons (hbox_spin); add_to (GTK_BOX (vbox_column1), hbox_check_radio, FALSE, TRUE, 5, 0); add_to (GTK_BOX (hbox_check_radio), vbox_check, TRUE, TRUE, 0, 0); create_checkbuttons (vbox_check); add_to (GTK_BOX (hbox_check_radio), vbox_radio, TRUE, TRUE, 0, 0); create_radiobuttons (vbox_radio); add_to (GTK_BOX (hbox_columns), SEPV, FALSE, FALSE, 0, 0); // column 2 add_to (GTK_BOX (hbox_columns), vbox_column2, TRUE, TRUE, 5, 0); add_to (GTK_BOX (vbox_column2), vbox_buttons, FALSE, TRUE, 5, 3); add_to (GTK_BOX (vbox_column2), hbox_btns1, FALSE, FALSE, 5, 3); add_to (GTK_BOX (vbox_column2), hbox_btns2, FALSE, FALSE, 5, 3); add_to (GTK_BOX (vbox_column2), hbox_btns3, FALSE, FALSE, 5, 3); add_to (GTK_BOX (vbox_column2), hbox_btns4, FALSE, FALSE, 5, 3); create_otherbuttons (vbox_buttons, hbox_btns1, hbox_btns2, hbox_btns3, hbox_btns4); add_to (GTK_BOX (hbox_columns), SEPV, FALSE, FALSE, 0, 0); // column 3 add_to (GTK_BOX (hbox_columns), vbox_column3, TRUE, TRUE, 5, 0); add_to (GTK_BOX (vbox_column3), vbox_progressbar1, FALSE, TRUE, 6, 10); add_to (GTK_BOX (vbox_column3), hbox_progressbar1, FALSE, FALSE, 5, 10); add_to (GTK_BOX (vbox_column3), hbox_progressbar2, FALSE, FALSE, 5, 10); add_to (GTK_BOX (vbox_column3), vbox_progressbar2, FALSE, TRUE, 5, 10); create_progressbars (vbox_progressbar1, hbox_progressbar1, hbox_progressbar2, vbox_progressbar2); add_to (GTK_BOX (hbox_columns), SEPV, FALSE, FALSE, 0, 0); // column 4 add_to (GTK_BOX (hbox_columns), vbox_column4, TRUE, TRUE, 5, 0); add_to (GTK_BOX (vbox_column4), vbox_others, FALSE, TRUE, 5, 3); create_treview (vbox_others); add_to (GTK_BOX (vbox_others), hbox_label, FALSE, TRUE, 5, 0); create_labels (hbox_label); add_to (GTK_BOX (vbox_others), hbox_spinner, FALSE, TRUE, 5, 0); create_spinners (hbox_spinner); create_expander (vbox_others); add_to (GTK_BOX (root), SEPH, FALSE, FALSE, 0, 0); // paned layout add_to (GTK_BOX (root), vpane, TRUE, TRUE, 0, 0); gtk_paned_pack1 (GTK_PANED (vpane), hpane1, TRUE, FALSE); gtk_box_set_homogeneous (GTK_BOX (hbox_frame1), TRUE); gtk_box_set_spacing (GTK_BOX (hbox_frame1), 3); gtk_widget_set_size_request (hbox_frame1, -1, 70); gtk_container_set_border_width (GTK_CONTAINER (hbox_frame1), 10); gtk_paned_add1 (GTK_PANED (hpane1), hbox_frame1); gtk_box_set_homogeneous (GTK_BOX (hbox_frame2), TRUE); gtk_box_set_spacing (GTK_BOX (hbox_frame2), 3); gtk_widget_set_size_request (hbox_frame2, -1, 70); gtk_container_set_border_width (GTK_CONTAINER (hbox_frame2), 10); gtk_paned_add2 (GTK_PANED (hpane1), hbox_frame2); create_frames (hbox_frame1, hbox_frame2); gtk_paned_pack2 (GTK_PANED (vpane), hpane2, TRUE, FALSE); gtk_box_set_homogeneous (GTK_BOX (hbox_notebook1), TRUE); gtk_box_set_spacing (GTK_BOX (hbox_notebook1), 3); gtk_container_set_border_width (GTK_CONTAINER (hbox_notebook1), 10); gtk_paned_add1 (GTK_PANED (hpane2), hbox_notebook1); gtk_box_set_homogeneous (GTK_BOX (hbox_notebook2), TRUE); gtk_box_set_spacing (GTK_BOX (hbox_notebook2), 3); gtk_container_set_border_width (GTK_CONTAINER (hbox_notebook2), 10); gtk_paned_add2 (GTK_PANED (hpane2), hbox_notebook2); create_notebooks (hbox_notebook1, hbox_notebook2); } static void add_progressbar_and_entrybar () { // entry toolbar toolbarentry = gtk_entry_new (); gtk_widget_set_visible (toolbarentry, FALSE); gtk_container_add (GTK_CONTAINER (gtk_toolbar_get_nth_item (GTK_TOOLBAR (toolbar), 8)), toolbarentry); // after [+] // progressbar toolbar progressbar8 = gtk_progress_bar_new (); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar8), 0); gtk_progress_bar_set_orientation (GTK_PROGRESS_BAR (progressbar8), GTK_PROGRESS_LEFT_TO_RIGHT); gtk_widget_set_visible (progressbar8, FALSE); GtkWidget *alignment = gtk_alignment_new (0, 0.5, 0, 0); gtk_widget_set_size_request (alignment, -1, 20); gtk_container_add (GTK_CONTAINER (alignment), progressbar8); gtk_widget_set_visible (alignment, TRUE); gtk_container_add (GTK_CONTAINER (gtk_toolbar_get_nth_item (GTK_TOOLBAR (toolbar), 12)), alignment); // end // progressbar statusbar progressbar9 = gtk_progress_bar_new (); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar9), 0); gtk_progress_bar_set_orientation (GTK_PROGRESS_BAR (progressbar9), GTK_PROGRESS_LEFT_TO_RIGHT); gtk_widget_set_visible (progressbar9, FALSE); GtkStyle *style = gtk_widget_get_style (progressbar9); PangoFontDescription *desc = pango_font_description_copy (style->font_desc); pango_font_description_set_size (desc, 7.5 * PANGO_SCALE); gtk_widget_modify_font (progressbar9, desc); pango_font_description_free (desc); alignment = gtk_fixed_new (); gtk_widget_set_name (progressbar9, "progressbar9"); gtk_rc_parse_string ("style \"progressbar9\"\n" "{\n" "GtkProgressBar::min-horizontal-bar-height = 15\n" "GtkProgressBar::yspacing = 0\n" "}\n" "widget \"*.progressbar9\" style \"progressbar9\""); gtk_fixed_put (GTK_FIXED (alignment), progressbar9, 0, 2); gtk_widget_set_visible (alignment, TRUE); gtk_box_pack_end (GTK_BOX (gtk_statusbar_get_message_area (GTK_STATUSBAR (statusbar))), alignment, FALSE, FALSE, 0); } static void add_to (GtkBox *box, GtkWidget *widget, gboolean fill, gboolean expand, guint padding, guint spacing) { if (GTK_IS_INFO_BAR (box)) box = GTK_BOX (gtk_info_bar_get_content_area (GTK_INFO_BAR (box))); if (GTK_IS_CONTAINER (widget) && (padding > 0)) gtk_container_set_border_width (GTK_CONTAINER (widget), padding); if (GTK_IS_BOX (widget) && (spacing > 0)) gtk_box_set_spacing (GTK_BOX (widget), spacing); gtk_box_pack_start (box, widget, fill, expand, 0); } static void create_toolbar_items (GtkWidget *root) { // @common gtk2/3 GtkWidget *tool1, *menu, *tool2, *tool4, *tool5, *tool6, *tool8, *tool9, *tool10, *tool11, *tool12, *tool13; // @todo option command line? gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_ICONS); tool1 = GTK_WIDGET (gtk_menu_tool_button_new (NULL, NULL)); gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (tool1), "gtk-open"); g_signal_connect (tool1, "clicked", G_CALLBACK (dialog_open), NULL); menu = gtk_menu_new (); create_menuitem (menu, "Menu item", FALSE, NULL, NULL, NULL); gtk_widget_show_all (menu); // very important gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON (tool1), menu); tool2 = GTK_WIDGET (gtk_menu_tool_button_new (NULL, NULL)); gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (tool2), "gtk-open"); gtk_widget_set_sensitive (tool2, FALSE); tool4 = GTK_WIDGET (gtk_tool_button_new (NULL, NULL)); gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (tool4), "gtk-save"); g_signal_connect (tool4, "clicked", G_CALLBACK (dialog_save), NULL); tool5 = GTK_WIDGET (gtk_tool_button_new (NULL, NULL)); gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (tool5), "gtk-refresh"); g_signal_connect_swapped (tool5, "clicked", G_CALLBACK (update_theme), "refresh"); tool6 = GTK_WIDGET (gtk_tool_button_new (NULL, NULL)); gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (tool6), "gtk-dialog-info"); g_signal_connect_swapped (tool6, "clicked", G_CALLBACK (display_notification), "refresh"); tool8 = GTK_WIDGET (gtk_toggle_tool_button_new ()); gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (tool8), "gtk-add"); gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (tool8), TRUE); g_signal_connect (tool8, "clicked", G_CALLBACK (update_widgets), NULL); tool9 = GTK_WIDGET (gtk_tool_item_new ()); tool10 = GTK_WIDGET (gtk_toggle_tool_button_new ()); gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (tool10), "gtk-remove"); gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (tool10), FALSE); g_signal_connect (tool10, "clicked", G_CALLBACK (update_widgets), NULL); tool11 = GTK_WIDGET (gtk_toggle_tool_button_new ()); gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (tool11), "gtk-close"); gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (tool11), FALSE); gtk_widget_set_sensitive (tool11, FALSE); tool12 = GTK_WIDGET (gtk_tool_item_new ()); gtk_tool_item_set_expand (GTK_TOOL_ITEM (tool12), TRUE); tool13 = GTK_WIDGET (gtk_tool_item_new ()); gtk_tool_item_set_expand (GTK_TOOL_ITEM (tool13), FALSE); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool1), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool2), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), gtk_separator_tool_item_new (), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool4), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool5), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool6), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), gtk_separator_tool_item_new (), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool8), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool9), -1); // = 8 gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool10), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool11), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool12), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool13), -1); // = 12 } static void create_combos_entries (GtkWidget *root) { GtkWidget *combo1, *combo2, *combo3, *combo4, *entry1, *entry2, *entry3, *entry4; combo1 = gtk_combo_box_text_new_with_entry (); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo1), "Combo box entry 1"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo1), "Combo box entry 2"); gtk_combo_box_set_active (GTK_COMBO_BOX (combo1), 0); combo2 = gtk_combo_box_text_new_with_entry (); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo2), "Combo box entry 1"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo2), "Combo box entry 2"); gtk_combo_box_set_active (GTK_COMBO_BOX (combo2), 0); gtk_widget_set_sensitive (combo2, FALSE); combo3 = gtk_combo_box_text_new (); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo3), "Combo box 1"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo3), "Combo box 2"); gtk_combo_box_set_active (GTK_COMBO_BOX (combo3), 0); combo4 = gtk_combo_box_text_new (); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo4), "Combo box 1"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo4), "Combo box 2"); gtk_combo_box_set_active (GTK_COMBO_BOX (combo4), 0); gtk_widget_set_sensitive (combo4, FALSE); entry1 = gtk_entry_new (); gtk_entry_set_text (GTK_ENTRY (entry1), "Entry"); entry2 = gtk_entry_new (); gtk_entry_set_text (GTK_ENTRY (entry2), "Entry"); gtk_widget_set_sensitive (entry2, FALSE); entry3 = gtk_entry_new (); gtk_entry_set_text (GTK_ENTRY (entry3), "Entry"); gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry3), GTK_ENTRY_ICON_PRIMARY, "gtk-clear"); gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry3), GTK_ENTRY_ICON_SECONDARY, "gtk-find"); entry4 = gtk_entry_new (); gtk_entry_set_text (GTK_ENTRY (entry4), "Entry"); gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry4), GTK_ENTRY_ICON_PRIMARY, "gtk-clear"); gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry4), GTK_ENTRY_ICON_SECONDARY, "gtk-find"); gtk_widget_set_sensitive (entry4, FALSE); // layout add_to (GTK_BOX (root), combo1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), combo2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), combo3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), combo4, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), entry1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), entry2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), entry3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), entry4, FALSE, FALSE, 0, 0); } static void create_spinbuttons (GtkWidget *root) { // @common GtkWidget *spinbutton1, *spinbutton2; spinbutton1 = gtk_spin_button_new_with_range (-100, 100, 1); gtk_spin_button_set_value (GTK_SPIN_BUTTON (spinbutton1), 1); spinbutton2 = gtk_spin_button_new_with_range (-100, 100, 1); gtk_spin_button_set_value (GTK_SPIN_BUTTON (spinbutton2), 1); gtk_widget_set_sensitive (spinbutton2, FALSE); add_to (GTK_BOX (root), spinbutton1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), BOXH, TRUE, TRUE, 0, 0); // empty space add_to (GTK_BOX (root), spinbutton2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), BOXH, TRUE, TRUE, 0, 0); // empty space } static void create_checkbuttons (GtkWidget *root) { // @common gtk2/3 GtkWidget *checkbutton1, *checkbutton2, *checkbutton3, *checkbutton4, *checkbutton5, *checkbutton6; checkbutton1 = gtk_check_button_new_with_label ("Check btn 1"); checkbutton2 = gtk_check_button_new_with_label ("Check btn 2"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton2), TRUE); checkbutton3 = gtk_check_button_new_with_label ("Check btn 3"); gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (checkbutton3), TRUE); checkbutton4 = gtk_check_button_new_with_label ("Check btn 4"); gtk_widget_set_sensitive (checkbutton4, FALSE); checkbutton5 = gtk_check_button_new_with_label ("Check btn 5"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton5), TRUE); gtk_widget_set_sensitive (checkbutton5, FALSE); checkbutton6 = gtk_check_button_new_with_label ("Check btn 6"); gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (checkbutton6), TRUE); gtk_widget_set_sensitive (checkbutton6, FALSE); add_to (GTK_BOX (root), checkbutton1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), checkbutton2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), checkbutton3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), checkbutton4, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), checkbutton5, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), checkbutton6, FALSE, FALSE, 0, 0); } static void create_radiobuttons (GtkWidget *root) { // @common gtk2/3 GtkWidget *radiobutton1, *radiobutton2, *radiobutton3, *radiobutton4, *radiobutton5, *radiobutton6; radiobutton1 = gtk_radio_button_new_with_label (NULL, "Radio btn 1"); radiobutton2 = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton1)), "Radio btn 2"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radiobutton2), TRUE); radiobutton3 = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton1)), "Radio btn 3"); gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (radiobutton3), TRUE); radiobutton4 = gtk_radio_button_new_with_label (NULL, "Radio btn 4"); gtk_widget_set_sensitive (radiobutton4, FALSE); radiobutton5 = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton4)), "Radio btn 5"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radiobutton5), TRUE); gtk_widget_set_sensitive (radiobutton5, FALSE); radiobutton6 = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton4)), "Radio btn 6"); gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (radiobutton6), TRUE); gtk_widget_set_sensitive (radiobutton6, FALSE); add_to (GTK_BOX (root), radiobutton1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), radiobutton2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), radiobutton3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), radiobutton4, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), radiobutton5, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), radiobutton6, FALSE, FALSE, 0, 0); } static void create_otherbuttons (GtkWidget *root1, GtkWidget *root2, GtkWidget *root3, GtkWidget *root4, GtkWidget *root5) { GtkWidget *button1, *button2, *button3, *button4, *button5, *button6, *button7, *button8, *button9; GtkWidget *button10, *button11, *button12, *button13, *button14; button1 = gtk_button_new_with_label ("Button 1"); button2 = gtk_button_new_with_label ("Button 2"); gtk_widget_set_sensitive (button2, FALSE); button3 = gtk_toggle_button_new_with_label ("Button 3"); button4 = gtk_toggle_button_new_with_label ("Button 4"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button3), TRUE); gtk_widget_set_sensitive (button4, FALSE); // colorbutton GdkColor color; gdk_color_parse ("#7796ba", &color); button5 = gtk_color_button_new_with_color (&color); // fontbutton button6 = gtk_font_button_new (); find_and_update_labels (button6, FALSE); gtk_widget_set_size_request (button6, 186, -1); // filebutton button7 = gtk_file_chooser_button_new ("GtkFileChooserDialog", GTK_FILE_CHOOSER_ACTION_OPEN); find_and_update_labels (button7, FALSE); gtk_widget_set_size_request (button7, 180, -1); button8 = gtk_file_chooser_button_new ("GtkFileChooserDialog", GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); find_and_update_labels (button8, TRUE); gtk_widget_set_size_request (button8, 180, -1); // combomenu GtkWidget *combomenu1, *combomenu2, *combomenu3, *combomenu4; combomenu1 = gtk_menu_new (); gtk_menu_shell_append (GTK_MENU_SHELL (combomenu1), gtk_menu_item_new_with_label ("Option 1")); gtk_menu_shell_append (GTK_MENU_SHELL (combomenu1), gtk_menu_item_new_with_label ("Option 2")); gtk_menu_shell_append (GTK_MENU_SHELL (combomenu1), gtk_menu_item_new_with_label ("Option 3")); combomenu2 = gtk_menu_new (); gtk_menu_shell_append (GTK_MENU_SHELL (combomenu2), gtk_menu_item_new_with_label ("Option 1")); gtk_menu_shell_append (GTK_MENU_SHELL (combomenu2), gtk_menu_item_new_with_label ("Option 2")); gtk_menu_shell_append (GTK_MENU_SHELL (combomenu2), gtk_menu_item_new_with_label ("Option 3")); combomenu3 = gtk_menu_new (); gtk_menu_shell_append (GTK_MENU_SHELL (combomenu3), gtk_menu_item_new_with_label ("Option 1")); gtk_menu_shell_append (GTK_MENU_SHELL (combomenu3), gtk_menu_item_new_with_label ("Option 2")); gtk_menu_shell_append (GTK_MENU_SHELL (combomenu3), gtk_menu_item_new_with_label ("Option 3")); combomenu4 = gtk_menu_new (); gtk_menu_shell_append (GTK_MENU_SHELL (combomenu4), gtk_menu_item_new_with_label ("Option 1")); gtk_menu_shell_append (GTK_MENU_SHELL (combomenu4), gtk_menu_item_new_with_label ("Option 2")); gtk_menu_shell_append (GTK_MENU_SHELL (combomenu4), gtk_menu_item_new_with_label ("Option 3")); button9 = gtk_option_menu_new (); gtk_option_menu_set_menu (GTK_OPTION_MENU (button9), combomenu1); button10 = gtk_option_menu_new (); gtk_option_menu_set_menu (GTK_OPTION_MENU (button10), combomenu2); gtk_widget_set_sensitive (button10, FALSE); button11 = gtk_option_menu_new (); gtk_option_menu_set_menu (GTK_OPTION_MENU (button11), combomenu3); button12 = gtk_option_menu_new (); gtk_option_menu_set_menu (GTK_OPTION_MENU (button12), combomenu4); gtk_widget_set_sensitive (button12, FALSE); button13 = gtk_link_button_new_with_label ("https://github.com/luigifab/awf-extended", "Link button"); button14 = gtk_link_button_new_with_label ("https://github.com/luigifab/awf-extended", "Link button"); gtk_widget_set_sensitive (button14, FALSE); volume1 = gtk_volume_button_new (); gtk_scale_button_set_value (GTK_SCALE_BUTTON (volume1), 0.5); g_object_set ((GObject*) volume1, "size", GTK_ICON_SIZE_BUTTON, NULL); // @todo not working with Ubuntu volume2 = gtk_volume_button_new (); gtk_scale_button_set_value (GTK_SCALE_BUTTON (volume2), 0); gtk_widget_set_sensitive (volume2, FALSE); g_object_set ((GObject*) volume2, "size", GTK_ICON_SIZE_BUTTON, NULL); // @todo not working with Ubuntu // layout add_to (GTK_BOX (root1), button1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button4, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button5, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button6, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button7, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button8, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root2), button9, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root2), button10, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root3), button11, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root3), button12, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root4), button13, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root4), button14, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root5), volume1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root5), volume2, FALSE, FALSE, 0, 0); } static void create_progressbars (GtkWidget *root1, GtkWidget *root2, GtkWidget *root3, GtkWidget *root4) { // progress bars progressbar1 = gtk_progress_bar_new (); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar1), 0.5); gtk_progress_bar_set_orientation (GTK_PROGRESS_BAR (progressbar1), GTK_PROGRESS_LEFT_TO_RIGHT); progressbar2 = gtk_progress_bar_new (); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar2), 0.5); gtk_progress_bar_set_orientation (GTK_PROGRESS_BAR (progressbar2), GTK_PROGRESS_RIGHT_TO_LEFT); progressbar3 = gtk_progress_bar_new (); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar3), 0.5); gtk_progress_bar_set_orientation (GTK_PROGRESS_BAR (progressbar3), GTK_PROGRESS_TOP_TO_BOTTOM); gtk_widget_set_size_request (progressbar3, -1, 100); progressbar4 = gtk_progress_bar_new (); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar4), 0.5); gtk_progress_bar_set_orientation (GTK_PROGRESS_BAR (progressbar4), GTK_PROGRESS_BOTTOM_TO_TOP); // scales scale1 = create_horizontal_scale (50, FALSE, FALSE, GTK_POS_TOP); g_signal_connect (scale1, "value_changed", G_CALLBACK (update_values), NULL); scale2 = create_horizontal_scale (50, FALSE, TRUE, GTK_POS_TOP); g_signal_connect (scale2, "value_changed", G_CALLBACK (update_values), NULL); scale3 = create_vertical_scale (50, FALSE, FALSE, GTK_POS_TOP); g_signal_connect (scale3, "value_changed", G_CALLBACK (update_values), NULL); scale4 = create_vertical_scale (50, FALSE, TRUE, GTK_POS_TOP); g_signal_connect (scale4, "value_changed", G_CALLBACK (update_values), NULL); scale5 = create_vertical_scale (50, FALSE, FALSE, GTK_POS_TOP); update_marks (GTK_SCALE (scale5), FALSE, GTK_POS_LEFT); g_signal_connect (scale5, "value_changed", G_CALLBACK (update_values), NULL); scale6 = create_vertical_scale (50, FALSE, TRUE, GTK_POS_TOP); update_marks (GTK_SCALE (scale6), FALSE, GTK_POS_RIGHT); g_signal_connect (scale6, "value_changed", G_CALLBACK (update_values), NULL); // layout add_to (GTK_BOX (root1), progressbar1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), progressbar2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), scale1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), scale2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root2), progressbar3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root2), progressbar4, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root3), scale3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root3), scale5, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root3), scale6, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root3), scale4, FALSE, FALSE, 0, 0); } static void create_labels (GtkWidget *root) { // @common GtkWidget *label1, *label2; label1 = gtk_label_new ("Label 1"); label2 = gtk_label_new ("Label 2"); gtk_widget_set_sensitive (label2, FALSE); add_to (GTK_BOX (root), label1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), BOXH, TRUE, TRUE, 0, 0); // empty space add_to (GTK_BOX (root), label2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), BOXH, TRUE, TRUE, 0, 0); // empty space } static void create_spinners (GtkWidget *root) { // @common GtkWidget *spinner1, *spinner2; spinner1 = gtk_spinner_new (); gtk_widget_set_size_request (spinner1, 20, 20); if (opt_startspinner) gtk_spinner_start (GTK_SPINNER (spinner1)); spinner2 = gtk_spinner_new (); gtk_widget_set_size_request (spinner2, 20, 20); gtk_widget_set_sensitive (spinner2, FALSE); if (opt_startspinner) gtk_spinner_start (GTK_SPINNER (spinner2)); add_to (GTK_BOX (root), spinner1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), BOXH, TRUE, TRUE, 0, 0); // empty space add_to (GTK_BOX (root), spinner2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), BOXH, TRUE, TRUE, 0, 0); // empty space } static void create_expander (GtkWidget *root) { GtkWidget *expander, *scrolled_window, *tv; GtkTextBuffer *buffer; expander = gtk_expander_new (_app("More...")); gtk_expander_set_expanded (GTK_EXPANDER (expander), TRUE); scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); gtk_widget_set_size_request (scrolled_window, -1, 120); tv = gtk_text_view_new (); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tv)); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (tv), GTK_WRAP_WORD); gtk_text_buffer_set_text (GTK_TEXT_BUFFER (buffer), g_strdup_printf ("%s ~ %s", _app("A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme."), _app("A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme.")), -1); gtk_container_add (GTK_CONTAINER (scrolled_window), tv); gtk_container_add (GTK_CONTAINER (expander), scrolled_window); add_to (GTK_BOX (root), expander, FALSE, FALSE, 0, 0); } static void create_frames (GtkWidget *root1, GtkWidget *root2) { GtkWidget *frame1, *frame2, *frame3, *frame4; frame1 = gtk_frame_new ("Frame (shadow in)"); gtk_frame_set_shadow_type (GTK_FRAME (frame1), GTK_SHADOW_IN); frame2 = gtk_frame_new ("Frame (shadow out)"); gtk_frame_set_shadow_type (GTK_FRAME (frame2), GTK_SHADOW_OUT); frame3 = gtk_frame_new ("Frame (shadow etched in)"); gtk_frame_set_shadow_type (GTK_FRAME (frame3), GTK_SHADOW_ETCHED_IN); frame4 = gtk_frame_new ("Frame (shadow etched out)"); gtk_frame_set_shadow_type (GTK_FRAME (frame4), GTK_SHADOW_ETCHED_OUT); add_to (GTK_BOX (root1), frame1, TRUE, TRUE, 0, 0); add_to (GTK_BOX (root1), frame2, TRUE, TRUE, 0, 0); add_to (GTK_BOX (root2), frame3, TRUE, TRUE, 0, 0); add_to (GTK_BOX (root2), frame4, TRUE, TRUE, 0, 0); } static void create_notebooks (GtkWidget *root1, GtkWidget *root2) { // @common* notebook1 = gtk_notebook_new (); notebook2 = gtk_notebook_new (); notebook3 = gtk_notebook_new (); notebook4 = gtk_notebook_new (); gtk_notebook_popup_enable (GTK_NOTEBOOK (notebook1)); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook1), FALSE); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook1), GTK_POS_TOP); create_notebook_tab (notebook1, "Tab1", FALSE); create_notebook_tab (notebook1, "Tab2", FALSE); create_notebook_tab (notebook1, "Tab3", TRUE); create_notebook_tab (notebook1, "Tab4", TRUE); gtk_notebook_popup_enable (GTK_NOTEBOOK (notebook2)); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook2), FALSE); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook2), GTK_POS_BOTTOM); create_notebook_tab (notebook2, "Tab1", FALSE); create_notebook_tab (notebook2, "Tab2", FALSE); create_notebook_tab (notebook2, "Tab3", TRUE); create_notebook_tab (notebook2, "Tab4", TRUE); gtk_notebook_popup_enable (GTK_NOTEBOOK (notebook3)); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook3), FALSE); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook3), GTK_POS_LEFT); create_notebook_tab (notebook3, "T1", FALSE); create_notebook_tab (notebook3, "Tab2", FALSE); create_notebook_tab (notebook3, "T3b", TRUE); create_notebook_tab (notebook3, "T4", TRUE); gtk_notebook_popup_enable (GTK_NOTEBOOK (notebook4)); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook4), FALSE); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook4), GTK_POS_RIGHT); create_notebook_tab (notebook4, "T1", FALSE); create_notebook_tab (notebook4, "Tab2", FALSE); create_notebook_tab (notebook4, "T3b", TRUE); create_notebook_tab (notebook4, "T4", TRUE); add_to (GTK_BOX (root1), notebook1, TRUE, TRUE, 0, 0); add_to (GTK_BOX (root1), notebook2, TRUE, TRUE, 0, 0); add_to (GTK_BOX (root2), notebook3, TRUE, TRUE, 0, 0); add_to (GTK_BOX (root2), notebook4, TRUE, TRUE, 0, 0); } static void create_notebook_tab (GtkWidget *notebook, gchar *text, gboolean close) { GtkWidget *headbtn = BOXH, *content = BOXV, *btn; add_to (GTK_BOX (headbtn), gtk_label_new (text), TRUE, TRUE, 0, 0); if (close) { btn = gtk_button_new (); gtk_button_set_image (GTK_BUTTON (btn), gtk_image_new_from_icon_name ("gtk-close", GTK_ICON_SIZE_MENU)); gtk_button_set_relief (GTK_BUTTON (btn), GTK_RELIEF_NONE); gtk_widget_set_name (btn, "close-button"); gtk_rc_parse_string ("style \"close-button\"\n" "{\n" "GtkWidget::focus-padding = 0\n" "GtkWidget::focus-line-width = 0\n" "xthickness = 0\n" "ythickness = 0\n" "}\n" "widget \"*.close-button\" style \"close-button\""); gtk_button_set_focus_on_click (GTK_BUTTON (btn), FALSE); add_to (GTK_BOX (headbtn), btn, FALSE, FALSE, 0, 0); } gtk_widget_show_all (headbtn); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), content, headbtn); gtk_notebook_set_tab_reorderable (GTK_NOTEBOOK (notebook), content, TRUE); } static void create_treview (GtkWidget *root) { // @common 80% GtkWidget *scrolled_window, *view; GtkCellRenderer *renderer; GtkTreeStore *store; GtkTreeIter iter; int idx = 0; // data store = gtk_tree_store_new (11, G_TYPE_INT, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 1, 1, FALSE, 2, FALSE, 3, "Text 1.1", 4, 0.0, 5, 0.0, 6, "Text 1.2", 7, "gtk-open", 8, "gtk-open", 9, FALSE, 10, FALSE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 2, 1, TRUE, 2, TRUE, 3, "Text 2.1", 4, 10.0, 5, 10.0, 6, "Text 2.2", 7, "gtk-save", 8, "gtk-save", 9, TRUE, 10, TRUE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 3, 1, FALSE, 2, FALSE, 3, "Text 3.1", 4, 20.0, 5, 20.0, 6, "Text 3.2", 7, "gtk-save-as", 8, "gtk-save-as", 9, FALSE, 10, FALSE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 4, 1, TRUE, 2, TRUE, 3, "Text 4.1", 4, 30.0, 5, 30.0, 6, "Text 4.2", 7, "gtk-refresh", 8, "gtk-refresh", 9, TRUE, 10, TRUE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 5, 1, FALSE, 2, FALSE, 3, "Text 5.1", 4, 40.0, 5, 40.0, 6, "Text 5.2", 7, "gtk-cut", 8, "gtk-cut", 9, FALSE, 10, FALSE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 6, 1, TRUE, 2, TRUE, 3, "Text 6.1", 4, 50.0, 5, 50.0, 6, "Text 6.2", 7, "gtk-help", 8, "gtk-help", 9, TRUE, 10, TRUE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 7, 1, FALSE, 2, FALSE, 3, "Text 7.1", 4, 60.0, 5, 60.0, 6, "Text 7.2", 7, "gtk-open", 8, "gtk-open", 9, FALSE, 10, FALSE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 8, 1, TRUE, 2, TRUE, 3, "Text 8.1", 4, 70.0, 5, 70.0, 6, "Text 8.2", 7, "gtk-save", 8, "gtk-save", 9, TRUE, 10, TRUE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 9, 1, FALSE, 2, FALSE, 3, "Text 9.1", 4, 80.0, 5, 80.0, 6, "Text 9.2", 7, "gtk-save-as", 8, "gtk-save-as", 9, FALSE, 10, FALSE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 10, 1, TRUE, 2, TRUE, 3, "Text 10.1", 4, 90.0, 5, 90.0, 6, "Text 10.2", 7, "gtk-refresh", 8, "gtk-refresh", 9, TRUE, 10, TRUE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 11, 1, FALSE, 2, FALSE, 3, "Text 11.1", 4, 100.0, 5, 100.0, 6, "Text 11.2", 7, "gtk-cut", 8, "gtk-cut", 9, FALSE, 10, FALSE, -1); // columns view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store)); gtk_tree_view_set_reorderable (GTK_TREE_VIEW (view), FALSE); // rows gtk_tree_view_set_show_expanders (GTK_TREE_VIEW (view), FALSE); gtk_tree_view_set_headers_clickable (GTK_TREE_VIEW (view), TRUE); gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store), 0, GTK_SORT_ASCENDING); g_object_unref (G_OBJECT (store)); idx = 0; renderer = gtk_cell_renderer_text_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "i", renderer, "text", idx, NULL); gtk_tree_view_column_set_sort_column_id (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), idx); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 1; renderer = gtk_cell_renderer_toggle_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "c", renderer, "active", idx, NULL); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_min_width (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), 20); idx = 2; renderer = gtk_cell_renderer_toggle_new (); gtk_cell_renderer_toggle_set_radio (GTK_CELL_RENDERER_TOGGLE (renderer), TRUE); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "r", renderer, "active", idx, NULL); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_min_width (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), 20); idx = 3; renderer = gtk_cell_renderer_text_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "Text", renderer, "text", idx, NULL); gtk_tree_view_column_set_sort_column_id (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), idx); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 4; renderer = gtk_cell_renderer_progress_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "Progress", renderer, "value", idx, NULL); gtk_tree_view_column_set_sort_column_id (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), idx); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 5; renderer = gtk_cell_renderer_progress_new (); gtk_cell_renderer_set_sensitive (renderer, FALSE); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "Progress", renderer, "value", idx, NULL); gtk_tree_view_column_set_sort_column_id (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), idx); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 6; renderer = gtk_cell_renderer_text_new (); gtk_cell_renderer_set_sensitive (renderer, FALSE); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "Text", renderer, "text", idx, NULL); gtk_tree_view_column_set_sort_column_id (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), idx); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 7; renderer = gtk_cell_renderer_pixbuf_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "Icon", renderer, "icon-name", idx, NULL); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 8; renderer = gtk_cell_renderer_pixbuf_new (); gtk_cell_renderer_set_sensitive (renderer, FALSE); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "Icon", renderer, "icon-name", idx, NULL); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 9; renderer = gtk_cell_renderer_toggle_new (); gtk_cell_renderer_set_sensitive (renderer, FALSE); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "c", renderer, "active", idx, NULL); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_min_width (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), 20); idx = 10; renderer = gtk_cell_renderer_toggle_new (); gtk_cell_renderer_set_sensitive (renderer, FALSE); gtk_cell_renderer_toggle_set_radio (GTK_CELL_RENDERER_TOGGLE (renderer), TRUE); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "r", renderer, "active", idx, NULL); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_min_width (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), 20); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); // scrolled window scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_ALWAYS, GTK_POLICY_ALWAYS); gtk_widget_set_size_request (scrolled_window, 200, 200); gtk_widget_set_size_request (view, 200, 200); gtk_container_add (GTK_CONTAINER (scrolled_window), view); add_to (GTK_BOX (root), scrolled_window, FALSE, FALSE, 0, 0); } static GtkWidget* create_horizontal_scale (gdouble value, gboolean draw, gboolean inverted, int position) { // @common +shortcut GtkWidget *scale; scale = gtk_hscale_new_with_range (0, 100, 1); gtk_range_set_value (GTK_RANGE (scale), value); gtk_scale_set_draw_value (GTK_SCALE (scale), draw); gtk_scale_set_value_pos (GTK_SCALE (scale), position); gtk_range_set_inverted (GTK_RANGE (scale), inverted); gtk_widget_set_size_request (scale, 186, -1); return scale; } static GtkWidget* create_vertical_scale (gdouble value, gboolean draw, gboolean inverted, int position) { // @common +shortcut GtkWidget *scale; scale = gtk_vscale_new_with_range (0, 100, 1); gtk_scale_set_value_pos (GTK_SCALE (scale), position); gtk_range_set_inverted (GTK_RANGE (scale), inverted); gtk_scale_set_draw_value (GTK_SCALE (scale), draw); gtk_range_set_value (GTK_RANGE (scale), value); gtk_widget_set_size_request (scale, -1, 100); return scale; } // traditional menu - @common gtk2/3 (except one line) static void create_traditional_menubar (GtkWidget *root) { GtkWidget *menu, *submenu, *menuitem; GtkAccelGroup *accels = gtk_accel_group_new (); GSList *iterator, *group = NULL; gtk_window_add_accel_group (GTK_WINDOW (window), accels); // options menu = create_menu (root, _app("_Options")); gtk_menu_set_accel_group (GTK_MENU (menu), accels); // very important create_menuitem_tearoff (menu); create_menuitem (menu, "gtk-open", FALSE, AWF_ACCEL_OPEN, AWF_OPEN, dialog_open); create_menuitem (menu, _app("Open recent file"), FALSE, AWF_ACCEL_RECE, AWF_RECE, dialog_recent); create_menuitem (menu, _app("Calendar"), FALSE, AWF_ACCEL_CALE, AWF_CALE, dialog_calendar); create_menuitem (menu, _app("GtkScales top"), FALSE, AWF_ACCEL_SCAT, AWF_SCAT, dialog_scales_top); create_menuitem (menu, _app("GtkScales bottom"), FALSE, AWF_ACCEL_SCAB, AWF_SCAB, dialog_scales_bottom); create_menuitem (menu, _app("GtkScales right"), FALSE, AWF_ACCEL_SCAR, AWF_SCAR, dialog_scales_right); create_menuitem (menu, _app("GtkScales left"), FALSE, AWF_ACCEL_SCAL, AWF_SCAL, dialog_scales_left); create_menuitem (menu, "gtk-save", FALSE, AWF_ACCEL_SAVE, AWF_SAVE, dialog_save); create_menuitem (menu, "gtk-refresh", FALSE, AWF_ACCEL_REFR, AWF_REFR, G_CALLBACK (on_sighup)); // G_CALLBACK (update_theme) create_menuitem (menu, "gtk-properties", FALSE, AWF_ACCEL_PROP, AWF_PROP, dialog_message); create_menuitem (menu, "gtk-page-setup", FALSE, AWF_ACCEL_PRSE, AWF_PRSE, dialog_page_setup); create_menuitem (menu, "gtk-print", FALSE, AWF_ACCEL_PRIN, AWF_PRIN, dialog_print); create_menuitem (menu, "gtk-about", FALSE, AWF_ACCEL_ABOU, AWF_ABOU, dialog_about); submenu = create_menu (menu, _app("More...")); gtk_menu_set_accel_group (GTK_MENU (submenu), accels); // very important create_menuitem (submenu, "gtk-cut", FALSE, AWF_ACCEL_MCUT, AWF_MCUT, NULL); create_menuitem (submenu, "gtk-copy", FALSE, AWF_ACCEL_MCOP, AWF_MCOP, NULL); create_menuitem (submenu, "gtk-paste", FALSE, AWF_ACCEL_MPAS, AWF_MPAS, NULL); menuitem = gtk_separator_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); create_menuitem_check (menu, g_strdup_printf ("Check 1 %s", _app("(unchecked)")), FALSE, FALSE, FALSE); create_menuitem_check (menu, g_strdup_printf ("Check 2 %s", _app("(checked)")), TRUE, FALSE, FALSE); create_menuitem_check (menu, g_strdup_printf ("Check 3 %s", _app("(inconsistent)")), FALSE, TRUE, FALSE); create_menuitem_check (menu, g_strdup_printf ("Check 1 %s", _app("(unchecked)")), FALSE, FALSE, TRUE); create_menuitem_check (menu, g_strdup_printf ("Check 2 %s", _app("(checked)")), TRUE, FALSE, TRUE); create_menuitem_check (menu, g_strdup_printf ("Check 3 %s", _app("(inconsistent)")), FALSE, TRUE, TRUE); menuitem = gtk_separator_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = create_menuitem_radio (menu, g_strdup_printf ("Radio 1 %s", _app("(unchecked)")), FALSE, FALSE, FALSE, NULL); group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menuitem)); create_menuitem_radio (menu, g_strdup_printf ("Radio 2 %s", _app("(checked)")), TRUE, FALSE, FALSE, group); create_menuitem_radio (menu, g_strdup_printf ("Radio 3 %s", _app("(inconsistent)")), FALSE, TRUE, FALSE, NULL); menuitem = create_menuitem_radio (menu, g_strdup_printf ("Radio 1 %s", _app("(unchecked)")), FALSE, FALSE, TRUE, NULL); group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menuitem)); create_menuitem_radio (menu, g_strdup_printf ("Radio 2 %s", _app("(checked)")), TRUE, FALSE, TRUE, group); create_menuitem_radio (menu, g_strdup_printf ("Radio 3 %s", _app("(inconsistent)")), FALSE, TRUE, TRUE, NULL); menuitem = gtk_separator_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); create_menuitem (menu, "gtk-close", TRUE, AWF_ACCEL_CLOS, AWF_CLOS, NULL); create_menuitem (menu, "gtk-quit", FALSE, AWF_ACCEL_QUIT, AWF_QUIT, quit); // system themes group = NULL; menu = create_menu (root, _app("_System themes")); for (iterator = list_system_theme; iterator; iterator = iterator->next) { if (g_slist_find_custom (list_user_theme, iterator->data, &awf_compare_theme)) { menuitem = create_menuitem_radio (menu, iterator->data, FALSE, FALSE, TRUE, group); group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menuitem)); if (strcmp ((gchar*) current_theme, (gchar*) iterator->data) == 0) gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem), TRUE); g_signal_connect_swapped (menuitem, "activate", G_CALLBACK (update_theme), iterator->data); } else { menuitem = create_menuitem_radio (menu, iterator->data, FALSE, FALSE, FALSE, group); group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menuitem)); if (strcmp ((gchar*) current_theme, (gchar*) iterator->data) == 0) gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem), TRUE); g_signal_connect_swapped (menuitem, "activate", G_CALLBACK (update_theme), iterator->data); } } if (!list_system_theme) create_menuitem (menu, _app("No themes found"), TRUE, NULL, NULL, NULL); // user themes menu = create_menu (root, _app("_User themes")); for (iterator = list_user_theme; iterator; iterator = iterator->next) { menuitem = create_menuitem_radio (menu, iterator->data, FALSE, FALSE, FALSE, group); group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menuitem)); if (strcmp ((gchar*) current_theme, (gchar*) iterator->data) == 0) gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem), TRUE); g_signal_connect_swapped (menuitem, "activate", G_CALLBACK (update_theme), iterator->data); } if (!list_user_theme) create_menuitem (menu, _app("No themes found"), TRUE, NULL, NULL, NULL); // text direction group = NULL; menu = create_menu (root, _app("_Text direction")); menuitem = create_menuitem_radio (menu, _app("Left to Right (LTR)"), FALSE, FALSE, FALSE, group); if ((current_direction == GTK_TEXT_DIR_LTR) || (current_direction == 1)) gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem), TRUE); g_signal_connect_swapped (menuitem, "activate", G_CALLBACK (update_text_direction), (gpointer) GTK_TEXT_DIR_LTR); group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menuitem)); menuitem = create_menuitem_radio (menu, _app("Right to Left (RTL)"), FALSE, FALSE, FALSE, group); if ((current_direction == GTK_TEXT_DIR_RTL) || (current_direction == 2)) gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem), TRUE); g_signal_connect_swapped (menuitem, "activate", G_CALLBACK (update_text_direction), (gpointer) GTK_TEXT_DIR_RTL); // gtk-can-change-accels for GTK 3.2..3.24 | so same GTK 2.24 - 3.x accels_load (); g_object_set (gtk_settings_get_default (), "gtk-can-change-accels", FALSE, NULL); } static GtkWidget* create_menu (GtkWidget *root, gchar *text) { GtkWidget *menu, *menuitem; menu = gtk_menu_new (); menuitem = gtk_menu_item_new_with_mnemonic (text); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), menu); gtk_menu_shell_append (GTK_MENU_SHELL (root), menuitem); // gtk-can-change-accels for GTK 3.2..3.24 | so same GTK 2.24 - 3.x gtk_widget_set_events (menu, GDK_KEY_RELEASE_MASK); g_signal_connect (menu, "key-release-event", G_CALLBACK (accels_change), NULL); return menu; } static GtkWidget* create_menuitem_tearoff (GtkWidget *menu) { GtkWidget *menuitem; menuitem = gtk_tearoff_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); return menuitem; } static GtkWidget* create_menuitem_check (GtkWidget *menu, gchar *text, gboolean checked, gboolean inconsistent, gboolean disabled) { GtkWidget *menuitem; menuitem = gtk_check_menu_item_new_with_mnemonic (text); gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem), checked); gtk_check_menu_item_set_inconsistent (GTK_CHECK_MENU_ITEM (menuitem), inconsistent); gtk_widget_set_sensitive (menuitem, !disabled); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); return menuitem; } static GtkWidget* create_menuitem_radio (GtkWidget *menu, gchar *text, gboolean checked, gboolean inconsistent, gboolean disabled, GSList *group) { GtkWidget *menuitem; menuitem = gtk_radio_menu_item_new_with_mnemonic (group, text); gtk_check_menu_item_set_inconsistent (GTK_CHECK_MENU_ITEM (menuitem), inconsistent); gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem), checked); gtk_widget_set_sensitive (menuitem, !disabled); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); return menuitem; } static GtkWidget* create_menuitem (GtkWidget *menu, gchar *text, gboolean disabled, gchar *accel, gchar *keymap, GCallback function) { GtkWidget *menuitem; GdkModifierType mods; guint key; menuitem = gtk_image_menu_item_new_from_stock (text, NULL); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_menu_item_set_accel_path (GTK_MENU_ITEM (menuitem), keymap); gtk_widget_set_sensitive (menuitem, !disabled); if (accel) { gtk_accelerator_parse (accel, &key, &mods); gtk_accel_map_add_entry (keymap, key, mods); } if (function) g_signal_connect (menuitem, "activate", function, NULL); // gtk-can-change-accels for GTK 3.2..3.24 | so same GTK 2.24 - 3.x g_signal_connect (menuitem, "select", G_CALLBACK (accels_select), NULL); g_signal_connect (menuitem, "deselect", G_CALLBACK (accels_deselect), NULL); return menuitem; } static void accels_load () { // gtk-can-change-accels for GTK 3.2..3.24 | so same GTK 2.24 - 3.x gchar *path = g_build_filename ("/", g_getenv ("HOME"), ".awf-gtk-accels", NULL); if (g_file_test (path, G_FILE_TEST_IS_REGULAR)) gtk_accel_map_load (path); g_free (path); } static void accels_select (GtkWidget *widget) { // gtk-can-change-accels for GTK 3.2..3.24 | so same GTK 2.24 - 3.x current_menuitem = widget; } static void accels_deselect (GtkWidget *widget) { // gtk-can-change-accels for GTK 3.2..3.24 | so same GTK 2.24 - 3.x if (current_menuitem == widget) current_menuitem = NULL; } static void accels_change (GtkWidget *widget, GdkEventKey *event) { // gtk-can-change-accels for GTK 3.2..3.24 | so same GTK 2.24 - 3.x // @see https://gitlab.gnome.org/GNOME/gtk/-/commit/2d79334bb069224966b3dcd8456967c9800e8fd0 if (!current_menuitem) return; GtkMenuItem *menuitem = GTK_MENU_ITEM (current_menuitem); gchar *key = gdk_keyval_name (event->keyval); if ( !gtk_menu_item_get_accel_path (menuitem) || (strcmp (key, "Control_L") == 0) || (strcmp (key, "Control_R") == 0) || (strcmp (key, "Shift_L") == 0) || (strcmp (key, "Shift_R") == 0) || (strcmp (key, "Super_L") == 0) || (strcmp (key, "Super_R") == 0) || (strcmp (key, "Meta_L") == 0) || (strcmp (key, "Meta_R") == 0) || (strcmp (key, "Alt_L") == 0) || (strcmp (key, "Alt_R") == 0) ) { return; } if ( (event->keyval == GDK_KEY_Delete) || (event->keyval == GDK_KEY_KP_Delete) || (event->keyval == GDK_KEY_BackSpace) || // f1..12 ((event->keyval >= GDK_KEY_F1) && (event->keyval <= GDK_KEY_F12)) || // crtl/shift/super/alt + ? (event->state & GDK_CONTROL_MASK) || (event->state & GDK_SHIFT_MASK) || (event->state & GDK_SUPER_MASK) || (event->state & GDK_META_MASK) ) { must_save_accels = TRUE; if ((event->keyval == GDK_KEY_Delete) || (event->keyval == GDK_KEY_KP_Delete) || (event->keyval == GDK_KEY_BackSpace)) gtk_accel_map_change_entry (gtk_menu_item_get_accel_path (menuitem), 0, 0, TRUE); else gtk_accel_map_change_entry ( gtk_menu_item_get_accel_path (menuitem), gdk_keyval_to_lower (event->keyval), event->state & gtk_accelerator_get_default_mod_mask (), TRUE); } } static void accels_save () { // gtk-can-change-accels for GTK 3.2..3.24 | so same GTK 2.24 - 3.x if (must_save_accels) { gchar *path = g_build_filename ("/", g_getenv ("HOME"), ".awf-gtk-accels", NULL); gtk_accel_map_save (path); g_free (path); } } // dialogs static void dialog_open () { // @common gtk2/3 GtkWidget *dialog = gtk_file_chooser_dialog_new ( "GtkFileChooserDialog:Open", GTK_WINDOW (window), GTK_FILE_CHOOSER_ACTION_OPEN, "gtk-cancel", GTK_RESPONSE_CANCEL, "gtk-open", GTK_RESPONSE_ACCEPT, NULL); gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dialog), TRUE); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } static void dialog_recent () { // @common gtk2/3 GtkWidget *dialog = gtk_recent_chooser_dialog_new ( "GtkRecentChooserDialog", GTK_WINDOW (window), "gtk-cancel", GTK_RESPONSE_CANCEL, "gtk-open", GTK_RESPONSE_ACCEPT, NULL); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } static void dialog_save () { // @common gtk2/3 GtkWidget *dialog = gtk_file_chooser_dialog_new ( "GtkFileChooserDialog:Save", GTK_WINDOW (window), GTK_FILE_CHOOSER_ACTION_SAVE, "gtk-cancel", GTK_RESPONSE_CANCEL, "gtk-save", GTK_RESPONSE_ACCEPT, NULL); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } static void dialog_message () { // @common gtk2/3 GtkWidget *dialog = gtk_message_dialog_new ( GTK_WINDOW (window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_YES_NO, "GtkMessageDialog"); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), _app("A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme.")); gtk_window_set_title (GTK_WINDOW (dialog), "GtkMessageDialog"); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } static void dialog_page_setup () { // @common gtk2/3 GtkWidget *dialog = gtk_page_setup_unix_dialog_new ("GtkPageSetupUnixDialog", GTK_WINDOW (window)); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } static void dialog_print () { // @common gtk2/3 GtkWidget *dialog = gtk_print_unix_dialog_new ("GtkPrintUnixDialog", GTK_WINDOW (window)); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } static void dialog_about () { // @common gtk2/3 gchar *t1, *t2, *t3, *t4; gtk_show_about_dialog (GTK_WINDOW (window), "version", VERSION, "comments", t1 = g_strdup_printf ("%s\n\n%s\n%s\n\n%s\n%s", _app("A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme."), t2 = g_strdup_printf (_app("Remove %s file"), "~/.awf-gtk-accels"), _app("to reset keyboard shortcuts."), t3 = g_strdup_printf (_app("compiled with gtk %d.%d.%d and glib %d.%d.%d and pango %s"), GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION, GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION, PANGO_VERSION_STRING), t4 = g_strdup_printf (_app(" started with gtk %d.%d.%d and glib %d.%d.%d and pango %s"), gtk_major_version, gtk_minor_version, gtk_micro_version, glib_major_version, glib_minor_version, glib_micro_version, pango_version_string ()) ), "website", "https://github.com/luigifab/awf-extended", "copyright", "Copyright © 2020-2025 Fabrice Creuzot (luigifab)\nCopyright © 2011-2017 Valère Monseur (valr)", "icon-name", GETTEXT_PACKAGE, "logo-icon-name", GETTEXT_PACKAGE, "license", "A widget factory is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.", "wrap-license", TRUE, NULL); g_free (t1); g_free (t2); g_free (t3); g_free (t4); } static void dialog_calendar () { // @common gtk2/3 GtkWidget *dialog, *infobar, *label, *calendar, *vbox = BOXV, *area; dialog = gtk_dialog_new_with_buttons ( NULL, GTK_WINDOW (window), GTK_DIALOG_DESTROY_WITH_PARENT, NULL, NULL); // info bars and calendar infobar = gtk_info_bar_new_with_buttons ("gtk-ok", GTK_RESPONSE_OK, NULL); gtk_info_bar_set_message_type (GTK_INFO_BAR (infobar), GTK_MESSAGE_INFO); label = gtk_label_new (_app("This is an info bar.")); add_to (GTK_BOX (infobar), label, FALSE, FALSE, 0, 0); add_to (GTK_BOX (vbox), infobar, FALSE, FALSE, 0, 0); infobar = gtk_info_bar_new_with_buttons (_app("Ok"), GTK_RESPONSE_OK, NULL); gtk_info_bar_set_message_type (GTK_INFO_BAR (infobar), GTK_MESSAGE_QUESTION); label = gtk_label_new (_app("This is a question bar.")); add_to (GTK_BOX (infobar), label, FALSE, FALSE, 0, 0); add_to (GTK_BOX (vbox), infobar, FALSE, FALSE, 0, 0); infobar = gtk_info_bar_new (); gtk_info_bar_set_message_type (GTK_INFO_BAR (infobar), GTK_MESSAGE_WARNING); label = gtk_label_new (_app("This is a warning bar.")); add_to (GTK_BOX (infobar), label, FALSE, FALSE, 0, 0); add_to (GTK_BOX (vbox), infobar, FALSE, FALSE, 0, 0); infobar = gtk_info_bar_new (); gtk_info_bar_set_message_type (GTK_INFO_BAR (infobar), GTK_MESSAGE_ERROR); label = gtk_label_new (_app("This is an error bar.")); add_to (GTK_BOX (infobar), label, FALSE, FALSE, 0, 0); add_to (GTK_BOX (vbox), infobar, FALSE, FALSE, 0, 0); calendar = gtk_calendar_new (); gtk_calendar_set_display_options (GTK_CALENDAR (calendar), GTK_CALENDAR_SHOW_HEADING | GTK_CALENDAR_SHOW_DAY_NAMES | GTK_CALENDAR_SHOW_WEEK_NUMBERS); add_to (GTK_BOX (vbox), calendar, FALSE, FALSE, 0, 0); // dialog area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); add_to (GTK_BOX (area), vbox, TRUE, TRUE, 5, 5); gtk_dialog_add_button (GTK_DIALOG (dialog), "gtk-cancel", 0); gtk_dialog_add_button (GTK_DIALOG (dialog), "gtk-ok", 0); gtk_widget_show_all (dialog); gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); gtk_widget_set_size_request (dialog, 350, -1); gtk_window_set_title (GTK_WINDOW (dialog), "GtkDialog"); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } static void dialog_scales_top () { // @common dialog_scales (GTK_POS_TOP); } static void dialog_scales_bottom () { // @common dialog_scales (GTK_POS_BOTTOM); } static void dialog_scales_right () { // @common dialog_scales (GTK_POS_RIGHT); } static void dialog_scales_left () { // @common dialog_scales (GTK_POS_LEFT); } static void dialog_scales (int position) { GtkWidget *dialog, *area, *hbox = BOXH; GtkWidget *vbox1 = BOXV, *vbox2 = BOXV, *vbox3 = BOXV, *hboxa = BOXH, *hboxb = BOXH; GtkWidget *scale1v, *scale2v, *scale3v, *scale4v, *scale5v, *scale6v, *scale7v, *scale8v, *scale9v, *scale10v, *scale11v, *scale12v; GtkWidget *scale1h, *scale2h, *scale3h, *scale4h, *scale5h, *scale6h, *scale7h, *scale8h, *scale9h, *scale10h, *scale11h, *scale12h; gdouble value = gtk_range_get_value (GTK_RANGE (scale1)); dialog = gtk_dialog_new_with_buttons ( NULL, GTK_WINDOW (window), GTK_DIALOG_DESTROY_WITH_PARENT, NULL, NULL); // vertical scales scale1v = create_vertical_scale (value, FALSE, FALSE, position); scale2v = create_vertical_scale (value, FALSE, FALSE, position); update_marks (GTK_SCALE (scale2v), FALSE, GTK_POS_LEFT); scale3v = create_vertical_scale (value, FALSE, FALSE, position); update_marks (GTK_SCALE (scale3v), TRUE, GTK_POS_LEFT); scale4v = create_vertical_scale (value, TRUE, FALSE, position); scale5v = create_vertical_scale (value, TRUE, FALSE, position); update_marks (GTK_SCALE (scale5v), FALSE, GTK_POS_LEFT); scale6v = create_vertical_scale (value, TRUE, FALSE, position); update_marks (GTK_SCALE (scale6v), TRUE, GTK_POS_LEFT); scale7v = create_vertical_scale (value, FALSE, TRUE, position); scale8v = create_vertical_scale (value, FALSE, TRUE, position); update_marks (GTK_SCALE (scale8v), FALSE, GTK_POS_RIGHT); scale9v = create_vertical_scale (value, FALSE, TRUE, position); update_marks (GTK_SCALE (scale9v), TRUE, GTK_POS_RIGHT); scale10v = create_vertical_scale (value, TRUE, TRUE, position); scale11v = create_vertical_scale (value, TRUE, TRUE, position); update_marks (GTK_SCALE (scale11v), FALSE, GTK_POS_RIGHT); scale12v = create_vertical_scale (value, TRUE, TRUE, position); update_marks (GTK_SCALE (scale12v), TRUE, GTK_POS_RIGHT); // horizontal scales scale1h = create_horizontal_scale (value, FALSE, FALSE, position); scale2h = create_horizontal_scale (value, FALSE, FALSE, position); update_marks (GTK_SCALE (scale2h), FALSE, GTK_POS_TOP); scale3h = create_horizontal_scale (value, FALSE, FALSE, position); update_marks (GTK_SCALE (scale3h), TRUE, GTK_POS_TOP); scale4h = create_horizontal_scale (value, TRUE, FALSE, position); scale5h = create_horizontal_scale (value, TRUE, FALSE, position); update_marks (GTK_SCALE (scale5h), FALSE, GTK_POS_TOP); scale6h = create_horizontal_scale (value, TRUE, FALSE, position); update_marks (GTK_SCALE (scale6h), TRUE, GTK_POS_TOP); scale7h = create_horizontal_scale (value, FALSE, TRUE, position); scale8h = create_horizontal_scale (value, FALSE, TRUE, position); update_marks (GTK_SCALE (scale8h), FALSE, GTK_POS_BOTTOM); scale9h = create_horizontal_scale (value, FALSE, TRUE, position); update_marks (GTK_SCALE (scale9h), TRUE, GTK_POS_BOTTOM); scale10h = create_horizontal_scale (value, TRUE, TRUE, position); scale11h = create_horizontal_scale (value, TRUE, TRUE, position); update_marks (GTK_SCALE (scale11h), FALSE, GTK_POS_BOTTOM); scale12h = create_horizontal_scale (value, TRUE, TRUE, position); update_marks (GTK_SCALE (scale12h), TRUE, GTK_POS_BOTTOM); // dialog area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); add_to (GTK_BOX (area), hbox, TRUE, TRUE, 5, 5); add_to (GTK_BOX (hbox), vbox1, TRUE, TRUE, 5, 5); add_to (GTK_BOX (vbox1), scale1h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox1), scale2h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox1), scale3h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox1), scale4h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox1), scale5h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox1), scale6h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hbox), vbox2, TRUE, TRUE, 5, 5); add_to (GTK_BOX (vbox2), hboxa, TRUE, TRUE, 0, 0); add_to (GTK_BOX (hboxa), scale1v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxa), scale2v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxa), scale3v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxa), scale7v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxa), scale8v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxa), scale9v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox2), hboxb, TRUE, TRUE, 0, 0); add_to (GTK_BOX (hboxb), scale4v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxb), scale5v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxb), scale6v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxb), scale10v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxb), scale11v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxb), scale12v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hbox), vbox3, TRUE, TRUE, 5, 5); add_to (GTK_BOX (vbox3), scale7h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox3), scale8h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox3), scale9h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox3), scale10h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox3), scale11h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox3), scale12h, FALSE, FALSE, 5, 5); gtk_dialog_add_button (GTK_DIALOG (dialog), "gtk-cancel", 0); gtk_dialog_add_button (GTK_DIALOG (dialog), "gtk-ok", 0); gtk_widget_show_all (dialog); gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); gtk_window_set_title (GTK_WINDOW (dialog), "GtkDialog"); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } awf-extended-2.9.0/src/awf-gtk3.c000066400000000000000000003127331477403510000164650ustar00rootroot00000000000000/** * Forked M/10/03/2020 * Updated L/31/03/2025 * * Copyright 2020-2025 | Fabrice Creuzot (luigifab) * https://github.com/luigifab/awf-extended * https://www.luigifab.fr/gtk/awf-extended * * Forked from * Copyright 2011-2017 | Valère Monseur (valr) * https://github.com/valr/awf * * Forked from * AWF is originally based on the code from The Widget Factory * created by Richard Stellingwerff * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published * by the free software foundation, either version 3 of the license, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but without any warranty, without even the implied warranty of * merchantability or fitness for a particular purpose. See the * GNU General Public License (GPL) for more details. * * * Translations update: * xgettext --keyword=_app -d awf -o src/awf.pot -k_ -s src/awf-gtk*.c * msgmerge src/po/fr.po src/awf.pot -o src/po/fr.po * msgfmt src/po/fr.po -o src/fr/LC_MESSAGES/awf.mo * * Tested with build.sh (via VirtualBox 7.0) with: * Debian Testing 64 (1536 MB) GTK 2.24/3.24/4.18 + GLIB 2.84 + Pango 1.56 * Fedora Rawhide 64 (1536 MB) GTK 2.24/3.24/4.18 + GLIB 2.84 + Pango 1.56 * Ubuntu 24.10 Oracular Oriole 64 (4096 MB) GTK 2.24/3.24/4.16 + GLIB 2.82 + Pango 1.54 * Ubuntu 24.04 Noble Numbat 64 (4096 MB) GTK 2.24/3.24/4.14 + GLIB 2.80 + Pango 1.52 * Ubuntu 23.10 Mantic Minotaur 64 (3072 MB) GTK 2.24/3.24/4.12 + GLIB 2.78 + Pango 1.51 * Ubuntu 23.04 Lunar Lobster 64 (3072 MB) GTK 2.24/3.24/4.10 + GLIB 2.76 + Pango 1.50 * Ubuntu 22.10 Kinetic Kudu 64 (2176 MB) GTK 2.24/3.24/4.8 + GLIB 2.74 + Pango 1.50 * Ubuntu 22.04 Jammy Jellyfish 64 (2176 MB) GTK 2.24/3.24/4.6 + GLIB 2.72 + Pango 1.50 * Ubuntu 21.10 Impish Indri 64 (2176 MB) GTK 2.24/3.24/4.4 + GLIB 2.68 + Pango 1.48 * Ubuntu 21.04 Hirsute Hippo 64 (2176 MB) GTK 2.24/3.24/4.0 + GLIB 2.68 + Pango 1.48 * Ubuntu 17.04 Zesty Zapus 32 (1536 MB) GTK 2.24/3.22 + GLIB 2.52 + Pango 1.40 * Ubuntu 16.10 Yakkety Yak 32 (1536 MB) GTK 2.24/3.20 + GLIB 2.50 + Pango 1.40 * Ubuntu 16.04 Xenial Xerus 32 (1536 MB) GTK 2.24/3.18 + GLIB 2.48 + Pango 1.38 * Ubuntu 15.10 Wily Werewolf 32 (1024 MB) GTK 2.24/3.16 + GLIB 2.46 + Pango 1.36 * Ubuntu 15.04 Vivid Vervet 32 (1024 MB) GTK 2.24/3.14 + GLIB 2.44 + Pango 1.36 * Ubuntu 14.10 Utopic Unicorn 32 (1024 MB) GTK 2.24/3.12 + GLIB 2.42 + Pango 1.36 * Ubuntu 14.04 Trusty Tahr 32 (1024 MB) GTK 2.24/3.10 + GLIB 2.40 + Pango 1.36 * Ubuntu 13.10 Saucy Salamander 32 (1024 MB) GTK 2.24/3.8 + GLIB 2.38 + Pango 1.32 * Ubuntu 13.04 Raring Ringtail 32 (1024 MB) GTK 2.24/3.6 + GLIB 2.36 + Pango 1.32 * Ubuntu 12.04 Precise Pangolin 32 (1024 MB) GTK 2.24/3.4 + GLIB 2.32 + Pango 1.30 * Ubuntu 11.10 Oneiric Ocelot 32 (1024 MB) GTK 2.24/3.2 + GLIB 2.30 + Pango 1.29 * Ubuntu 11.04 Natty Narwhal 32 (1024 MB) GTK 2.24/3.0 + GLIB 2.28 + Pango 1.28 */ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #include #include #include #include #include #include #include #include #if GLIB_CHECK_VERSION (2,30,0) #include #endif #pragma GCC diagnostic pop #define GETTEXT_PACKAGE g_strdup_printf ("awf-gtk%d", GTK_MAJOR_VERSION) #define BOXH (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0)) #define BOXV (gtk_box_new (GTK_ORIENTATION_VERTICAL, 0)) #define SEPH (gtk_separator_new (GTK_ORIENTATION_HORIZONTAL)) #define SEPV (gtk_separator_new (GTK_ORIENTATION_VERTICAL)) #define PANEH (gtk_paned_new (GTK_ORIENTATION_HORIZONTAL)) #define PANEV (gtk_paned_new (GTK_ORIENTATION_VERTICAL)) #define gtk_major_version gtk_get_major_version () #define gtk_minor_version gtk_get_minor_version () #define gtk_micro_version gtk_get_micro_version () #define AWF_OPEN "/Test/Open" #define AWF_RECE "/Test/Recent" #define AWF_CALE "/Test/Calendar" #define AWF_SCAT "/Test/ScalesTop" #define AWF_SCAB "/Test/ScalesBottom" #define AWF_SCAR "/Test/ScalesRight" #define AWF_SCAL "/Test/ScalesLeft" #define AWF_SAVE "/Test/Save" #define AWF_REFR "/Test/Refresh" #define AWF_PROP "/Test/Properties" #define AWF_PRSE "/Test/PrintSetup" #define AWF_PRIN "/Test/Print" #define AWF_ABOU "/Test/About" #define AWF_MCUT "/Test/More/Cut" #define AWF_MCOP "/Test/More/Copy" #define AWF_MPAS "/Test/More/Past" #define AWF_CLOS "/Test/Close" #define AWF_QUIT "/Test/Quit" #define AWF_ACCEL_OPEN "O" #define AWF_ACCEL_RECE NULL #define AWF_ACCEL_CALE NULL #define AWF_ACCEL_SCAT NULL #define AWF_ACCEL_SCAB NULL #define AWF_ACCEL_SCAR NULL #define AWF_ACCEL_SCAL NULL #define AWF_ACCEL_SAVE "S" #define AWF_ACCEL_REFR "F5" #define AWF_ACCEL_PROP "Return" #define AWF_ACCEL_PRSE "P" #define AWF_ACCEL_PRIN "P" #define AWF_ACCEL_ABOU "F1" #define AWF_ACCEL_MCUT "X" #define AWF_ACCEL_MCOP "C" #define AWF_ACCEL_MPAS "V" #define AWF_ACCEL_CLOS "W" #define AWF_ACCEL_QUIT "Q" // @see https://stackoverflow.com/a/10018581/2980105 #define _app(String) dgettext (GETTEXT_PACKAGE, String) #define _gtk(String) dgettext (g_strdup_printf ("gtk%d0", GTK_MAJOR_VERSION), String) // global variables static GSList *list_system_theme = NULL; static GSList *list_user_theme = NULL; static GtkWidget *window = NULL, *toolbar = NULL, *toolbarentry = NULL, *statusbar = NULL; static GtkWidget *volume1 = NULL, *volume2 = NULL; static GtkWidget *progressbar1 = NULL, *progressbar2 = NULL, *progressbar3 = NULL, *progressbar4 = NULL, *progressbar8 = NULL, *progressbar9 = NULL; static GtkWidget *scale1 = NULL, *scale2 = NULL, *scale3 = NULL, *scale4 = NULL, *scale5 = NULL, *scale6 = NULL; static GtkWidget *levelbar1 = NULL, *levelbar2 = NULL, *levelbar3 = NULL, *levelbar4 = NULL; static GtkWidget *levelbar5 = NULL, *levelbar6 = NULL, *levelbar7 = NULL, *levelbar8 = NULL; static GtkWidget *notebook1 = NULL, *notebook2 = NULL, *notebook3 = NULL, *notebook4 = NULL; static GtkWidget *current_menuitem = NULL; static int current_direction = GTK_TEXT_DIR_NONE; static gchar *current_theme = "auto"; static gchar *opt_theme = "auto"; static gchar *opt_screenshot = NULL; static gboolean opt_startspinner = TRUE; static gboolean allow_update_theme = TRUE; static gboolean must_save_accels = FALSE; // global functions static void quit (); static GSList* awf_load_theme (gchar *directory); static int awf_compare_theme (gconstpointer theme1, gconstpointer theme2); static void update_text_direction (int direction); static void update_window_size (); static void update_theme (gchar *new_theme); static void update_statusbar (gchar *message); static void update_values (GtkRange *range); static void update_widgets (); static void update_marks (GtkScale *scale, gboolean value, int position); static void display_notification (); static void find_and_update_labels (GtkWidget *widget, gboolean special); static gboolean on_notification_action (void *data); static gboolean on_sighup (void *data); static gboolean take_screenshot (void *data); static void create_window (gpointer app); static void create_widgets (GtkWidget *root); static void add_to (GtkBox *box, GtkWidget *widget, gboolean fill, gboolean expand, guint padding, guint spacing); static void add_progressbar_and_entrybar (); static void create_toolbar_items (GtkWidget *root); static void create_combos_entries (GtkWidget *root); static void create_spinbuttons (GtkWidget *root); static void create_checkbuttons (GtkWidget *root); static void create_radiobuttons (GtkWidget *root); static void create_otherbuttons (GtkWidget *root1, GtkWidget *root2, GtkWidget *root3, GtkWidget *root4, GtkWidget *root5); static void create_progressbars (GtkWidget *root1, GtkWidget *root2, GtkWidget *root3, GtkWidget *root4); static void create_labels (GtkWidget *root); static void create_spinners (GtkWidget *root); static void create_expander (GtkWidget *root); static void create_frames (GtkWidget *root1, GtkWidget *root2); static void create_notebooks (GtkWidget *root1, GtkWidget *root2); static void create_notebook_tab (GtkWidget *notebook, gchar *text, gboolean close); static void create_treview (GtkWidget *root); static GtkWidget* create_horizontal_scale (gdouble value, gboolean draw, gboolean inverted, int position); static GtkWidget* create_vertical_scale (gdouble value, gboolean draw, gboolean inverted, int position); static void create_traditional_menubar (GtkWidget *root); static GtkWidget* create_menu (GtkWidget *root, gchar *text); static GtkWidget* create_menuitem_tearoff (GtkWidget *menu); static GtkWidget* create_menuitem_check (GtkWidget *menu, gchar *text, gboolean checked, gboolean inconsistent, gboolean disabled); static GtkWidget* create_menuitem_radio (GtkWidget *menu, gchar *text, gboolean checked, gboolean inconsistent, gboolean disabled, GSList *group); static GtkWidget* create_menuitem (GtkWidget *menu, gchar *text, gboolean disabled, gchar *accel, gchar *keymap, GCallback function); static void accels_load (); static void accels_select (GtkWidget *widget); static void accels_deselect (GtkWidget *widget); static void accels_change (GtkWidget *widget, GdkEventKey *event); static void accels_save (); static void dialog_open (); static void dialog_recent (); static void dialog_save (); static void dialog_message (); static void dialog_page_setup (); static void dialog_print (); static void dialog_about (); static void dialog_calendar (); static void dialog_scales_top (); static void dialog_scales_bottom (); static void dialog_scales_right (); static void dialog_scales_left (); static void dialog_scales (int position); #if GTK_CHECK_VERSION (3,4,0) static gboolean on_scrolltabs (GtkWidget *widget, GdkEventScroll *event); #endif // run run run int main (int argc, gchar **argv) { int opt = 0, status = 0; GSList *iterator = NULL; // load available themes list_system_theme = awf_load_theme ("/usr/share/themes"); list_system_theme = g_slist_sort (list_system_theme, (GCompareFunc) awf_compare_theme); gchar *directory = g_build_path ("/", g_getenv ("HOME"), ".themes", NULL); list_user_theme = awf_load_theme (directory); list_user_theme = g_slist_sort (list_user_theme, (GCompareFunc) awf_compare_theme); g_free (directory); // locale setlocale (LC_ALL, ""); if (g_file_test ("/usr/share/locale", G_FILE_TEST_IS_DIR)) bindtextdomain (GETTEXT_PACKAGE, "/usr/share/locale"); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); // init static struct option long_options[] = { {"version", no_argument, NULL, 'v'}, {"list-themes", no_argument, NULL, 'l'}, {"no-spinners", no_argument, NULL, 'n'}, {"theme", required_argument, NULL, 't'}, {"screenshot", required_argument, NULL, 's'}, {"help", no_argument, NULL, 'x'}, {"ltr", no_argument, NULL, 'y'}, {"rtl", no_argument, NULL, 'z'}, {NULL, 0, NULL, 0} }; while ((opt = getopt_long (argc, argv, "vlnt:s:hxyz", long_options, NULL)) != -1) { switch (opt) { // --version -v case 'v': g_printf ("%s\n", VERSION); return status; // --list-themes -l case 'l': for (iterator = list_system_theme; iterator; iterator = iterator->next) g_printf ("%s\n", (gchar*) iterator->data); for (iterator = list_user_theme; iterator; iterator = iterator->next) g_printf ("%s\n", (gchar*) iterator->data); return status; // --no-spinners -n case 'n': opt_startspinner = FALSE; // --theme -t case 't': if (g_slist_find_custom (list_system_theme, optarg, &awf_compare_theme) || g_slist_find_custom (list_user_theme, optarg, &awf_compare_theme)) opt_theme = (gchar*) optarg; break; // --screenshot -s case 's': opt_screenshot = optarg; break; // --ltr case 'y': current_direction = GTK_TEXT_DIR_LTR; break; // --rtl case 'z': current_direction = GTK_TEXT_DIR_RTL; break; // --help (via GtkApplication) -h case 'x': case 'h': default: if (opt == 'x') { #if GLIB_CHECK_VERSION (2,42,0) && GTK_CHECK_VERSION (3,4,0) break; #endif } g_printf ("%s\n\n %s %s\n %s %s\n %s %s\n %s %s\n %s %s\n %s %s\n %s %s\n\n%s\n%s\n", g_strdup_printf (_app("A widget factory - GTK %d.%d"), GTK_MAJOR_VERSION, GTK_MINOR_VERSION), "-v ", _app("Show version number."), "-l ", _app("List available themes."), "-n ", _app("Don't start spinners."), "-t ", _app("Run with the specified theme."), "-s ", g_strdup_printf (_app("Run and save a png screenshot on %s."), "SIGHUP"), "--ltr ", _app("Start with text from left to right (Left-To-Right)."), "--rtl ", _app("Start with text from right to left (Right-To-Left)."), g_strdup_printf (_app("compiled with gtk %d.%d.%d and glib %d.%d.%d and pango %s"), GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION, GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION, PANGO_VERSION_STRING), g_strdup_printf (_app(" started with gtk %d.%d.%d and glib %d.%d.%d and pango %s"), gtk_major_version, gtk_minor_version, gtk_micro_version, glib_major_version, glib_minor_version, glib_micro_version, pango_version_string ()) ); return status; } } // create and show window // @code specdific for gtk3 #if GLIB_CHECK_VERSION (2,30,0) g_unix_signal_add (SIGHUP, on_sighup, NULL); #endif #if GTK_CHECK_VERSION (3,4,0) GtkApplication *app = gtk_application_new ("org.gtk.awf", G_APPLICATION_NON_UNIQUE); g_signal_connect (app, "activate", G_CALLBACK (create_window), NULL); #if GLIB_CHECK_VERSION (2,42,0) && GTK_CHECK_VERSION (3,4,0) // --version -v g_application_add_main_option (G_APPLICATION (app), "version", 'v', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, _app("Show version number."), NULL); // --list-themes -l g_application_add_main_option (G_APPLICATION (app), "list-themes", 'l', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, _app("List available themes."), NULL); // --no-spinners -n g_application_add_main_option (G_APPLICATION (app), "no-spinners", 'n', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, _app("Don't start spinners."), NULL); // --theme -t g_application_add_main_option (G_APPLICATION (app), "theme", 't', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_STRING, _app("Run with the specified theme."), ""); // --screenshot -s g_application_add_main_option (G_APPLICATION (app), "screenshot", 's', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_STRING, g_strdup_printf (_app("Run and save a png screenshot on %s."), "SIGHUP"), ""); // --ltr g_application_add_main_option (G_APPLICATION (app), "ltr", 'y', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, _app("Start with text from left to right (Left-To-Right)."), NULL); // --rtl g_application_add_main_option (G_APPLICATION (app), "rtl", 'z', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, _app("Start with text from right to left (Right-To-Left)."), NULL); g_application_register (G_APPLICATION (app), NULL, NULL); status = g_application_run (G_APPLICATION (app), argc, argv); #else g_application_register (G_APPLICATION (app), NULL, NULL); status = g_application_run (G_APPLICATION (app), 0, NULL); #endif #else gtk_init (&argc, &argv); create_window (NULL); #endif return status; } static void quit () { // @common accels_save (); exit (0); } static GSList* awf_load_theme (gchar *directory) { // @common GSList *list = NULL; g_return_val_if_fail (directory != NULL, NULL); if (g_file_test (directory, G_FILE_TEST_IS_DIR)) { GError *error = NULL; GDir *dir = g_dir_open (directory, 0, &error); if (dir) { gchar *theme = g_strdup (g_dir_read_name (dir)); gchar *gtkdir = g_strdup_printf ("gtk-%d.0", GTK_MAJOR_VERSION); while (theme) { gchar *theme_path = g_build_path ("/", directory, g_strstrip (theme), NULL); if (g_file_test (theme_path, G_FILE_TEST_IS_DIR)) { gchar *theme_subpath = g_build_path ("/", theme_path, gtkdir, NULL); if (g_file_test (theme_subpath, G_FILE_TEST_IS_DIR)) list = g_slist_prepend (list, theme); g_free (theme_subpath); } g_free (theme_path); theme = g_strdup (g_dir_read_name (dir)); } g_dir_close (dir); g_free (gtkdir); g_free (theme); } if (error) { g_fprintf (stderr, "unable to open directory: %s (%s)\n", directory, error->message); g_error_free (error); } } if (list) list = g_slist_reverse (list); return list; } static int awf_compare_theme (gconstpointer theme1, gconstpointer theme2) { // @common return g_strcmp0 ((gchar*) theme1, (gchar*) theme2); } static void update_text_direction (int direction) { // @common 80% // we must ignore the activate signal when menubar is created if (!allow_update_theme) return; if (((direction == GTK_TEXT_DIR_LTR) || (direction == 1)) && (gtk_widget_get_direction (window) != GTK_TEXT_DIR_LTR)) { gboolean toggle = gtk_notebook_get_scrollable (GTK_NOTEBOOK (notebook1)); current_direction = GTK_TEXT_DIR_LTR; gtk_widget_set_default_direction (current_direction); #if GTK_CHECK_VERSION (3,20,0) gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook3), GTK_POS_LEFT); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook4), GTK_POS_RIGHT); #endif gtk_scale_clear_marks (GTK_SCALE (scale5)); update_marks (GTK_SCALE (scale5), toggle, GTK_POS_LEFT); gtk_scale_clear_marks (GTK_SCALE (scale6)); update_marks (GTK_SCALE (scale6), toggle, GTK_POS_RIGHT); } else if (((direction == GTK_TEXT_DIR_RTL) || (direction == 2)) && (gtk_widget_get_direction (window) != GTK_TEXT_DIR_RTL)) { gboolean toggle = gtk_notebook_get_scrollable (GTK_NOTEBOOK (notebook1)); #if GTK_CHECK_VERSION (3,20,0) gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook3), GTK_POS_RIGHT); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook4), GTK_POS_LEFT); #endif gtk_scale_clear_marks (GTK_SCALE (scale5)); update_marks (GTK_SCALE (scale5), toggle, GTK_POS_RIGHT); gtk_scale_clear_marks (GTK_SCALE (scale6)); update_marks (GTK_SCALE (scale6), toggle, GTK_POS_LEFT); current_direction = GTK_TEXT_DIR_RTL; gtk_widget_set_default_direction (current_direction); } } static void update_window_size () { gtk_window_resize (GTK_WINDOW (window), 50, 50); } static void update_theme (gchar *new_theme) { // @common // we must ignore the activate signal when menubar is created if (!allow_update_theme) return; if (strcmp ((gchar*) new_theme, "refresh") == 0) { gchar *default_theme = "None"; if (g_slist_find_custom (list_system_theme, "Default", &awf_compare_theme)) default_theme = "Default"; else if (g_slist_find_custom (list_system_theme, "Raleigh", &awf_compare_theme)) default_theme = "Raleigh"; if (default_theme) { g_object_set (gtk_settings_get_default (), "gtk-theme-name", default_theme, NULL); g_usleep (G_USEC_PER_SEC / 2); g_object_set (gtk_settings_get_default (), "gtk-theme-name", current_theme, NULL); // @todo? force reload of ".config/gtk*/gtk.css" gchar *text = g_strdup_printf (_app("Theme %s reloaded."), current_theme); update_statusbar (text); g_free (text); update_window_size (); if (opt_screenshot) g_timeout_add_seconds (1, take_screenshot, NULL); } } else if (strcmp ((gchar*) new_theme, "auto") == 0) { g_object_get (gtk_settings_get_default (), "gtk-theme-name", ¤t_theme, NULL); update_window_size (); } else if (strcmp ((gchar*) current_theme, (gchar*) new_theme) != 0) { g_object_set (gtk_settings_get_default (), "gtk-theme-name", new_theme, NULL); g_object_get (gtk_settings_get_default (), "gtk-theme-name", ¤t_theme, NULL); //g_settings_set_string (g_settings_new ("org.mate.Marco.general"), "theme", (gchar*) current_theme); gchar *text = g_strdup_printf (_app("Theme %s loaded."), current_theme); update_statusbar (text); g_free (text); update_window_size (); } } static void update_statusbar (gchar *message) { // @common if (statusbar) { char buffer[12]; time_t rawtime; time (&rawtime); strftime (buffer, sizeof buffer, "%T", localtime (&rawtime)); gchar *text = g_strdup_printf ("%s - %s", buffer, message); gtk_statusbar_push (GTK_STATUSBAR (statusbar), gtk_statusbar_get_context_id (GTK_STATUSBAR (statusbar), "gné"), text); g_free (text); } } static void update_values (GtkRange *range) { double value = gtk_range_get_value (range); // range (0..1) gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar1), value / 100.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar2), value / 100.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar3), value / 100.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar4), value / 100.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar8), value / 100.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar9), value / 100.0); #if GTK_CHECK_VERSION (3,6,0) // range (0..1) gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar1), value / 100.0); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar2), value / 100.0); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar5), value / 100.0); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar6), value / 100.0); // range (0..5) gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar3), value / 100.0 * gtk_level_bar_get_max_value (GTK_LEVEL_BAR (levelbar3))); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar4), value / 100.0 * gtk_level_bar_get_max_value (GTK_LEVEL_BAR (levelbar4))); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar7), value / 100.0 * gtk_level_bar_get_max_value (GTK_LEVEL_BAR (levelbar7))); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar8), value / 100.0 * gtk_level_bar_get_max_value (GTK_LEVEL_BAR (levelbar8))); #endif // range (0..1) gtk_scale_button_set_value (GTK_SCALE_BUTTON (volume1), value / 100.0); // range (0..100) if (scale1 != (GtkWidget*) range) gtk_range_set_value (GTK_RANGE (scale1), value); if (scale2 != (GtkWidget*) range) gtk_range_set_value (GTK_RANGE (scale2), value); if (scale3 != (GtkWidget*) range) gtk_range_set_value (GTK_RANGE (scale3), value); if (scale4 != (GtkWidget*) range) gtk_range_set_value (GTK_RANGE (scale4), value); if (scale5 != (GtkWidget*) range) gtk_range_set_value (GTK_RANGE (scale5), value); if (scale6 != (GtkWidget*) range) gtk_range_set_value (GTK_RANGE (scale6), value); gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR (progressbar8), value > 50); gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR (progressbar9), value > 50); } static void update_widgets () { // function called when user click on [+] toolbar button // when toggle = true, the [+] toolbar button is NOT checked gboolean toggle = gtk_notebook_get_scrollable (GTK_NOTEBOOK (notebook1)); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook1), !toggle); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook2), !toggle); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook3), !toggle); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook4), !toggle); gtk_widget_set_sensitive (scale2, toggle); gtk_widget_set_sensitive (scale4, toggle); gtk_widget_set_sensitive (scale6, toggle); gtk_widget_set_sensitive (progressbar2, toggle); gtk_widget_set_sensitive (progressbar4, toggle); #if GTK_CHECK_VERSION (3,6,0) gtk_widget_set_sensitive (levelbar2, toggle); gtk_widget_set_sensitive (levelbar4, toggle); gtk_widget_set_sensitive (levelbar6, toggle); gtk_widget_set_sensitive (levelbar8, toggle); #endif gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR (progressbar1), !toggle); gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR (progressbar2), !toggle); gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR (progressbar3), !toggle); gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR (progressbar4), !toggle); gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR (progressbar8), FALSE); gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR (progressbar9), FALSE); // via add_progressbar_and_entrybar // show progressbar in toolbar and statusbar when [+] toolbar button is NOT checked if (toggle) { gtk_widget_set_visible (progressbar8, FALSE); gtk_widget_set_visible (progressbar9, FALSE); gtk_widget_set_visible (toolbarentry, FALSE); } else { gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar8), 0.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar9), 0.0); gtk_widget_set_visible (progressbar8, TRUE); gtk_widget_set_visible (progressbar9, TRUE); gtk_widget_set_visible (toolbarentry, TRUE); } gtk_scale_clear_marks (GTK_SCALE (scale5)); update_marks (GTK_SCALE (scale5), !toggle, GTK_POS_LEFT); gtk_scale_clear_marks (GTK_SCALE (scale6)); update_marks (GTK_SCALE (scale6), !toggle, GTK_POS_RIGHT); update_window_size (); } static void update_marks (GtkScale *scale, gboolean value, int position) { // @common if (value) { gtk_scale_add_mark (scale, 0, position, NULL); gtk_scale_add_mark (scale, 25, position, "25"); gtk_scale_add_mark (scale, 50, position, "50"); gtk_scale_add_mark (scale, 75, position, "75"); gtk_scale_add_mark (scale, 100, position, NULL); } else { gtk_scale_add_mark (scale, 0, position, NULL); gtk_scale_add_mark (scale, 25, position, NULL); gtk_scale_add_mark (scale, 50, position, NULL); gtk_scale_add_mark (scale, 75, position, NULL); gtk_scale_add_mark (scale, 100, position, NULL); } } static void display_notification () { // @common if (notify_init (GETTEXT_PACKAGE)) { // Ubuntu 11.04 with libnotify-dev 0.5.x, so you must use libnotify-dev 0.7.x from Ubuntu 11.10 NotifyNotification *notif = notify_notification_new (GETTEXT_PACKAGE, _app("A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme."), "dialog-information"); notify_notification_add_action (notif, "nothing", _gtk("Close"), NOTIFY_ACTION_CALLBACK (on_notification_action), NULL, NULL); notify_notification_add_action (notif, "close", _gtk("Close"), NOTIFY_ACTION_CALLBACK (on_notification_action), NULL, NULL); notify_notification_set_timeout (notif, 50000); notify_notification_show (notif, NULL); g_object_unref (G_OBJECT (notif)); notify_uninit (); } } static void find_and_update_labels (GtkWidget *widget, gboolean special) { // with ChatGPT if (GTK_IS_LABEL (widget)) { gtk_label_set_ellipsize (GTK_LABEL (widget), PANGO_ELLIPSIZE_END); } else if (GTK_IS_CELL_LAYOUT (widget)) { GList *cells = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (widget)); GList *iter; for (iter = cells; iter != NULL; iter = iter->next) { if (GTK_IS_CELL_RENDERER_TEXT (iter->data)) { if (special) { // @todo for button8 int width, height; PangoLayout *layout = gtk_widget_create_pango_layout (widget, "Test"); PangoFontDescription *desc = pango_font_description_copy (pango_context_get_font_description (gtk_widget_get_pango_context (widget))); pango_layout_set_font_description (layout, desc); pango_font_description_free (desc); pango_layout_get_pixel_size (layout, &width, &height); g_object_unref (layout); g_object_set (G_OBJECT (iter->data), "width-chars", 15, "max-width-chars", 15, "height", height + 4, NULL); } else { g_object_set (G_OBJECT (iter->data), "ellipsize", PANGO_ELLIPSIZE_END, "ellipsize-set", TRUE, NULL); } } } g_list_free (cells); } else if (GTK_IS_CONTAINER (widget)) { GList *children = gtk_container_get_children (GTK_CONTAINER (widget)); GList *iter; for (iter = children; iter != NULL; iter = iter->next) find_and_update_labels (GTK_WIDGET (iter->data), special); g_list_free (children); } } static gboolean on_notification_action (void *data) { // @common return FALSE; } static gboolean on_sighup (void *data) { // @common update_theme ("refresh"); #if defined (G_SOURCE_CONTINUE) return G_SOURCE_CONTINUE; #else return TRUE; // glib < 2.32 #endif } static gboolean take_screenshot (void *data) { // @common 50% GdkPixbuf *image = NULL; int width = 0, height = 0; GdkWindow *root = gtk_widget_get_window (window); gtk_window_get_size (GTK_WINDOW (window), &width, &height); image = gdk_pixbuf_get_from_window (root, 0, 0, width, height); if (image) { gdk_pixbuf_save (image, opt_screenshot, "png", NULL, "compression", "9", NULL); g_object_unref (image); gchar *text = g_strdup_printf (_app("Theme reloaded, then screenshot saved (%s)."), opt_screenshot); update_statusbar (text); g_free (text); } return FALSE; } // layout and widgets static void create_window (gpointer app) { GtkWidget *vbox_window, *widgets; gchar *text; // window #if GTK_CHECK_VERSION (3,4,0) window = gtk_application_window_new (GTK_APPLICATION (app)); #else window = gtk_window_new (GTK_WINDOW_TOPLEVEL); #endif gtk_widget_set_name (GTK_WIDGET (window), "AwfMainWindow"); gtk_window_set_icon_name (GTK_WINDOW (window), GETTEXT_PACKAGE); text = g_strdup_printf (_app("A widget factory - GTK %d.%d"), GTK_MAJOR_VERSION, GTK_MINOR_VERSION); gtk_window_set_title (GTK_WINDOW (window), text); g_free (text); // theme auto or from command line if (strcmp ((gchar*) current_theme, (gchar*) opt_theme) != 0) update_theme (opt_theme); else update_theme (current_theme); allow_update_theme = FALSE; if (current_direction == GTK_TEXT_DIR_NONE) current_direction = gtk_widget_get_default_direction (); // layout vbox_window = BOXV; gtk_container_add (GTK_CONTAINER (window), vbox_window); GtkWidget *menubar = gtk_menu_bar_new (); create_traditional_menubar (menubar); add_to (GTK_BOX (vbox_window), menubar, FALSE, FALSE, 0, 0); toolbar = gtk_toolbar_new (); gtk_style_context_add_class (gtk_widget_get_style_context (toolbar), "primary-toolbar"); add_to (GTK_BOX (vbox_window), toolbar, FALSE, FALSE, 0, 0); create_toolbar_items (toolbar); widgets = BOXV; add_to (GTK_BOX (vbox_window), widgets, TRUE, TRUE, 0, 0); create_widgets (widgets); statusbar = gtk_statusbar_new (); add_to (GTK_BOX (vbox_window), statusbar, FALSE, FALSE, 0, 0); text = g_strdup_printf (_app("Theme %s loaded."), current_theme); update_statusbar (text); g_free (text); // go go go allow_update_theme = TRUE; update_text_direction (current_direction); g_signal_connect (window, "destroy", G_CALLBACK (quit), NULL); gtk_widget_show_all (window); add_progressbar_and_entrybar (); #if !GTK_CHECK_VERSION (3,4,0) gtk_main (); #endif } static void create_widgets (GtkWidget *root) { // @common 50% GtkWidget *hbox_columns = BOXH; GtkWidget *vbox_column1 = BOXV, *vbox_combo_entry = BOXV, *hbox_spin = BOXH, *hbox_check_radio = BOXH, *vbox_check = BOXV, *vbox_radio = BOXV; GtkWidget *vbox_column2 = BOXV, *vbox_buttons = BOXV, *hbox_btns1 = BOXH, *hbox_btns2 = BOXH, *hbox_btns3 = BOXH, *hbox_btns4 = BOXH; GtkWidget *vbox_column3 = BOXV, *vbox_progressbar1 = BOXV, *vbox_progressbar2 = BOXV, *hbox_progressbar1 = BOXH, *hbox_progressbar2 = BOXH; GtkWidget *vbox_column4 = BOXV, *vbox_others = BOXV, *hbox_label = BOXH, *hbox_spinner = BOXH; GtkWidget *vpane = PANEV, *hpane1 = PANEH, *hpane2 = PANEH; GtkWidget *hbox_frame1 = BOXH, *hbox_frame2 = BOXH, *hbox_notebook1 = BOXH, *hbox_notebook2 = BOXH; // columns layout add_to (GTK_BOX (root), hbox_columns, TRUE, TRUE, 0, 0); // column 1 add_to (GTK_BOX (hbox_columns), vbox_column1, TRUE, TRUE, 5, 0); add_to (GTK_BOX (vbox_column1), vbox_combo_entry, FALSE, TRUE, 5, 3); create_combos_entries (vbox_combo_entry); add_to (GTK_BOX (vbox_column1), hbox_spin, FALSE, FALSE, 5, 0); create_spinbuttons (hbox_spin); add_to (GTK_BOX (vbox_column1), hbox_check_radio, FALSE, TRUE, 5, 0); add_to (GTK_BOX (hbox_check_radio), vbox_check, TRUE, TRUE, 0, 0); create_checkbuttons (vbox_check); add_to (GTK_BOX (hbox_check_radio), vbox_radio, TRUE, TRUE, 0, 0); create_radiobuttons (vbox_radio); add_to (GTK_BOX (hbox_columns), SEPV, FALSE, FALSE, 0, 0); // column 2 add_to (GTK_BOX (hbox_columns), vbox_column2, TRUE, TRUE, 5, 0); add_to (GTK_BOX (vbox_column2), vbox_buttons, FALSE, TRUE, 5, 3); add_to (GTK_BOX (vbox_column2), hbox_btns1, FALSE, FALSE, 5, 3); add_to (GTK_BOX (vbox_column2), hbox_btns2, FALSE, FALSE, 5, 3); add_to (GTK_BOX (vbox_column2), hbox_btns3, FALSE, FALSE, 5, 3); add_to (GTK_BOX (vbox_column2), hbox_btns4, FALSE, FALSE, 5, 3); create_otherbuttons (vbox_buttons, hbox_btns1, hbox_btns2, hbox_btns3, hbox_btns4); add_to (GTK_BOX (hbox_columns), SEPV, FALSE, FALSE, 0, 0); // column 3 add_to (GTK_BOX (hbox_columns), vbox_column3, TRUE, TRUE, 5, 0); add_to (GTK_BOX (vbox_column3), vbox_progressbar1, FALSE, TRUE, 6, 10); add_to (GTK_BOX (vbox_column3), hbox_progressbar1, FALSE, FALSE, 5, 10); add_to (GTK_BOX (vbox_column3), hbox_progressbar2, FALSE, FALSE, 5, 10); add_to (GTK_BOX (vbox_column3), vbox_progressbar2, FALSE, TRUE, 5, 10); create_progressbars (vbox_progressbar1, hbox_progressbar1, hbox_progressbar2, vbox_progressbar2); add_to (GTK_BOX (hbox_columns), SEPV, FALSE, FALSE, 0, 0); // column 4 add_to (GTK_BOX (hbox_columns), vbox_column4, TRUE, TRUE, 5, 0); add_to (GTK_BOX (vbox_column4), vbox_others, FALSE, TRUE, 5, 3); create_treview (vbox_others); add_to (GTK_BOX (vbox_others), hbox_label, FALSE, TRUE, 5, 0); create_labels (hbox_label); add_to (GTK_BOX (vbox_others), hbox_spinner, FALSE, TRUE, 5, 0); create_spinners (hbox_spinner); create_expander (vbox_others); add_to (GTK_BOX (root), SEPH, FALSE, FALSE, 0, 0); // paned layout add_to (GTK_BOX (root), vpane, TRUE, TRUE, 0, 0); gtk_paned_pack1 (GTK_PANED (vpane), hpane1, TRUE, FALSE); gtk_box_set_homogeneous (GTK_BOX (hbox_frame1), TRUE); gtk_box_set_spacing (GTK_BOX (hbox_frame1), 3); #if GTK_CHECK_VERSION (3,12,0) gtk_widget_set_size_request (hbox_frame1, -1, 50); gtk_widget_set_margin_start (hbox_frame1, 10); gtk_widget_set_margin_end (hbox_frame1, 10); gtk_widget_set_margin_top (hbox_frame1, 10); gtk_widget_set_margin_bottom (hbox_frame1, 10); #else gtk_widget_set_size_request (hbox_frame1, -1, 70); gtk_container_set_border_width (GTK_CONTAINER (hbox_frame1), 10); #endif gtk_paned_add1 (GTK_PANED (hpane1), hbox_frame1); gtk_box_set_homogeneous (GTK_BOX (hbox_frame2), TRUE); gtk_box_set_spacing (GTK_BOX (hbox_frame2), 3); #if GTK_CHECK_VERSION (3,12,0) gtk_widget_set_size_request (hbox_frame2, -1, 50); gtk_widget_set_margin_start (hbox_frame2, 10); gtk_widget_set_margin_end (hbox_frame2, 10); gtk_widget_set_margin_top (hbox_frame2, 10); gtk_widget_set_margin_bottom (hbox_frame2, 10); #else gtk_widget_set_size_request (hbox_frame2, -1, 70); gtk_container_set_border_width (GTK_CONTAINER (hbox_frame2), 10); #endif gtk_paned_add2 (GTK_PANED (hpane1), hbox_frame2); create_frames (hbox_frame1, hbox_frame2); gtk_paned_pack2 (GTK_PANED (vpane), hpane2, TRUE, FALSE); gtk_box_set_homogeneous (GTK_BOX (hbox_notebook1), TRUE); gtk_box_set_spacing (GTK_BOX (hbox_notebook1), 3); #if GTK_CHECK_VERSION (3,12,0) gtk_widget_set_margin_start (hbox_notebook1, 10); gtk_widget_set_margin_end (hbox_notebook1, 10); gtk_widget_set_margin_top (hbox_notebook1, 10); gtk_widget_set_margin_bottom (hbox_notebook1, 10); #else gtk_container_set_border_width (GTK_CONTAINER (hbox_notebook1), 10); #endif gtk_paned_add1 (GTK_PANED (hpane2), hbox_notebook1); gtk_box_set_homogeneous (GTK_BOX (hbox_notebook2), TRUE); gtk_box_set_spacing (GTK_BOX (hbox_notebook2), 3); #if GTK_CHECK_VERSION (3,12,0) gtk_widget_set_margin_start (hbox_notebook2, 10); gtk_widget_set_margin_end (hbox_notebook2, 10); gtk_widget_set_margin_top (hbox_notebook2, 10); gtk_widget_set_margin_bottom (hbox_notebook2, 10); #else gtk_container_set_border_width (GTK_CONTAINER (hbox_notebook2), 10); #endif gtk_paned_add2 (GTK_PANED (hpane2), hbox_notebook2); create_notebooks (hbox_notebook1, hbox_notebook2); } static void add_progressbar_and_entrybar () { // entry toolbar toolbarentry = gtk_entry_new (); #if GTK_CHECK_VERSION (3,2,0) gtk_entry_set_placeholder_text (GTK_ENTRY (toolbarentry), "..."); #endif gtk_widget_set_visible (toolbarentry, FALSE); gtk_widget_set_vexpand (toolbarentry, FALSE); gtk_widget_set_valign (toolbarentry, GTK_ALIGN_CENTER); gtk_container_add (GTK_CONTAINER (gtk_toolbar_get_nth_item (GTK_TOOLBAR (toolbar), 8)), toolbarentry); // after [+] // progressbar toolbar progressbar8 = gtk_progress_bar_new (); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar8), 0); gtk_orientable_set_orientation (GTK_ORIENTABLE (progressbar8), GTK_ORIENTATION_HORIZONTAL); gtk_widget_set_visible (progressbar8, FALSE); gtk_widget_set_vexpand (progressbar8, FALSE); gtk_widget_set_valign (progressbar8, GTK_ALIGN_CENTER); gtk_container_add (GTK_CONTAINER (gtk_toolbar_get_nth_item (GTK_TOOLBAR (toolbar), 12)), progressbar8); // end // progressbar statusbar progressbar9 = gtk_progress_bar_new (); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar9), 0); gtk_orientable_set_orientation (GTK_ORIENTABLE (progressbar9), GTK_ORIENTATION_HORIZONTAL); gtk_widget_set_visible (progressbar9, FALSE); gtk_widget_set_vexpand (progressbar9, FALSE); gtk_widget_set_valign (progressbar9, GTK_ALIGN_CENTER); gtk_box_pack_start (GTK_BOX (statusbar), progressbar9, FALSE, FALSE, 0); } static void add_to (GtkBox *box, GtkWidget *widget, gboolean fill, gboolean expand, guint padding, guint spacing) { if (GTK_IS_INFO_BAR (box)) box = GTK_BOX (gtk_info_bar_get_content_area (GTK_INFO_BAR (box))); if (GTK_IS_CONTAINER (widget) && (padding > 0)) gtk_container_set_border_width (GTK_CONTAINER (widget), padding); if (GTK_IS_BOX (widget) && (spacing > 0)) gtk_box_set_spacing (GTK_BOX (widget), spacing); gtk_box_pack_start (box, widget, fill, expand, 0); #if GTK_CHECK_VERSION (3,20,0) if (!GTK_IS_BOX (widget)) { GtkStyleContext *style = gtk_widget_get_style_context (widget); gchar *text = gtk_style_context_to_string (style, GTK_STYLE_CONTEXT_PRINT_RECURSE); gtk_widget_set_tooltip_text (widget, text); g_free (text); } #endif } static void create_toolbar_items (GtkWidget *root) { // @common gtk2/3 GtkWidget *tool1, *menu, *tool2, *tool4, *tool5, *tool6, *tool8, *tool9, *tool10, *tool11, *tool12, *tool13; // @todo option command line? gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_ICONS); tool1 = GTK_WIDGET (gtk_menu_tool_button_new (NULL, NULL)); gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (tool1), "gtk-open"); g_signal_connect (tool1, "clicked", G_CALLBACK (dialog_open), NULL); menu = gtk_menu_new (); create_menuitem (menu, "Menu item", FALSE, NULL, NULL, NULL); gtk_widget_show_all (menu); // very important gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON (tool1), menu); tool2 = GTK_WIDGET (gtk_menu_tool_button_new (NULL, NULL)); gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (tool2), "gtk-open"); gtk_widget_set_sensitive (tool2, FALSE); tool4 = GTK_WIDGET (gtk_tool_button_new (NULL, NULL)); gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (tool4), "gtk-save"); g_signal_connect (tool4, "clicked", G_CALLBACK (dialog_save), NULL); tool5 = GTK_WIDGET (gtk_tool_button_new (NULL, NULL)); gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (tool5), "gtk-refresh"); g_signal_connect_swapped (tool5, "clicked", G_CALLBACK (update_theme), "refresh"); tool6 = GTK_WIDGET (gtk_tool_button_new (NULL, NULL)); gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (tool6), "gtk-dialog-info"); g_signal_connect_swapped (tool6, "clicked", G_CALLBACK (display_notification), "refresh"); tool8 = GTK_WIDGET (gtk_toggle_tool_button_new ()); gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (tool8), "gtk-add"); gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (tool8), TRUE); g_signal_connect (tool8, "clicked", G_CALLBACK (update_widgets), NULL); tool9 = GTK_WIDGET (gtk_tool_item_new ()); tool10 = GTK_WIDGET (gtk_toggle_tool_button_new ()); gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (tool10), "gtk-remove"); gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (tool10), FALSE); g_signal_connect (tool10, "clicked", G_CALLBACK (update_widgets), NULL); tool11 = GTK_WIDGET (gtk_toggle_tool_button_new ()); gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (tool11), "gtk-close"); gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (tool11), FALSE); gtk_widget_set_sensitive (tool11, FALSE); tool12 = GTK_WIDGET (gtk_tool_item_new ()); gtk_tool_item_set_expand (GTK_TOOL_ITEM (tool12), TRUE); tool13 = GTK_WIDGET (gtk_tool_item_new ()); gtk_tool_item_set_expand (GTK_TOOL_ITEM (tool13), FALSE); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool1), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool2), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), gtk_separator_tool_item_new (), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool4), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool5), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool6), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), gtk_separator_tool_item_new (), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool8), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool9), -1); // = 8 gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool10), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool11), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool12), -1); gtk_toolbar_insert (GTK_TOOLBAR (root), GTK_TOOL_ITEM (tool13), -1); // = 12 } static void create_combos_entries (GtkWidget *root) { GtkWidget *combo1, *combo2, *combo3, *combo4, *entry1, *entry2, *entry3, *entry4; combo1 = gtk_combo_box_text_new_with_entry (); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo1), "Combo box entry 1"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo1), "Combo box entry 2"); gtk_combo_box_set_active (GTK_COMBO_BOX (combo1), 0); combo2 = gtk_combo_box_text_new_with_entry (); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo2), "Combo box entry 1"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo2), "Combo box entry 2"); gtk_combo_box_set_active (GTK_COMBO_BOX (combo2), 0); gtk_widget_set_sensitive (combo2, FALSE); combo3 = gtk_combo_box_text_new (); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo3), "Combo box 1"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo3), "Combo box 2"); gtk_combo_box_set_active (GTK_COMBO_BOX (combo3), 0); combo4 = gtk_combo_box_text_new (); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo4), "Combo box 1"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo4), "Combo box 2"); gtk_combo_box_set_active (GTK_COMBO_BOX (combo4), 0); gtk_widget_set_sensitive (combo4, FALSE); entry1 = gtk_entry_new (); gtk_entry_set_text (GTK_ENTRY (entry1), "Entry"); #if GTK_CHECK_VERSION (3,2,0) gtk_entry_set_placeholder_text (GTK_ENTRY (entry1), "Placeholder"); #endif entry2 = gtk_entry_new (); gtk_entry_set_text (GTK_ENTRY (entry2), "Entry"); gtk_widget_set_sensitive (entry2, FALSE); entry3 = gtk_entry_new (); gtk_entry_set_text (GTK_ENTRY (entry3), "Entry"); gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry3), GTK_ENTRY_ICON_PRIMARY, "gtk-clear"); gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry3), GTK_ENTRY_ICON_SECONDARY, "gtk-find"); #if GTK_CHECK_VERSION (3,2,0) gtk_entry_set_placeholder_text (GTK_ENTRY (entry3), "Placeholder"); #endif entry4 = gtk_entry_new (); gtk_entry_set_text (GTK_ENTRY (entry4), "Entry"); gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry4), GTK_ENTRY_ICON_PRIMARY, "gtk-clear"); gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry4), GTK_ENTRY_ICON_SECONDARY, "gtk-find"); gtk_widget_set_sensitive (entry4, FALSE); // layout add_to (GTK_BOX (root), combo1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), combo2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), combo3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), combo4, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), entry1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), entry2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), entry3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), entry4, FALSE, FALSE, 0, 0); } static void create_spinbuttons (GtkWidget *root) { // @common GtkWidget *spinbutton1, *spinbutton2; spinbutton1 = gtk_spin_button_new_with_range (-100, 100, 1); gtk_spin_button_set_value (GTK_SPIN_BUTTON (spinbutton1), 1); spinbutton2 = gtk_spin_button_new_with_range (-100, 100, 1); gtk_spin_button_set_value (GTK_SPIN_BUTTON (spinbutton2), 1); gtk_widget_set_sensitive (spinbutton2, FALSE); add_to (GTK_BOX (root), spinbutton1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), BOXH, TRUE, TRUE, 0, 0); // empty space add_to (GTK_BOX (root), spinbutton2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), BOXH, TRUE, TRUE, 0, 0); // empty space } static void create_checkbuttons (GtkWidget *root) { // @common gtk2/3 GtkWidget *checkbutton1, *checkbutton2, *checkbutton3, *checkbutton4, *checkbutton5, *checkbutton6; checkbutton1 = gtk_check_button_new_with_label ("Check btn 1"); checkbutton2 = gtk_check_button_new_with_label ("Check btn 2"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton2), TRUE); checkbutton3 = gtk_check_button_new_with_label ("Check btn 3"); gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (checkbutton3), TRUE); checkbutton4 = gtk_check_button_new_with_label ("Check btn 4"); gtk_widget_set_sensitive (checkbutton4, FALSE); checkbutton5 = gtk_check_button_new_with_label ("Check btn 5"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton5), TRUE); gtk_widget_set_sensitive (checkbutton5, FALSE); checkbutton6 = gtk_check_button_new_with_label ("Check btn 6"); gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (checkbutton6), TRUE); gtk_widget_set_sensitive (checkbutton6, FALSE); add_to (GTK_BOX (root), checkbutton1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), checkbutton2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), checkbutton3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), checkbutton4, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), checkbutton5, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), checkbutton6, FALSE, FALSE, 0, 0); } static void create_radiobuttons (GtkWidget *root) { // @common gtk2/3 GtkWidget *radiobutton1, *radiobutton2, *radiobutton3, *radiobutton4, *radiobutton5, *radiobutton6; radiobutton1 = gtk_radio_button_new_with_label (NULL, "Radio btn 1"); radiobutton2 = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton1)), "Radio btn 2"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radiobutton2), TRUE); radiobutton3 = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton1)), "Radio btn 3"); gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (radiobutton3), TRUE); radiobutton4 = gtk_radio_button_new_with_label (NULL, "Radio btn 4"); gtk_widget_set_sensitive (radiobutton4, FALSE); radiobutton5 = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton4)), "Radio btn 5"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radiobutton5), TRUE); gtk_widget_set_sensitive (radiobutton5, FALSE); radiobutton6 = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton4)), "Radio btn 6"); gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (radiobutton6), TRUE); gtk_widget_set_sensitive (radiobutton6, FALSE); add_to (GTK_BOX (root), radiobutton1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), radiobutton2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), radiobutton3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), radiobutton4, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), radiobutton5, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), radiobutton6, FALSE, FALSE, 0, 0); } static void create_otherbuttons (GtkWidget *root1, GtkWidget *root2, GtkWidget *root3, GtkWidget *root4, GtkWidget *root5) { GtkWidget *button1, *button2, *button3, *button4, *button5, *button6, *button7, *button8, *button9; GtkWidget *button10, *button11, *button12, *button13, *button14; button1 = gtk_button_new_with_label ("Button 1"); button2 = gtk_button_new_with_label ("Button 2"); gtk_widget_set_sensitive (button2, FALSE); button3 = gtk_toggle_button_new_with_label ("Button 3"); button4 = gtk_toggle_button_new_with_label ("Button 4"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button3), TRUE); gtk_widget_set_sensitive (button4, FALSE); // colorbutton GdkRGBA color; gdk_rgba_parse (&color, "#7796ba"); button5 = gtk_color_button_new_with_rgba (&color); // fontbutton button6 = gtk_font_button_new (); find_and_update_labels (button6, FALSE); gtk_widget_set_size_request (button6, 186, -1); // filebutton button7 = gtk_file_chooser_button_new ("GtkFileChooserDialog", GTK_FILE_CHOOSER_ACTION_OPEN); find_and_update_labels (button7, FALSE); gtk_widget_set_size_request (button7, 180, -1); button8 = gtk_file_chooser_button_new ("GtkFileChooserDialog", GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); find_and_update_labels (button8, TRUE); gtk_widget_set_size_request (button8, 180, -1); // switchbutton button9 = gtk_switch_new (); gtk_switch_set_active (GTK_SWITCH (button9), TRUE); button10 = gtk_switch_new (); gtk_switch_set_active (GTK_SWITCH (button10), TRUE); gtk_widget_set_sensitive (button10, FALSE); button11 = gtk_switch_new (); gtk_switch_set_active (GTK_SWITCH (button11), FALSE); button12 = gtk_switch_new (); gtk_switch_set_active (GTK_SWITCH (button12), FALSE); gtk_widget_set_sensitive (button12, FALSE); button13 = gtk_link_button_new_with_label ("https://github.com/luigifab/awf-extended", "Link button"); button14 = gtk_link_button_new_with_label ("https://github.com/luigifab/awf-extended", "Link button"); gtk_widget_set_sensitive (button14, FALSE); volume1 = gtk_volume_button_new (); gtk_scale_button_set_value (GTK_SCALE_BUTTON (volume1), 0.5); #if !GTK_CHECK_VERSION (3,12,0) g_object_set ((GObject*) volume1, "size", GTK_ICON_SIZE_BUTTON, NULL); // @todo not working with Ubuntu #endif volume2 = gtk_volume_button_new (); gtk_scale_button_set_value (GTK_SCALE_BUTTON (volume2), 0); gtk_widget_set_sensitive (volume2, FALSE); #if !GTK_CHECK_VERSION (3,12,0) g_object_set ((GObject*) volume2, "size", GTK_ICON_SIZE_BUTTON, NULL); // @todo not working with Ubuntu #endif // layout add_to (GTK_BOX (root1), button1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button4, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button5, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button6, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button7, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button8, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root2), button9, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root2), button10, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root3), button11, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root3), button12, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root4), button13, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root4), button14, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root5), volume1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root5), volume2, FALSE, FALSE, 0, 0); } static void create_progressbars (GtkWidget *root1, GtkWidget *root2, GtkWidget *root3, GtkWidget *root4) { // progress bars progressbar1 = gtk_progress_bar_new (); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar1), 0.5); gtk_orientable_set_orientation (GTK_ORIENTABLE (progressbar1), GTK_ORIENTATION_HORIZONTAL); progressbar2 = gtk_progress_bar_new (); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar2), 0.5); gtk_orientable_set_orientation (GTK_ORIENTABLE (progressbar2), GTK_ORIENTATION_HORIZONTAL); gtk_progress_bar_set_inverted (GTK_PROGRESS_BAR (progressbar2), TRUE); gtk_style_context_add_class (gtk_widget_get_style_context (progressbar2), "awf-cheatcode-prbr2"); progressbar3 = gtk_progress_bar_new (); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar3), 0.5); gtk_orientable_set_orientation (GTK_ORIENTABLE (progressbar3), GTK_ORIENTATION_VERTICAL); gtk_widget_set_size_request (progressbar3, -1, 100); progressbar4 = gtk_progress_bar_new (); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar4), 0.5); gtk_orientable_set_orientation (GTK_ORIENTABLE (progressbar4), GTK_ORIENTATION_VERTICAL); gtk_progress_bar_set_inverted (GTK_PROGRESS_BAR (progressbar4), TRUE); // scales scale1 = create_horizontal_scale (50, FALSE, FALSE, GTK_POS_TOP); g_signal_connect (scale1, "value_changed", G_CALLBACK (update_values), NULL); scale2 = create_horizontal_scale (50, FALSE, TRUE, GTK_POS_TOP); g_signal_connect (scale2, "value_changed", G_CALLBACK (update_values), NULL); scale3 = create_vertical_scale (50, FALSE, FALSE, GTK_POS_TOP); g_signal_connect (scale3, "value_changed", G_CALLBACK (update_values), NULL); scale4 = create_vertical_scale (50, FALSE, TRUE, GTK_POS_TOP); g_signal_connect (scale4, "value_changed", G_CALLBACK (update_values), NULL); scale5 = create_vertical_scale (50, FALSE, FALSE, GTK_POS_TOP); update_marks (GTK_SCALE (scale5), FALSE, GTK_POS_LEFT); g_signal_connect (scale5, "value_changed", G_CALLBACK (update_values), NULL); scale6 = create_vertical_scale (50, FALSE, TRUE, GTK_POS_TOP); update_marks (GTK_SCALE (scale6), FALSE, GTK_POS_RIGHT); g_signal_connect (scale6, "value_changed", G_CALLBACK (update_values), NULL); #if GTK_CHECK_VERSION (3,6,0) levelbar1 = gtk_level_bar_new (); gtk_level_bar_set_mode (GTK_LEVEL_BAR (levelbar1), GTK_LEVEL_BAR_MODE_CONTINUOUS); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar1), 0.5); gtk_orientable_set_orientation (GTK_ORIENTABLE (levelbar1), GTK_ORIENTATION_VERTICAL); levelbar2 = gtk_level_bar_new (); gtk_level_bar_set_mode (GTK_LEVEL_BAR (levelbar2), GTK_LEVEL_BAR_MODE_CONTINUOUS); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar2), 0.5); gtk_orientable_set_orientation (GTK_ORIENTABLE (levelbar2), GTK_ORIENTATION_VERTICAL); levelbar3 = gtk_level_bar_new_for_interval (0, 5); gtk_level_bar_set_mode (GTK_LEVEL_BAR (levelbar3), GTK_LEVEL_BAR_MODE_DISCRETE); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar3), 2); // GTK 3.20.9 not working gtk_orientable_set_orientation (GTK_ORIENTABLE (levelbar3), GTK_ORIENTATION_VERTICAL); levelbar4 = gtk_level_bar_new_for_interval (0, 5); gtk_level_bar_set_mode (GTK_LEVEL_BAR (levelbar4), GTK_LEVEL_BAR_MODE_DISCRETE); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar4), 2); // GTK 3.20.9 not working gtk_orientable_set_orientation (GTK_ORIENTABLE (levelbar4), GTK_ORIENTATION_VERTICAL); levelbar5 = gtk_level_bar_new (); gtk_level_bar_set_mode (GTK_LEVEL_BAR (levelbar5), GTK_LEVEL_BAR_MODE_CONTINUOUS); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar5), 0.5); levelbar6 = gtk_level_bar_new (); gtk_level_bar_set_mode (GTK_LEVEL_BAR (levelbar6), GTK_LEVEL_BAR_MODE_CONTINUOUS); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar6), 0.5); levelbar7 = gtk_level_bar_new_for_interval (0, 5); gtk_level_bar_set_mode (GTK_LEVEL_BAR (levelbar7), GTK_LEVEL_BAR_MODE_DISCRETE); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar7), 2); // GTK 3.20.9 not working levelbar8 = gtk_level_bar_new_for_interval (0, 5); gtk_level_bar_set_mode (GTK_LEVEL_BAR (levelbar8), GTK_LEVEL_BAR_MODE_DISCRETE); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar8), 2); // GTK 3.20.9 not working #if GTK_CHECK_VERSION (3,8,0) gtk_level_bar_set_inverted (GTK_LEVEL_BAR (levelbar2), TRUE); gtk_level_bar_set_inverted (GTK_LEVEL_BAR (levelbar4), TRUE); gtk_level_bar_set_inverted (GTK_LEVEL_BAR (levelbar6), TRUE); gtk_level_bar_set_inverted (GTK_LEVEL_BAR (levelbar8), TRUE); #endif #endif // layout add_to (GTK_BOX (root1), progressbar1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), progressbar2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), scale1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), scale2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root2), progressbar3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root2), progressbar4, FALSE, FALSE, 0, 0); #if GTK_CHECK_VERSION (3,6,0) add_to (GTK_BOX (root2), levelbar1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root2), levelbar2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root2), levelbar3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root2), levelbar4, FALSE, FALSE, 0, 0); #endif add_to (GTK_BOX (root3), scale3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root3), scale5, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root3), scale6, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root3), scale4, FALSE, FALSE, 0, 0); #if GTK_CHECK_VERSION (3,6,0) add_to (GTK_BOX (root4), levelbar5, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root4), levelbar6, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root4), levelbar7, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root4), levelbar8, FALSE, FALSE, 0, 0); #endif } static void create_labels (GtkWidget *root) { // @common GtkWidget *label1, *label2; label1 = gtk_label_new ("Label 1"); label2 = gtk_label_new ("Label 2"); gtk_widget_set_sensitive (label2, FALSE); add_to (GTK_BOX (root), label1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), BOXH, TRUE, TRUE, 0, 0); // empty space add_to (GTK_BOX (root), label2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), BOXH, TRUE, TRUE, 0, 0); // empty space } static void create_spinners (GtkWidget *root) { // @common GtkWidget *spinner1, *spinner2; spinner1 = gtk_spinner_new (); gtk_widget_set_size_request (spinner1, 20, 20); if (opt_startspinner) gtk_spinner_start (GTK_SPINNER (spinner1)); spinner2 = gtk_spinner_new (); gtk_widget_set_size_request (spinner2, 20, 20); gtk_widget_set_sensitive (spinner2, FALSE); if (opt_startspinner) gtk_spinner_start (GTK_SPINNER (spinner2)); add_to (GTK_BOX (root), spinner1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), BOXH, TRUE, TRUE, 0, 0); // empty space add_to (GTK_BOX (root), spinner2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), BOXH, TRUE, TRUE, 0, 0); // empty space } static void create_expander (GtkWidget *root) { GtkWidget *expander, *scrolled_window, *tv; GtkTextBuffer *buffer; expander = gtk_expander_new (_app("More...")); gtk_expander_set_expanded (GTK_EXPANDER (expander), TRUE); //#if GTK_CHECK_VERSION (3,20,0) // @todo label 100% width //#endif scrolled_window = gtk_scrolled_window_new (NULL, NULL); #if GTK_CHECK_VERSION (3,16,0) const gchar *config = g_getenv ("GTK_OVERLAY_SCROLLING"); if (config && (strcmp (config, "0") == 0)) gtk_scrolled_window_set_overlay_scrolling (GTK_SCROLLED_WINDOW (scrolled_window), FALSE); #endif gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); gtk_widget_set_size_request (scrolled_window, -1, 120); tv = gtk_text_view_new (); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tv)); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (tv), GTK_WRAP_WORD); gtk_text_buffer_set_text (GTK_TEXT_BUFFER (buffer), g_strdup_printf ("%s ~ %s", _app("A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme."), _app("A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme.")), -1); gtk_container_add (GTK_CONTAINER (scrolled_window), tv); gtk_container_add (GTK_CONTAINER (expander), scrolled_window); add_to (GTK_BOX (root), expander, FALSE, FALSE, 0, 0); } static void create_frames (GtkWidget *root1, GtkWidget *root2) { GtkWidget *frame1, *frame2, *frame3, *frame4; frame1 = gtk_frame_new ("Frame (shadow in)"); gtk_style_context_add_class (gtk_widget_get_style_context (frame1), "border-inset"); gtk_frame_set_shadow_type (GTK_FRAME (frame1), GTK_SHADOW_IN); frame2 = gtk_frame_new ("Frame (shadow out)"); gtk_style_context_add_class (gtk_widget_get_style_context (frame2), "border-outset"); gtk_frame_set_shadow_type (GTK_FRAME (frame2), GTK_SHADOW_OUT); frame3 = gtk_frame_new ("Frame (shadow etched in)"); gtk_style_context_add_class (gtk_widget_get_style_context (frame3), "border-groove"); gtk_frame_set_shadow_type (GTK_FRAME (frame3), GTK_SHADOW_ETCHED_IN); frame4 = gtk_frame_new ("Frame (shadow etched out)"); gtk_style_context_add_class (gtk_widget_get_style_context (frame4), "border-ridge"); gtk_frame_set_shadow_type (GTK_FRAME (frame4), GTK_SHADOW_ETCHED_OUT); add_to (GTK_BOX (root1), frame1, TRUE, TRUE, 0, 0); add_to (GTK_BOX (root1), frame2, TRUE, TRUE, 0, 0); add_to (GTK_BOX (root2), frame3, TRUE, TRUE, 0, 0); add_to (GTK_BOX (root2), frame4, TRUE, TRUE, 0, 0); } static void create_notebooks (GtkWidget *root1, GtkWidget *root2) { // @common* notebook1 = gtk_notebook_new (); notebook2 = gtk_notebook_new (); notebook3 = gtk_notebook_new (); notebook4 = gtk_notebook_new (); #if GTK_CHECK_VERSION (3,4,0) // gtk-scroll-tabs for GTK 3.4..3.24 | so same 2.24 - 3.x - 4.x // with or without gtk3-classic https://github.com/lah7/gtk3-classic/commit/66b65775822c46e07f5b2f30036010d06dbcbad4 gtk_widget_add_events (notebook1, GDK_SCROLL_MASK); g_signal_connect (notebook1, "scroll-event", G_CALLBACK (on_scrolltabs), NULL); gtk_widget_add_events (notebook2, GDK_SCROLL_MASK); g_signal_connect (notebook2, "scroll-event", G_CALLBACK (on_scrolltabs), NULL); gtk_widget_add_events (notebook3, GDK_SCROLL_MASK); g_signal_connect (notebook3, "scroll-event", G_CALLBACK (on_scrolltabs), NULL); gtk_widget_add_events (notebook4, GDK_SCROLL_MASK); g_signal_connect (notebook4, "scroll-event", G_CALLBACK (on_scrolltabs), NULL); #endif gtk_notebook_popup_enable (GTK_NOTEBOOK (notebook1)); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook1), FALSE); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook1), GTK_POS_TOP); create_notebook_tab (notebook1, "Tab1", FALSE); create_notebook_tab (notebook1, "Tab2", FALSE); create_notebook_tab (notebook1, "Tab3", TRUE); create_notebook_tab (notebook1, "Tab4", TRUE); gtk_notebook_popup_enable (GTK_NOTEBOOK (notebook2)); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook2), FALSE); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook2), GTK_POS_BOTTOM); create_notebook_tab (notebook2, "Tab1", FALSE); create_notebook_tab (notebook2, "Tab2", FALSE); create_notebook_tab (notebook2, "Tab3", TRUE); create_notebook_tab (notebook2, "Tab4", TRUE); gtk_notebook_popup_enable (GTK_NOTEBOOK (notebook3)); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook3), FALSE); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook3), GTK_POS_LEFT); create_notebook_tab (notebook3, "T1", FALSE); create_notebook_tab (notebook3, "Tab2", FALSE); create_notebook_tab (notebook3, "T3b", TRUE); create_notebook_tab (notebook3, "T4", TRUE); gtk_notebook_popup_enable (GTK_NOTEBOOK (notebook4)); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook4), FALSE); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook4), GTK_POS_RIGHT); create_notebook_tab (notebook4, "T1", FALSE); create_notebook_tab (notebook4, "Tab2", FALSE); create_notebook_tab (notebook4, "T3b", TRUE); create_notebook_tab (notebook4, "T4", TRUE); add_to (GTK_BOX (root1), notebook1, TRUE, TRUE, 0, 0); add_to (GTK_BOX (root1), notebook2, TRUE, TRUE, 0, 0); add_to (GTK_BOX (root2), notebook3, TRUE, TRUE, 0, 0); add_to (GTK_BOX (root2), notebook4, TRUE, TRUE, 0, 0); } static void create_notebook_tab (GtkWidget *notebook, gchar *text, gboolean close) { GtkWidget *headbtn = BOXH, *content = BOXV, *btn; add_to (GTK_BOX (headbtn), gtk_label_new (text), TRUE, TRUE, 0, 0); if (close) { btn = gtk_button_new (); gtk_button_set_image (GTK_BUTTON (btn), gtk_image_new_from_icon_name ("gtk-close", GTK_ICON_SIZE_MENU)); gtk_button_set_relief (GTK_BUTTON (btn), GTK_RELIEF_NONE); #if GTK_CHECK_VERSION (3,20,0) gtk_widget_set_focus_on_click (btn, FALSE); #else gtk_button_set_focus_on_click (GTK_BUTTON (btn), FALSE); #endif add_to (GTK_BOX (headbtn), btn, FALSE, FALSE, 0, 0); } gtk_widget_show_all (headbtn); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), content, headbtn); gtk_notebook_set_tab_reorderable (GTK_NOTEBOOK (notebook), content, TRUE); #if GTK_CHECK_VERSION (3,4,0) if (close) { // gtk-scroll-tabs (close button) for GTK 3.4..3.24 | so same 2.24 - 3.x - 4.x // with or without gtk3-classic https://github.com/lah7/gtk3-classic/commit/66b65775822c46e07f5b2f30036010d06dbcbad4 gtk_widget_add_events (btn, GDK_SCROLL_MASK); g_signal_connect (btn, "scroll-event", G_CALLBACK (on_scrolltabs), NULL); } #endif } static void create_treview (GtkWidget *root) { // @common 80% GtkWidget *scrolled_window, *view; GtkCellRenderer *renderer; GtkTreeStore *store; GtkTreeIter iter; int idx = 0; // data store = gtk_tree_store_new (11, G_TYPE_INT, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 1, 1, FALSE, 2, FALSE, 3, "Text 1.1", 4, 0.0, 5, 0.0, 6, "Text 1.2", 7, "gtk-open", 8, "gtk-open", 9, FALSE, 10, FALSE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 2, 1, TRUE, 2, TRUE, 3, "Text 2.1", 4, 10.0, 5, 10.0, 6, "Text 2.2", 7, "gtk-save", 8, "gtk-save", 9, TRUE, 10, TRUE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 3, 1, FALSE, 2, FALSE, 3, "Text 3.1", 4, 20.0, 5, 20.0, 6, "Text 3.2", 7, "gtk-save-as", 8, "gtk-save-as", 9, FALSE, 10, FALSE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 4, 1, TRUE, 2, TRUE, 3, "Text 4.1", 4, 30.0, 5, 30.0, 6, "Text 4.2", 7, "gtk-refresh", 8, "gtk-refresh", 9, TRUE, 10, TRUE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 5, 1, FALSE, 2, FALSE, 3, "Text 5.1", 4, 40.0, 5, 40.0, 6, "Text 5.2", 7, "gtk-cut", 8, "gtk-cut", 9, FALSE, 10, FALSE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 6, 1, TRUE, 2, TRUE, 3, "Text 6.1", 4, 50.0, 5, 50.0, 6, "Text 6.2", 7, "gtk-help", 8, "gtk-help", 9, TRUE, 10, TRUE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 7, 1, FALSE, 2, FALSE, 3, "Text 7.1", 4, 60.0, 5, 60.0, 6, "Text 7.2", 7, "gtk-open", 8, "gtk-open", 9, FALSE, 10, FALSE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 8, 1, TRUE, 2, TRUE, 3, "Text 8.1", 4, 70.0, 5, 70.0, 6, "Text 8.2", 7, "gtk-save", 8, "gtk-save", 9, TRUE, 10, TRUE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 9, 1, FALSE, 2, FALSE, 3, "Text 9.1", 4, 80.0, 5, 80.0, 6, "Text 9.2", 7, "gtk-save-as", 8, "gtk-save-as", 9, FALSE, 10, FALSE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 10, 1, TRUE, 2, TRUE, 3, "Text 10.1", 4, 90.0, 5, 90.0, 6, "Text 10.2", 7, "gtk-refresh", 8, "gtk-refresh", 9, TRUE, 10, TRUE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 11, 1, FALSE, 2, FALSE, 3, "Text 11.1", 4, 100.0, 5, 100.0, 6, "Text 11.2", 7, "gtk-cut", 8, "gtk-cut", 9, FALSE, 10, FALSE, -1); // columns view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store)); gtk_tree_view_set_reorderable (GTK_TREE_VIEW (view), FALSE); // rows gtk_tree_view_set_show_expanders (GTK_TREE_VIEW (view), FALSE); gtk_tree_view_set_headers_clickable (GTK_TREE_VIEW (view), TRUE); gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store), 0, GTK_SORT_ASCENDING); g_object_unref (G_OBJECT (store)); idx = 0; renderer = gtk_cell_renderer_text_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "i", renderer, "text", idx, NULL); gtk_tree_view_column_set_sort_column_id (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), idx); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 1; renderer = gtk_cell_renderer_toggle_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "c", renderer, "active", idx, NULL); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_min_width (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), 20); idx = 2; renderer = gtk_cell_renderer_toggle_new (); gtk_cell_renderer_toggle_set_radio (GTK_CELL_RENDERER_TOGGLE (renderer), TRUE); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "r", renderer, "active", idx, NULL); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_min_width (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), 20); idx = 3; renderer = gtk_cell_renderer_text_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "Text", renderer, "text", idx, NULL); gtk_tree_view_column_set_sort_column_id (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), idx); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 4; renderer = gtk_cell_renderer_progress_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "Progress", renderer, "value", idx, NULL); gtk_tree_view_column_set_sort_column_id (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), idx); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 5; renderer = gtk_cell_renderer_progress_new (); gtk_cell_renderer_set_sensitive (renderer, FALSE); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "Progress", renderer, "value", idx, NULL); gtk_tree_view_column_set_sort_column_id (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), idx); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 6; renderer = gtk_cell_renderer_text_new (); gtk_cell_renderer_set_sensitive (renderer, FALSE); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "Text", renderer, "text", idx, NULL); gtk_tree_view_column_set_sort_column_id (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), idx); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 7; renderer = gtk_cell_renderer_pixbuf_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "Icon", renderer, "icon-name", idx, NULL); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 8; renderer = gtk_cell_renderer_pixbuf_new (); gtk_cell_renderer_set_sensitive (renderer, FALSE); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "Icon", renderer, "icon-name", idx, NULL); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 9; renderer = gtk_cell_renderer_toggle_new (); gtk_cell_renderer_set_sensitive (renderer, FALSE); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "c", renderer, "active", idx, NULL); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_min_width (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), 20); idx = 10; renderer = gtk_cell_renderer_toggle_new (); gtk_cell_renderer_set_sensitive (renderer, FALSE); gtk_cell_renderer_toggle_set_radio (GTK_CELL_RENDERER_TOGGLE (renderer), TRUE); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "r", renderer, "active", idx, NULL); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_min_width (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), 20); // colors for lines before GTK 3.19, after with gtk3-classic #if !GTK_CHECK_VERSION (3,19,0) gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE); #endif // scrolled window scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_IN); #if GTK_CHECK_VERSION (3,16,0) const gchar *config = g_getenv ("GTK_OVERLAY_SCROLLING"); if (config && (strcmp (config, "0") == 0)) gtk_scrolled_window_set_overlay_scrolling (GTK_SCROLLED_WINDOW (scrolled_window), FALSE); #endif gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_ALWAYS, GTK_POLICY_ALWAYS); gtk_widget_set_size_request (scrolled_window, 200, 200); gtk_widget_set_size_request (view, 200, 200); gtk_container_add (GTK_CONTAINER (scrolled_window), view); add_to (GTK_BOX (root), scrolled_window, FALSE, FALSE, 0, 0); } static GtkWidget* create_horizontal_scale (gdouble value, gboolean draw, gboolean inverted, int position) { // @common +shortcut GtkWidget *scale; scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, 0, 100, 1); gtk_range_set_value (GTK_RANGE (scale), value); gtk_scale_set_draw_value (GTK_SCALE (scale), draw); gtk_scale_set_value_pos (GTK_SCALE (scale), position); gtk_range_set_inverted (GTK_RANGE (scale), inverted); gtk_widget_set_size_request (scale, 186, -1); return scale; } static GtkWidget* create_vertical_scale (gdouble value, gboolean draw, gboolean inverted, int position) { // @common +shortcut GtkWidget *scale; scale = gtk_scale_new_with_range (GTK_ORIENTATION_VERTICAL, 0, 100, 1); gtk_scale_set_value_pos (GTK_SCALE (scale), position); gtk_range_set_inverted (GTK_RANGE (scale), inverted); gtk_scale_set_draw_value (GTK_SCALE (scale), draw); gtk_range_set_value (GTK_RANGE (scale), value); gtk_widget_set_size_request (scale, -1, 100); return scale; } // traditional menu - @common gtk2/3 (except one line) static void create_traditional_menubar (GtkWidget *root) { GtkWidget *menu, *submenu, *menuitem; GtkAccelGroup *accels = gtk_accel_group_new (); GSList *iterator, *group = NULL; gtk_window_add_accel_group (GTK_WINDOW (window), accels); // options menu = create_menu (root, _app("_Options")); gtk_menu_set_accel_group (GTK_MENU (menu), accels); // very important create_menuitem_tearoff (menu); create_menuitem (menu, "gtk-open", FALSE, AWF_ACCEL_OPEN, AWF_OPEN, dialog_open); create_menuitem (menu, _app("Open recent file"), FALSE, AWF_ACCEL_RECE, AWF_RECE, dialog_recent); create_menuitem (menu, _app("Calendar"), FALSE, AWF_ACCEL_CALE, AWF_CALE, dialog_calendar); create_menuitem (menu, _app("GtkScales top"), FALSE, AWF_ACCEL_SCAT, AWF_SCAT, dialog_scales_top); create_menuitem (menu, _app("GtkScales bottom"), FALSE, AWF_ACCEL_SCAB, AWF_SCAB, dialog_scales_bottom); create_menuitem (menu, _app("GtkScales right"), FALSE, AWF_ACCEL_SCAR, AWF_SCAR, dialog_scales_right); create_menuitem (menu, _app("GtkScales left"), FALSE, AWF_ACCEL_SCAL, AWF_SCAL, dialog_scales_left); create_menuitem (menu, "gtk-save", FALSE, AWF_ACCEL_SAVE, AWF_SAVE, dialog_save); create_menuitem (menu, "gtk-refresh", FALSE, AWF_ACCEL_REFR, AWF_REFR, G_CALLBACK (on_sighup)); // G_CALLBACK (update_theme) create_menuitem (menu, "gtk-properties", FALSE, AWF_ACCEL_PROP, AWF_PROP, dialog_message); create_menuitem (menu, "gtk-page-setup", FALSE, AWF_ACCEL_PRSE, AWF_PRSE, dialog_page_setup); create_menuitem (menu, "gtk-print", FALSE, AWF_ACCEL_PRIN, AWF_PRIN, dialog_print); create_menuitem (menu, "gtk-about", FALSE, AWF_ACCEL_ABOU, AWF_ABOU, dialog_about); submenu = create_menu (menu, _app("More...")); gtk_menu_set_accel_group (GTK_MENU (submenu), accels); // very important create_menuitem (submenu, "gtk-cut", FALSE, AWF_ACCEL_MCUT, AWF_MCUT, NULL); create_menuitem (submenu, "gtk-copy", FALSE, AWF_ACCEL_MCOP, AWF_MCOP, NULL); create_menuitem (submenu, "gtk-paste", FALSE, AWF_ACCEL_MPAS, AWF_MPAS, NULL); menuitem = gtk_separator_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); create_menuitem_check (menu, g_strdup_printf ("Check 1 %s", _app("(unchecked)")), FALSE, FALSE, FALSE); create_menuitem_check (menu, g_strdup_printf ("Check 2 %s", _app("(checked)")), TRUE, FALSE, FALSE); create_menuitem_check (menu, g_strdup_printf ("Check 3 %s", _app("(inconsistent)")), FALSE, TRUE, FALSE); create_menuitem_check (menu, g_strdup_printf ("Check 1 %s", _app("(unchecked)")), FALSE, FALSE, TRUE); create_menuitem_check (menu, g_strdup_printf ("Check 2 %s", _app("(checked)")), TRUE, FALSE, TRUE); create_menuitem_check (menu, g_strdup_printf ("Check 3 %s", _app("(inconsistent)")), FALSE, TRUE, TRUE); menuitem = gtk_separator_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menuitem = create_menuitem_radio (menu, g_strdup_printf ("Radio 1 %s", _app("(unchecked)")), FALSE, FALSE, FALSE, NULL); group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menuitem)); create_menuitem_radio (menu, g_strdup_printf ("Radio 2 %s", _app("(checked)")), TRUE, FALSE, FALSE, group); create_menuitem_radio (menu, g_strdup_printf ("Radio 3 %s", _app("(inconsistent)")), FALSE, TRUE, FALSE, NULL); menuitem = create_menuitem_radio (menu, g_strdup_printf ("Radio 1 %s", _app("(unchecked)")), FALSE, FALSE, TRUE, NULL); group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menuitem)); create_menuitem_radio (menu, g_strdup_printf ("Radio 2 %s", _app("(checked)")), TRUE, FALSE, TRUE, group); create_menuitem_radio (menu, g_strdup_printf ("Radio 3 %s", _app("(inconsistent)")), FALSE, TRUE, TRUE, NULL); menuitem = gtk_separator_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); create_menuitem (menu, "gtk-close", TRUE, AWF_ACCEL_CLOS, AWF_CLOS, NULL); create_menuitem (menu, "gtk-quit", FALSE, AWF_ACCEL_QUIT, AWF_QUIT, quit); // system themes group = NULL; menu = create_menu (root, _app("_System themes")); for (iterator = list_system_theme; iterator; iterator = iterator->next) { if (g_slist_find_custom (list_user_theme, iterator->data, &awf_compare_theme)) { menuitem = create_menuitem_radio (menu, iterator->data, FALSE, FALSE, TRUE, group); group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menuitem)); if (strcmp ((gchar*) current_theme, (gchar*) iterator->data) == 0) gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem), TRUE); g_signal_connect_swapped (menuitem, "activate", G_CALLBACK (update_theme), iterator->data); } else { menuitem = create_menuitem_radio (menu, iterator->data, FALSE, FALSE, FALSE, group); group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menuitem)); if (strcmp ((gchar*) current_theme, (gchar*) iterator->data) == 0) gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem), TRUE); g_signal_connect_swapped (menuitem, "activate", G_CALLBACK (update_theme), iterator->data); } } if (!list_system_theme) create_menuitem (menu, _app("No themes found"), TRUE, NULL, NULL, NULL); // user themes menu = create_menu (root, _app("_User themes")); for (iterator = list_user_theme; iterator; iterator = iterator->next) { menuitem = create_menuitem_radio (menu, iterator->data, FALSE, FALSE, FALSE, group); group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menuitem)); if (strcmp ((gchar*) current_theme, (gchar*) iterator->data) == 0) gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem), TRUE); g_signal_connect_swapped (menuitem, "activate", G_CALLBACK (update_theme), iterator->data); } if (!list_user_theme) create_menuitem (menu, _app("No themes found"), TRUE, NULL, NULL, NULL); // text direction group = NULL; menu = create_menu (root, _app("_Text direction")); menuitem = create_menuitem_radio (menu, _app("Left to Right (LTR)"), FALSE, FALSE, FALSE, group); if ((current_direction == GTK_TEXT_DIR_LTR) || (current_direction == 1)) gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem), TRUE); g_signal_connect_swapped (menuitem, "activate", G_CALLBACK (update_text_direction), (gpointer) GTK_TEXT_DIR_LTR); group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menuitem)); menuitem = create_menuitem_radio (menu, _app("Right to Left (RTL)"), FALSE, FALSE, FALSE, group); if ((current_direction == GTK_TEXT_DIR_RTL) || (current_direction == 2)) gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem), TRUE); g_signal_connect_swapped (menuitem, "activate", G_CALLBACK (update_text_direction), (gpointer) GTK_TEXT_DIR_RTL); // gtk-can-change-accels for GTK 3.2..3.24 | so same GTK 2.24 - 3.x accels_load (); g_object_set (gtk_settings_get_default (), "gtk-can-change-accels", FALSE, NULL); } static GtkWidget* create_menu (GtkWidget *root, gchar *text) { GtkWidget *menu, *menuitem; menu = gtk_menu_new (); menuitem = gtk_menu_item_new_with_mnemonic (text); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), menu); gtk_menu_shell_append (GTK_MENU_SHELL (root), menuitem); // gtk-can-change-accels for GTK 3.2..3.24 | so same GTK 2.24 - 3.x gtk_widget_set_events (menu, GDK_KEY_RELEASE_MASK); g_signal_connect (menu, "key-release-event", G_CALLBACK (accels_change), NULL); return menu; } static GtkWidget* create_menuitem_tearoff (GtkWidget *menu) { GtkWidget *menuitem; menuitem = gtk_tearoff_menu_item_new (); gtk_style_context_add_class (gtk_widget_get_style_context (menuitem), "tearoff"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); return menuitem; } static GtkWidget* create_menuitem_check (GtkWidget *menu, gchar *text, gboolean checked, gboolean inconsistent, gboolean disabled) { GtkWidget *menuitem; menuitem = gtk_check_menu_item_new_with_mnemonic (text); gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem), checked); gtk_check_menu_item_set_inconsistent (GTK_CHECK_MENU_ITEM (menuitem), inconsistent); gtk_widget_set_sensitive (menuitem, !disabled); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); return menuitem; } static GtkWidget* create_menuitem_radio (GtkWidget *menu, gchar *text, gboolean checked, gboolean inconsistent, gboolean disabled, GSList *group) { GtkWidget *menuitem; menuitem = gtk_radio_menu_item_new_with_mnemonic (group, text); gtk_check_menu_item_set_inconsistent (GTK_CHECK_MENU_ITEM (menuitem), inconsistent); gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem), checked); gtk_widget_set_sensitive (menuitem, !disabled); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); return menuitem; } static GtkWidget* create_menuitem (GtkWidget *menu, gchar *text, gboolean disabled, gchar *accel, gchar *keymap, GCallback function) { GtkWidget *menuitem; GdkModifierType mods; guint key; menuitem = gtk_image_menu_item_new_from_stock (text, NULL); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_menu_item_set_accel_path (GTK_MENU_ITEM (menuitem), keymap); gtk_widget_set_sensitive (menuitem, !disabled); if (accel) { gtk_accelerator_parse (accel, &key, &mods); gtk_accel_map_add_entry (keymap, key, mods); } if (function) g_signal_connect (menuitem, "activate", function, NULL); // gtk-can-change-accels for GTK 3.2..3.24 | so same GTK 2.24 - 3.x g_signal_connect (menuitem, "select", G_CALLBACK (accels_select), NULL); g_signal_connect (menuitem, "deselect", G_CALLBACK (accels_deselect), NULL); return menuitem; } static void accels_load () { // gtk-can-change-accels for GTK 3.2..3.24 | so same GTK 2.24 - 3.x gchar *path = g_build_filename ("/", g_getenv ("HOME"), ".awf-gtk-accels", NULL); if (g_file_test (path, G_FILE_TEST_IS_REGULAR)) gtk_accel_map_load (path); g_free (path); } static void accels_select (GtkWidget *widget) { // gtk-can-change-accels for GTK 3.2..3.24 | so same GTK 2.24 - 3.x current_menuitem = widget; } static void accels_deselect (GtkWidget *widget) { // gtk-can-change-accels for GTK 3.2..3.24 | so same GTK 2.24 - 3.x if (current_menuitem == widget) current_menuitem = NULL; } static void accels_change (GtkWidget *widget, GdkEventKey *event) { // gtk-can-change-accels for GTK 3.2..3.24 | so same GTK 2.24 - 3.x // @see https://gitlab.gnome.org/GNOME/gtk/-/commit/2d79334bb069224966b3dcd8456967c9800e8fd0 if (!current_menuitem) return; GtkMenuItem *menuitem = GTK_MENU_ITEM (current_menuitem); gchar *key = gdk_keyval_name (event->keyval); if ( !gtk_menu_item_get_accel_path (menuitem) || (strcmp (key, "Control_L") == 0) || (strcmp (key, "Control_R") == 0) || (strcmp (key, "Shift_L") == 0) || (strcmp (key, "Shift_R") == 0) || (strcmp (key, "Super_L") == 0) || (strcmp (key, "Super_R") == 0) || (strcmp (key, "Meta_L") == 0) || (strcmp (key, "Meta_R") == 0) || (strcmp (key, "Alt_L") == 0) || (strcmp (key, "Alt_R") == 0) ) { return; } if ( (event->keyval == GDK_KEY_Delete) || (event->keyval == GDK_KEY_KP_Delete) || (event->keyval == GDK_KEY_BackSpace) || // f1..12 ((event->keyval >= GDK_KEY_F1) && (event->keyval <= GDK_KEY_F12)) || // crtl/shift/super/alt + ? (event->state & GDK_CONTROL_MASK) || (event->state & GDK_SHIFT_MASK) || (event->state & GDK_SUPER_MASK) || (event->state & GDK_META_MASK) ) { must_save_accels = TRUE; if ((event->keyval == GDK_KEY_Delete) || (event->keyval == GDK_KEY_KP_Delete) || (event->keyval == GDK_KEY_BackSpace)) gtk_accel_map_change_entry (gtk_menu_item_get_accel_path (menuitem), 0, 0, TRUE); else gtk_accel_map_change_entry ( gtk_menu_item_get_accel_path (menuitem), gdk_keyval_to_lower (event->keyval), event->state & gtk_accelerator_get_default_mod_mask (), TRUE); } } static void accels_save () { // gtk-can-change-accels for GTK 3.2..3.24 | so same GTK 2.24 - 3.x if (must_save_accels) { gchar *path = g_build_filename ("/", g_getenv ("HOME"), ".awf-gtk-accels", NULL); gtk_accel_map_save (path); g_free (path); } } // dialogs static void dialog_open () { // @common gtk2/3 GtkWidget *dialog = gtk_file_chooser_dialog_new ( "GtkFileChooserDialog:Open", GTK_WINDOW (window), GTK_FILE_CHOOSER_ACTION_OPEN, "gtk-cancel", GTK_RESPONSE_CANCEL, "gtk-open", GTK_RESPONSE_ACCEPT, NULL); gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dialog), TRUE); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } static void dialog_recent () { // @common gtk2/3 GtkWidget *dialog = gtk_recent_chooser_dialog_new ( "GtkRecentChooserDialog", GTK_WINDOW (window), "gtk-cancel", GTK_RESPONSE_CANCEL, "gtk-open", GTK_RESPONSE_ACCEPT, NULL); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } static void dialog_save () { // @common gtk2/3 GtkWidget *dialog = gtk_file_chooser_dialog_new ( "GtkFileChooserDialog:Save", GTK_WINDOW (window), GTK_FILE_CHOOSER_ACTION_SAVE, "gtk-cancel", GTK_RESPONSE_CANCEL, "gtk-save", GTK_RESPONSE_ACCEPT, NULL); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } static void dialog_message () { // @common gtk2/3 GtkWidget *dialog = gtk_message_dialog_new ( GTK_WINDOW (window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_YES_NO, "GtkMessageDialog"); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), _app("A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme.")); gtk_window_set_title (GTK_WINDOW (dialog), "GtkMessageDialog"); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } static void dialog_page_setup () { // @common gtk2/3 GtkWidget *dialog = gtk_page_setup_unix_dialog_new ("GtkPageSetupUnixDialog", GTK_WINDOW (window)); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } static void dialog_print () { // @common gtk2/3 GtkWidget *dialog = gtk_print_unix_dialog_new ("GtkPrintUnixDialog", GTK_WINDOW (window)); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } static void dialog_about () { // @common gchar *t1, *t2, *t3, *t4; gtk_show_about_dialog (GTK_WINDOW (window), "version", VERSION, "comments", t1 = g_strdup_printf ("%s\n\n%s\n%s\n\n%s\n%s", _app("A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme."), t2 = g_strdup_printf (_app("Remove %s file"), "~/.awf-gtk-accels"), _app("to reset keyboard shortcuts."), t3 = g_strdup_printf (_app("compiled with gtk %d.%d.%d and glib %d.%d.%d and pango %s"), GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION, GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION, PANGO_VERSION_STRING), t4 = g_strdup_printf (_app(" started with gtk %d.%d.%d and glib %d.%d.%d and pango %s"), gtk_major_version, gtk_minor_version, gtk_micro_version, glib_major_version, glib_minor_version, glib_micro_version, pango_version_string ()) ), "website", "https://github.com/luigifab/awf-extended", "copyright", "Copyright © 2020-2025 Fabrice Creuzot (luigifab)\nCopyright © 2011-2017 Valère Monseur (valr)", "icon-name", GETTEXT_PACKAGE, "logo-icon-name", GETTEXT_PACKAGE, "license", "A widget factory is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.", "wrap-license", TRUE, NULL); g_free (t1); g_free (t2); g_free (t3); g_free (t4); } static void dialog_calendar () { // @common gtk2/3 GtkWidget *dialog, *infobar, *label, *calendar, *vbox = BOXV, *area; dialog = gtk_dialog_new_with_buttons ( NULL, GTK_WINDOW (window), GTK_DIALOG_DESTROY_WITH_PARENT, NULL, NULL); // info bars and calendar infobar = gtk_info_bar_new_with_buttons ("gtk-ok", GTK_RESPONSE_OK, NULL); gtk_info_bar_set_message_type (GTK_INFO_BAR (infobar), GTK_MESSAGE_INFO); label = gtk_label_new (_app("This is an info bar.")); add_to (GTK_BOX (infobar), label, FALSE, FALSE, 0, 0); add_to (GTK_BOX (vbox), infobar, FALSE, FALSE, 0, 0); infobar = gtk_info_bar_new_with_buttons (_app("Ok"), GTK_RESPONSE_OK, NULL); gtk_info_bar_set_message_type (GTK_INFO_BAR (infobar), GTK_MESSAGE_QUESTION); label = gtk_label_new (_app("This is a question bar.")); add_to (GTK_BOX (infobar), label, FALSE, FALSE, 0, 0); add_to (GTK_BOX (vbox), infobar, FALSE, FALSE, 0, 0); infobar = gtk_info_bar_new (); gtk_info_bar_set_message_type (GTK_INFO_BAR (infobar), GTK_MESSAGE_WARNING); label = gtk_label_new (_app("This is a warning bar.")); add_to (GTK_BOX (infobar), label, FALSE, FALSE, 0, 0); add_to (GTK_BOX (vbox), infobar, FALSE, FALSE, 0, 0); infobar = gtk_info_bar_new (); gtk_info_bar_set_message_type (GTK_INFO_BAR (infobar), GTK_MESSAGE_ERROR); label = gtk_label_new (_app("This is an error bar.")); add_to (GTK_BOX (infobar), label, FALSE, FALSE, 0, 0); add_to (GTK_BOX (vbox), infobar, FALSE, FALSE, 0, 0); calendar = gtk_calendar_new (); gtk_calendar_set_display_options (GTK_CALENDAR (calendar), GTK_CALENDAR_SHOW_HEADING | GTK_CALENDAR_SHOW_DAY_NAMES | GTK_CALENDAR_SHOW_WEEK_NUMBERS); add_to (GTK_BOX (vbox), calendar, FALSE, FALSE, 0, 0); // dialog area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); add_to (GTK_BOX (area), vbox, TRUE, TRUE, 5, 5); gtk_dialog_add_button (GTK_DIALOG (dialog), "gtk-cancel", 0); gtk_dialog_add_button (GTK_DIALOG (dialog), "gtk-ok", 0); gtk_widget_show_all (dialog); gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); gtk_widget_set_size_request (dialog, 350, -1); gtk_window_set_title (GTK_WINDOW (dialog), "GtkDialog"); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } static void dialog_scales_top () { // @common dialog_scales (GTK_POS_TOP); } static void dialog_scales_bottom () { // @common dialog_scales (GTK_POS_BOTTOM); } static void dialog_scales_right () { // @common dialog_scales (GTK_POS_RIGHT); } static void dialog_scales_left () { // @common dialog_scales (GTK_POS_LEFT); } static void dialog_scales (int position) { GtkWidget *dialog, *area, *hbox = BOXH; GtkWidget *vbox1 = BOXV, *vbox2 = BOXV, *vbox3 = BOXV, *hboxa = BOXH, *hboxb = BOXH; GtkWidget *scale1v, *scale2v, *scale3v, *scale4v, *scale5v, *scale6v, *scale7v, *scale8v, *scale9v, *scale10v, *scale11v, *scale12v; GtkWidget *scale1h, *scale2h, *scale3h, *scale4h, *scale5h, *scale6h, *scale7h, *scale8h, *scale9h, *scale10h, *scale11h, *scale12h; gdouble value = gtk_range_get_value (GTK_RANGE (scale1)); dialog = gtk_dialog_new_with_buttons ( NULL, GTK_WINDOW (window), GTK_DIALOG_DESTROY_WITH_PARENT, NULL, NULL); // vertical scales scale1v = create_vertical_scale (value, FALSE, FALSE, position); if (gtk_widget_get_direction (window) == GTK_TEXT_DIR_RTL) // @todo highlight bottom instead of top, why? gtk_style_context_add_class (gtk_widget_get_style_context (scale1v), "top"); scale2v = create_vertical_scale (value, FALSE, FALSE, position); update_marks (GTK_SCALE (scale2v), FALSE, GTK_POS_LEFT); if (gtk_widget_get_direction (window) == GTK_TEXT_DIR_RTL) // @todo highlight bottom instead of top, why? gtk_style_context_add_class (gtk_widget_get_style_context (scale2v), "top"); scale3v = create_vertical_scale (value, FALSE, FALSE, position); update_marks (GTK_SCALE (scale3v), TRUE, GTK_POS_LEFT); if (gtk_widget_get_direction (window) == GTK_TEXT_DIR_RTL) // @todo highlight bottom instead of top, why? gtk_style_context_add_class (gtk_widget_get_style_context (scale3v), "top"); scale4v = create_vertical_scale (value, TRUE, FALSE, position); if (gtk_widget_get_direction (window) == GTK_TEXT_DIR_RTL) // @todo highlight bottom instead of top, why? gtk_style_context_add_class (gtk_widget_get_style_context (scale4v), "top"); scale5v = create_vertical_scale (value, TRUE, FALSE, position); update_marks (GTK_SCALE (scale5v), FALSE, GTK_POS_LEFT); if (gtk_widget_get_direction (window) == GTK_TEXT_DIR_RTL) // @todo highlight bottom instead of top, why? gtk_style_context_add_class (gtk_widget_get_style_context (scale5v), "top"); scale6v = create_vertical_scale (value, TRUE, FALSE, position); update_marks (GTK_SCALE (scale6v), TRUE, GTK_POS_LEFT); if (gtk_widget_get_direction (window) == GTK_TEXT_DIR_RTL) // @todo highlight bottom instead of top, why? gtk_style_context_add_class (gtk_widget_get_style_context (scale6v), "top"); scale7v = create_vertical_scale (value, FALSE, TRUE, position); scale8v = create_vertical_scale (value, FALSE, TRUE, position); update_marks (GTK_SCALE (scale8v), FALSE, GTK_POS_RIGHT); scale9v = create_vertical_scale (value, FALSE, TRUE, position); update_marks (GTK_SCALE (scale9v), TRUE, GTK_POS_RIGHT); scale10v = create_vertical_scale (value, TRUE, TRUE, position); scale11v = create_vertical_scale (value, TRUE, TRUE, position); update_marks (GTK_SCALE (scale11v), FALSE, GTK_POS_RIGHT); scale12v = create_vertical_scale (value, TRUE, TRUE, position); update_marks (GTK_SCALE (scale12v), TRUE, GTK_POS_RIGHT); // horizontal scales scale1h = create_horizontal_scale (value, FALSE, FALSE, position); scale2h = create_horizontal_scale (value, FALSE, FALSE, position); update_marks (GTK_SCALE (scale2h), FALSE, GTK_POS_TOP); scale3h = create_horizontal_scale (value, FALSE, FALSE, position); update_marks (GTK_SCALE (scale3h), TRUE, GTK_POS_TOP); scale4h = create_horizontal_scale (value, TRUE, FALSE, position); scale5h = create_horizontal_scale (value, TRUE, FALSE, position); update_marks (GTK_SCALE (scale5h), FALSE, GTK_POS_TOP); scale6h = create_horizontal_scale (value, TRUE, FALSE, position); update_marks (GTK_SCALE (scale6h), TRUE, GTK_POS_TOP); scale7h = create_horizontal_scale (value, FALSE, TRUE, position); scale8h = create_horizontal_scale (value, FALSE, TRUE, position); update_marks (GTK_SCALE (scale8h), FALSE, GTK_POS_BOTTOM); scale9h = create_horizontal_scale (value, FALSE, TRUE, position); update_marks (GTK_SCALE (scale9h), TRUE, GTK_POS_BOTTOM); scale10h = create_horizontal_scale (value, TRUE, TRUE, position); scale11h = create_horizontal_scale (value, TRUE, TRUE, position); update_marks (GTK_SCALE (scale11h), FALSE, GTK_POS_BOTTOM); scale12h = create_horizontal_scale (value, TRUE, TRUE, position); update_marks (GTK_SCALE (scale12h), TRUE, GTK_POS_BOTTOM); // dialog area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); add_to (GTK_BOX (area), hbox, TRUE, TRUE, 5, 5); add_to (GTK_BOX (hbox), vbox1, TRUE, TRUE, 5, 5); add_to (GTK_BOX (vbox1), scale1h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox1), scale2h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox1), scale3h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox1), scale4h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox1), scale5h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox1), scale6h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hbox), vbox2, TRUE, TRUE, 5, 5); add_to (GTK_BOX (vbox2), hboxa, TRUE, TRUE, 0, 0); add_to (GTK_BOX (hboxa), scale1v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxa), scale2v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxa), scale3v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxa), scale7v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxa), scale8v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxa), scale9v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox2), hboxb, TRUE, TRUE, 0, 0); add_to (GTK_BOX (hboxb), scale4v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxb), scale5v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxb), scale6v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxb), scale10v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxb), scale11v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxb), scale12v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hbox), vbox3, TRUE, TRUE, 5, 5); add_to (GTK_BOX (vbox3), scale7h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox3), scale8h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox3), scale9h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox3), scale10h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox3), scale11h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox3), scale12h, FALSE, FALSE, 5, 5); gtk_dialog_add_button (GTK_DIALOG (dialog), "gtk-cancel", 0); gtk_dialog_add_button (GTK_DIALOG (dialog), "gtk-ok", 0); gtk_widget_show_all (dialog); gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); gtk_window_set_title (GTK_WINDOW (dialog), "GtkDialog"); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } // gtk-scroll-tabs for GTK 3.4..3.24 | so same 2.24 - 3.x - 4.x // @see https://github.com/mate-desktop/mate-control-center/blob/master/capplets/common/capplet-util.c // for on_scrolltabs source function is capplet_dialog_page_scroll_event_cb // of mate-appearance-properties from mate-control-center, GNU GPL 2.0+ #if GTK_CHECK_VERSION (3,4,0) static gboolean on_scrolltabs (GtkWidget *widget, GdkEventScroll *event) { // gtk-scroll-tabs for GTK 3.4..3.24 | so same 2.24 - 3.x - 4.x GtkWidget *child, *event_widget, *action_widget; GtkNotebook *notebook; while (!GTK_IS_NOTEBOOK (widget)) { widget = gtk_widget_get_parent (widget);} notebook = GTK_NOTEBOOK (widget); child = gtk_notebook_get_nth_page (notebook, gtk_notebook_get_current_page (notebook)); if (child == NULL) return FALSE; // ignore scroll events from the content of the page event_widget = gtk_get_event_widget ((GdkEvent*) event); if (event_widget == NULL || event_widget == child || gtk_widget_is_ancestor (event_widget, child)) return FALSE; // and also from the action widgets action_widget = gtk_notebook_get_action_widget (notebook, GTK_PACK_START); if (event_widget == action_widget || (action_widget != NULL && gtk_widget_is_ancestor (event_widget, action_widget))) return FALSE; action_widget = gtk_notebook_get_action_widget (notebook, GTK_PACK_END); if (event_widget == action_widget || (action_widget != NULL && gtk_widget_is_ancestor (event_widget, action_widget))) return FALSE; switch (event->direction) { case GDK_SCROLL_RIGHT: case GDK_SCROLL_DOWN: gtk_notebook_next_page (notebook); break; case GDK_SCROLL_LEFT: case GDK_SCROLL_UP: gtk_notebook_prev_page (notebook); break; case GDK_SCROLL_SMOOTH: switch (gtk_notebook_get_tab_pos (notebook)) { case GTK_POS_LEFT: case GTK_POS_RIGHT: if (event->delta_y > 0) gtk_notebook_next_page (notebook); else if (event->delta_y < 0) gtk_notebook_prev_page (notebook); break; case GTK_POS_TOP: case GTK_POS_BOTTOM: if (event->delta_x > 0) gtk_notebook_next_page (notebook); else if (event->delta_x < 0) gtk_notebook_prev_page (notebook); break; } break; } return TRUE; } #endif awf-extended-2.9.0/src/awf-gtk4.c000066400000000000000000003021531477403510000164610ustar00rootroot00000000000000/** * Forked M/10/03/2020 * Updated L/31/03/2025 * * Copyright 2020-2025 | Fabrice Creuzot (luigifab) * https://github.com/luigifab/awf-extended * https://www.luigifab.fr/gtk/awf-extended * * Forked from * Copyright 2011-2017 | Valère Monseur (valr) * https://github.com/valr/awf * * Forked from * AWF is originally based on the code from The Widget Factory * created by Richard Stellingwerff * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published * by the free software foundation, either version 3 of the license, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but without any warranty, without even the implied warranty of * merchantability or fitness for a particular purpose. See the * GNU General Public License (GPL) for more details. * * * Translations update: * xgettext --keyword=_app -d awf -o src/awf.pot -k_ -s src/awf-gtk*.c * msgmerge src/po/fr.po src/awf.pot -o src/po/fr.po * msgfmt src/po/fr.po -o src/fr/LC_MESSAGES/awf.mo * * Tested with build.sh (via VirtualBox 7.0) with: * Debian Testing 64 (1536 MB) GTK 2.24/3.24/4.18 + GLIB 2.84 + Pango 1.56 * Fedora Rawhide 64 (1536 MB) GTK 2.24/3.24/4.18 + GLIB 2.84 + Pango 1.56 * Ubuntu 24.10 Oracular Oriole 64 (4096 MB) GTK 2.24/3.24/4.16 + GLIB 2.82 + Pango 1.54 * Ubuntu 24.04 Noble Numbat 64 (4096 MB) GTK 2.24/3.24/4.14 + GLIB 2.80 + Pango 1.52 * Ubuntu 23.10 Mantic Minotaur 64 (3072 MB) GTK 2.24/3.24/4.12 + GLIB 2.78 + Pango 1.51 * Ubuntu 23.04 Lunar Lobster 64 (3072 MB) GTK 2.24/3.24/4.10 + GLIB 2.76 + Pango 1.50 * Ubuntu 22.10 Kinetic Kudu 64 (2176 MB) GTK 2.24/3.24/4.8 + GLIB 2.74 + Pango 1.50 * Ubuntu 22.04 Jammy Jellyfish 64 (2176 MB) GTK 2.24/3.24/4.6 + GLIB 2.72 + Pango 1.50 * Ubuntu 21.10 Impish Indri 64 (2176 MB) GTK 2.24/3.24/4.4 + GLIB 2.68 + Pango 1.48 * Ubuntu 21.04 Hirsute Hippo 64 (2176 MB) GTK 2.24/3.24/4.0 + GLIB 2.68 + Pango 1.48 * Ubuntu 17.04 Zesty Zapus 32 (1536 MB) GTK 2.24/3.22 + GLIB 2.52 + Pango 1.40 * Ubuntu 16.10 Yakkety Yak 32 (1536 MB) GTK 2.24/3.20 + GLIB 2.50 + Pango 1.40 * Ubuntu 16.04 Xenial Xerus 32 (1536 MB) GTK 2.24/3.18 + GLIB 2.48 + Pango 1.38 * Ubuntu 15.10 Wily Werewolf 32 (1024 MB) GTK 2.24/3.16 + GLIB 2.46 + Pango 1.36 * Ubuntu 15.04 Vivid Vervet 32 (1024 MB) GTK 2.24/3.14 + GLIB 2.44 + Pango 1.36 * Ubuntu 14.10 Utopic Unicorn 32 (1024 MB) GTK 2.24/3.12 + GLIB 2.42 + Pango 1.36 * Ubuntu 14.04 Trusty Tahr 32 (1024 MB) GTK 2.24/3.10 + GLIB 2.40 + Pango 1.36 * Ubuntu 13.10 Saucy Salamander 32 (1024 MB) GTK 2.24/3.8 + GLIB 2.38 + Pango 1.32 * Ubuntu 13.04 Raring Ringtail 32 (1024 MB) GTK 2.24/3.6 + GLIB 2.36 + Pango 1.32 * Ubuntu 12.04 Precise Pangolin 32 (1024 MB) GTK 2.24/3.4 + GLIB 2.32 + Pango 1.30 * Ubuntu 11.10 Oneiric Ocelot 32 (1024 MB) GTK 2.24/3.2 + GLIB 2.30 + Pango 1.29 * Ubuntu 11.04 Natty Narwhal 32 (1024 MB) GTK 2.24/3.0 + GLIB 2.28 + Pango 1.28 */ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #include #include #include #include #include #include #include #include #if GLIB_CHECK_VERSION (2,30,0) #include #endif #pragma GCC diagnostic pop #define GETTEXT_PACKAGE g_strdup_printf ("awf-gtk%d", GTK_MAJOR_VERSION) #define BOXH (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0)) #define BOXV (gtk_box_new (GTK_ORIENTATION_VERTICAL, 0)) #define SEPH (gtk_separator_new (GTK_ORIENTATION_HORIZONTAL)) #define SEPV (gtk_separator_new (GTK_ORIENTATION_VERTICAL)) #define PANEH (gtk_paned_new (GTK_ORIENTATION_HORIZONTAL)) #define PANEV (gtk_paned_new (GTK_ORIENTATION_VERTICAL)) #define gtk_major_version gtk_get_major_version () #define gtk_minor_version gtk_get_minor_version () #define gtk_micro_version gtk_get_micro_version () #define AWF_OPEN "/Test/Open" #define AWF_RECE "/Test/Recent" #define AWF_CALE "/Test/Calendar" #define AWF_SCAT "/Test/ScalesTop" #define AWF_SCAB "/Test/ScalesBottom" #define AWF_SCAR "/Test/ScalesRight" #define AWF_SCAL "/Test/ScalesLeft" #define AWF_SAVE "/Test/Save" #define AWF_REFR "/Test/Refresh" #define AWF_PROP "/Test/Properties" #define AWF_PRSE "/Test/PrintSetup" #define AWF_PRIN "/Test/Print" #define AWF_ABOU "/Test/About" #define AWF_MCUT "/Test/More/Cut" #define AWF_MCOP "/Test/More/Copy" #define AWF_MPAS "/Test/More/Past" #define AWF_CLOS "/Test/Close" #define AWF_QUIT "/Test/Quit" #define AWF_ACCEL_OPEN "O" #define AWF_ACCEL_RECE NULL #define AWF_ACCEL_CALE NULL #define AWF_ACCEL_SCAT NULL #define AWF_ACCEL_SCAB NULL #define AWF_ACCEL_SCAR NULL #define AWF_ACCEL_SCAL NULL #define AWF_ACCEL_SAVE "S" #define AWF_ACCEL_REFR "F5" #define AWF_ACCEL_PROP "Return" #define AWF_ACCEL_PRSE "P" #define AWF_ACCEL_PRIN "P" #define AWF_ACCEL_ABOU "F1" #define AWF_ACCEL_MCUT "X" #define AWF_ACCEL_MCOP "C" #define AWF_ACCEL_MPAS "V" #define AWF_ACCEL_CLOS "W" #define AWF_ACCEL_QUIT "Q" // @see https://stackoverflow.com/a/10018581/2980105 #define _app(String) dgettext (GETTEXT_PACKAGE, String) #define _gtk(String) dgettext (g_strdup_printf ("gtk%d0", GTK_MAJOR_VERSION), String) // global variables static GSList *list_system_theme = NULL; static GSList *list_user_theme = NULL; static GtkWidget *window = NULL, *toolbar = NULL, *toolbarentry = NULL, *toolbarplus = NULL, *statusbar = NULL; static GtkWidget *volume1 = NULL, *volume2 = NULL; static GtkWidget *progressbar1 = NULL, *progressbar2 = NULL, *progressbar3 = NULL, *progressbar4 = NULL, *progressbar8 = NULL, *progressbar9 = NULL; static GtkWidget *scale1 = NULL, *scale2 = NULL, *scale3 = NULL, *scale4 = NULL, *scale5 = NULL, *scale6 = NULL; static GtkWidget *levelbar1 = NULL, *levelbar2 = NULL, *levelbar3 = NULL, *levelbar4 = NULL; static GtkWidget *levelbar5 = NULL, *levelbar6 = NULL, *levelbar7 = NULL, *levelbar8 = NULL; static GtkWidget *notebook1 = NULL, *notebook2 = NULL, *notebook3 = NULL, *notebook4 = NULL; //atic GtkWidget *current_menuitem = NULL; static int current_direction = GTK_TEXT_DIR_NONE; static gchar *current_theme = "auto"; static gchar *opt_theme = "auto"; static gchar *opt_screenshot = NULL; static gboolean opt_startspinner = TRUE; static gboolean allow_update_theme = TRUE; static gboolean must_save_accels = FALSE; // global functions static void quit (); static GSList* awf_load_theme (gchar *directory); static int awf_compare_theme (gconstpointer theme1, gconstpointer theme2); static void update_text_direction (int direction); static void update_window_size (); static void update_theme (gchar *new_theme); static void update_statusbar (gchar *message); static void update_values (GtkRange *range); static void update_widgets (); static void update_marks (GtkScale *scale, gboolean value, int position); static void display_notification (); static void find_and_update_labels (GtkWidget *widget, gboolean special); static gboolean on_notification_action (void *data); static gboolean on_sighup (void *data); static gboolean take_screenshot (void *data); static void create_window (gpointer app); static void create_widgets (GtkWidget *root); static void add_to (GtkBox *box, GtkWidget *widget, gboolean fill, gboolean expand, guint padding, guint spacing); static void add_progressbar_and_entrybar (); static void create_toolbar_items (GtkWidget *root); static void create_combos_entries (GtkWidget *root); static void create_spinbuttons (GtkWidget *root); static void create_checkbuttons (GtkWidget *root); static void create_radiobuttons (GtkWidget *root); static void create_otherbuttons (GtkWidget *root1, GtkWidget *root2, GtkWidget *root3, GtkWidget *root4, GtkWidget *root5); static void create_progressbars (GtkWidget *root1, GtkWidget *root2, GtkWidget *root3, GtkWidget *root4); static void create_labels (GtkWidget *root); static void create_spinners (GtkWidget *root); static void create_expander (GtkWidget *root); static void create_frames (GtkWidget *root1, GtkWidget *root2); static void create_notebooks (GtkWidget *root1, GtkWidget *root2); static void create_notebook_tab (GtkWidget *notebook, gchar *text, gboolean close); static void create_treview (GtkWidget *root); static GtkWidget* create_horizontal_scale (gdouble value, gboolean draw, gboolean inverted, int position); static GtkWidget* create_vertical_scale (gdouble value, gboolean draw, gboolean inverted, int position); static void create_traditional_menubar (GtkApplication *app, GMenu *root); static GMenuItem* create_menuitem (GtkApplication *app, GMenu *menu, gchar *text, gchar *accel, gchar *keymap, GCallback function); static void activate_action (GSimpleAction *action, GVariant *parameter, gpointer data); static void accels_change (GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state); static void accels_save (); static void closedialog (GtkDialog *dialog); static void dialog_open (); static void dialog_save (); static void dialog_message (); static void dialog_page_setup (); static void dialog_print (); static void dialog_about (); static void dialog_calendar (); static void dialog_scales_top (); static void dialog_scales_bottom (); static void dialog_scales_right (); static void dialog_scales_left (); static void dialog_scales (int position); static gboolean on_scrolltabs (GtkEventControllerScroll *event, double dx, double dy, GtkWidget *widget); // run run run int main (int argc, gchar **argv) { int opt = 0, status = 0; GSList *iterator = NULL; // load available themes list_system_theme = awf_load_theme ("/usr/share/themes"); list_system_theme = g_slist_sort (list_system_theme, (GCompareFunc) awf_compare_theme); gchar *directory = g_build_path ("/", g_getenv ("HOME"), ".themes", NULL); list_user_theme = awf_load_theme (directory); list_user_theme = g_slist_sort (list_user_theme, (GCompareFunc) awf_compare_theme); g_free (directory); // locale setlocale (LC_ALL, ""); if (g_file_test ("/usr/share/locale", G_FILE_TEST_IS_DIR)) bindtextdomain (GETTEXT_PACKAGE, "/usr/share/locale"); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); // init static struct option long_options[] = { {"version", no_argument, NULL, 'v'}, {"list-themes", no_argument, NULL, 'l'}, {"no-spinners", no_argument, NULL, 'n'}, {"theme", required_argument, NULL, 't'}, {"screenshot", required_argument, NULL, 's'}, {"help", no_argument, NULL, 'x'}, {"ltr", no_argument, NULL, 'y'}, {"rtl", no_argument, NULL, 'z'}, {NULL, 0, NULL, 0} }; while ((opt = getopt_long (argc, argv, "vlnt:s:hxyz", long_options, NULL)) != -1) { switch (opt) { // --version -v case 'v': g_printf ("%s\n", VERSION); return status; // --list-themes -l case 'l': for (iterator = list_system_theme; iterator; iterator = iterator->next) g_printf ("%s\n", (gchar*) iterator->data); for (iterator = list_user_theme; iterator; iterator = iterator->next) g_printf ("%s\n", (gchar*) iterator->data); return status; // --no-spinners -n case 'n': opt_startspinner = FALSE; // --theme -t case 't': if (g_slist_find_custom (list_system_theme, optarg, &awf_compare_theme) || g_slist_find_custom (list_user_theme, optarg, &awf_compare_theme)) opt_theme = (gchar*) optarg; break; // --screenshot -s case 's': opt_screenshot = optarg; break; // --ltr case 'y': current_direction = GTK_TEXT_DIR_LTR; break; // --rtl case 'z': current_direction = GTK_TEXT_DIR_RTL; break; // --help (via GtkApplication) -h case 'x': case 'h': default: if (opt == 'x') { #if GLIB_CHECK_VERSION (2,42,0) && GTK_CHECK_VERSION (3,4,0) break; #endif } g_printf ("%s\n\n %s %s\n %s %s\n %s %s\n %s %s\n %s %s\n %s %s\n %s %s\n\n%s\n%s\n", g_strdup_printf (_app("A widget factory - GTK %d.%d"), GTK_MAJOR_VERSION, GTK_MINOR_VERSION), "-v ", _app("Show version number."), "-l ", _app("List available themes."), "-n ", _app("Don't start spinners."), "-t ", _app("Run with the specified theme."), "-s ", g_strdup_printf (_app("Run and save a png screenshot on %s."), "SIGHUP"), "--ltr ", _app("Start with text from left to right (Left-To-Right)."), "--rtl ", _app("Start with text from right to left (Right-To-Left)."), g_strdup_printf (_app("compiled with gtk %d.%d.%d and glib %d.%d.%d and pango %s"), GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION, GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION, PANGO_VERSION_STRING), g_strdup_printf (_app(" started with gtk %d.%d.%d and glib %d.%d.%d and pango %s"), gtk_major_version, gtk_minor_version, gtk_micro_version, glib_major_version, glib_minor_version, glib_micro_version, pango_version_string ()) ); return status; } } // create and show window // @code specdific for gtk4 g_unix_signal_add (SIGHUP, on_sighup, NULL); GtkApplication *app = gtk_application_new ("org.gtk.awf", G_APPLICATION_NON_UNIQUE); g_signal_connect (app, "activate", G_CALLBACK (create_window), NULL); // --version -v g_application_add_main_option (G_APPLICATION (app), "version", 'v', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, _app("Show version number."), NULL); // --list-themes -l g_application_add_main_option (G_APPLICATION (app), "list-themes", 'l', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, _app("List available themes."), NULL); // --no-spinners -n g_application_add_main_option (G_APPLICATION (app), "no-spinners", 'n', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, _app("Don't start spinners."), NULL); // --theme -t g_application_add_main_option (G_APPLICATION (app), "theme", 't', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_STRING, _app("Run with the specified theme."), ""); // --screenshot -s g_application_add_main_option (G_APPLICATION (app), "screenshot", 's', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_STRING, g_strdup_printf (_app("Run and save a png screenshot on %s."), "SIGHUP"), ""); // --ltr g_application_add_main_option (G_APPLICATION (app), "ltr", 'y', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, _app("Start with text from left to right (Left-To-Right)."), NULL); // --rtl g_application_add_main_option (G_APPLICATION (app), "rtl", 'z', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, _app("Start with text from right to left (Right-To-Left)."), NULL); g_application_register (G_APPLICATION (app), NULL, NULL); return g_application_run (G_APPLICATION (app), argc, argv); } static void quit () { // @common accels_save (); exit (0); } static GSList* awf_load_theme (gchar *directory) { // @common GSList *list = NULL; g_return_val_if_fail (directory != NULL, NULL); if (g_file_test (directory, G_FILE_TEST_IS_DIR)) { GError *error = NULL; GDir *dir = g_dir_open (directory, 0, &error); if (dir) { gchar *theme = g_strdup (g_dir_read_name (dir)); gchar *gtkdir = g_strdup_printf ("gtk-%d.0", GTK_MAJOR_VERSION); while (theme) { gchar *theme_path = g_build_path ("/", directory, g_strstrip (theme), NULL); if (g_file_test (theme_path, G_FILE_TEST_IS_DIR)) { gchar *theme_subpath = g_build_path ("/", theme_path, gtkdir, NULL); if (g_file_test (theme_subpath, G_FILE_TEST_IS_DIR)) list = g_slist_prepend (list, theme); g_free (theme_subpath); } g_free (theme_path); theme = g_strdup (g_dir_read_name (dir)); } g_dir_close (dir); g_free (gtkdir); g_free (theme); } if (error) { g_fprintf (stderr, "unable to open directory: %s (%s)\n", directory, error->message); g_error_free (error); } } if (list) list = g_slist_reverse (list); return list; } static int awf_compare_theme (gconstpointer theme1, gconstpointer theme2) { // @common return g_strcmp0 ((gchar*) theme1, (gchar*) theme2); } static void update_text_direction (int direction) { // @common 80% // we must ignore the activate signal when menubar is created if (!allow_update_theme) return; if (((direction == GTK_TEXT_DIR_LTR) || (direction == 1)) && (gtk_widget_get_direction (window) != GTK_TEXT_DIR_LTR)) { gboolean toggle = gtk_notebook_get_scrollable (GTK_NOTEBOOK (notebook1)); current_direction = GTK_TEXT_DIR_LTR; gtk_widget_set_default_direction (current_direction); gtk_scale_clear_marks (GTK_SCALE (scale5)); update_marks (GTK_SCALE (scale5), toggle, GTK_POS_LEFT); gtk_scale_clear_marks (GTK_SCALE (scale6)); update_marks (GTK_SCALE (scale6), toggle, GTK_POS_RIGHT); } else if (((direction == GTK_TEXT_DIR_RTL) || (direction == 2)) && (gtk_widget_get_direction (window) != GTK_TEXT_DIR_RTL)) { gboolean toggle = gtk_notebook_get_scrollable (GTK_NOTEBOOK (notebook1)); gtk_scale_clear_marks (GTK_SCALE (scale5)); update_marks (GTK_SCALE (scale5), toggle, GTK_POS_RIGHT); gtk_scale_clear_marks (GTK_SCALE (scale6)); update_marks (GTK_SCALE (scale6), toggle, GTK_POS_LEFT); current_direction = GTK_TEXT_DIR_RTL; gtk_widget_set_default_direction (current_direction); } } static void update_window_size () { gtk_window_set_default_size (GTK_WINDOW (window), 50, 50); } static void update_theme (gchar *new_theme) { // @common // we must ignore the activate signal when menubar is created if (!allow_update_theme) return; if (strcmp ((gchar*) new_theme, "refresh") == 0) { gchar *default_theme = "None"; if (g_slist_find_custom (list_system_theme, "Default", &awf_compare_theme)) default_theme = "Default"; else if (g_slist_find_custom (list_system_theme, "Raleigh", &awf_compare_theme)) default_theme = "Raleigh"; if (default_theme) { g_object_set (gtk_settings_get_default (), "gtk-theme-name", default_theme, NULL); g_usleep (G_USEC_PER_SEC / 2); g_object_set (gtk_settings_get_default (), "gtk-theme-name", current_theme, NULL); // @todo? force reload of ".config/gtk*/gtk.css" gchar *text = g_strdup_printf (_app("Theme %s reloaded."), current_theme); update_statusbar (text); g_free (text); update_window_size (); if (opt_screenshot) g_timeout_add_seconds (1, take_screenshot, NULL); } } else if (strcmp ((gchar*) new_theme, "auto") == 0) { g_object_get (gtk_settings_get_default (), "gtk-theme-name", ¤t_theme, NULL); update_window_size (); } else if (strcmp ((gchar*) current_theme, (gchar*) new_theme) != 0) { g_object_set (gtk_settings_get_default (), "gtk-theme-name", new_theme, NULL); g_object_get (gtk_settings_get_default (), "gtk-theme-name", ¤t_theme, NULL); //g_settings_set_string (g_settings_new ("org.mate.Marco.general"), "theme", (gchar*) current_theme); gchar *text = g_strdup_printf (_app("Theme %s loaded."), current_theme); update_statusbar (text); g_free (text); update_window_size (); } } static void update_statusbar (gchar *message) { // @common if (statusbar) { char buffer[12]; time_t rawtime; time (&rawtime); strftime (buffer, sizeof buffer, "%T", localtime (&rawtime)); gchar *text = g_strdup_printf ("%s - %s", buffer, message); gtk_statusbar_push (GTK_STATUSBAR (statusbar), gtk_statusbar_get_context_id (GTK_STATUSBAR (statusbar), "gné"), text); g_free (text); } } static void update_values (GtkRange *range) { double value = gtk_range_get_value (range); // range (0..1) gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar1), value / 100.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar2), value / 100.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar3), value / 100.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar4), value / 100.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar8), value / 100.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar9), value / 100.0); // range (0..1) gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar1), value / 100.0); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar2), value / 100.0); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar5), value / 100.0); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar6), value / 100.0); // range (0..5) gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar3), value / 100.0 * gtk_level_bar_get_max_value (GTK_LEVEL_BAR (levelbar3))); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar4), value / 100.0 * gtk_level_bar_get_max_value (GTK_LEVEL_BAR (levelbar4))); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar7), value / 100.0 * gtk_level_bar_get_max_value (GTK_LEVEL_BAR (levelbar7))); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar8), value / 100.0 * gtk_level_bar_get_max_value (GTK_LEVEL_BAR (levelbar8))); // range (0..1) gtk_scale_button_set_value (GTK_SCALE_BUTTON (volume1), value / 100.0); // range (0..100) if (scale1 != (GtkWidget*) range) gtk_range_set_value (GTK_RANGE (scale1), value); if (scale2 != (GtkWidget*) range) gtk_range_set_value (GTK_RANGE (scale2), value); if (scale3 != (GtkWidget*) range) gtk_range_set_value (GTK_RANGE (scale3), value); if (scale4 != (GtkWidget*) range) gtk_range_set_value (GTK_RANGE (scale4), value); if (scale5 != (GtkWidget*) range) gtk_range_set_value (GTK_RANGE (scale5), value); if (scale6 != (GtkWidget*) range) gtk_range_set_value (GTK_RANGE (scale6), value); gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR (progressbar8), value > 50); gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR (progressbar9), value > 50); } static void update_widgets () { // function called when user click on [+] toolbar button // when toggle = true, the [+] toolbar button is NOT checked gboolean toggle = gtk_notebook_get_scrollable (GTK_NOTEBOOK (notebook1)); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook1), !toggle); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook2), !toggle); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook3), !toggle); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook4), !toggle); gtk_widget_set_sensitive (scale2, toggle); gtk_widget_set_sensitive (scale4, toggle); gtk_widget_set_sensitive (scale6, toggle); gtk_widget_set_sensitive (progressbar2, toggle); gtk_widget_set_sensitive (progressbar4, toggle); gtk_widget_set_sensitive (levelbar2, toggle); gtk_widget_set_sensitive (levelbar4, toggle); gtk_widget_set_sensitive (levelbar6, toggle); gtk_widget_set_sensitive (levelbar8, toggle); gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR (progressbar1), !toggle); gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR (progressbar2), !toggle); gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR (progressbar3), !toggle); gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR (progressbar4), !toggle); gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR (progressbar8), FALSE); gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR (progressbar9), FALSE); // via add_progressbar_and_entrybar // show progressbar in toolbar and statusbar when [+] toolbar button is NOT checked if (toggle) { gtk_widget_set_visible (progressbar8, FALSE); gtk_widget_set_visible (progressbar9, FALSE); gtk_widget_set_visible (toolbarentry, FALSE); } else { gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar8), 0.0); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar9), 0.0); gtk_widget_set_visible (progressbar8, TRUE); gtk_widget_set_visible (progressbar9, TRUE); gtk_widget_set_visible (toolbarentry, TRUE); } gtk_scale_clear_marks (GTK_SCALE (scale5)); update_marks (GTK_SCALE (scale5), !toggle, GTK_POS_LEFT); gtk_scale_clear_marks (GTK_SCALE (scale6)); update_marks (GTK_SCALE (scale6), !toggle, GTK_POS_RIGHT); update_window_size (); } static void update_marks (GtkScale *scale, gboolean value, int position) { // @common if (value) { gtk_scale_add_mark (scale, 0, position, NULL); gtk_scale_add_mark (scale, 25, position, "25"); gtk_scale_add_mark (scale, 50, position, "50"); gtk_scale_add_mark (scale, 75, position, "75"); gtk_scale_add_mark (scale, 100, position, NULL); } else { gtk_scale_add_mark (scale, 0, position, NULL); gtk_scale_add_mark (scale, 25, position, NULL); gtk_scale_add_mark (scale, 50, position, NULL); gtk_scale_add_mark (scale, 75, position, NULL); gtk_scale_add_mark (scale, 100, position, NULL); } } static void display_notification () { // @common if (notify_init (GETTEXT_PACKAGE)) { // Ubuntu 11.04 with libnotify-dev 0.5.x, so you must use libnotify-dev 0.7.x from Ubuntu 11.10 NotifyNotification *notif = notify_notification_new (GETTEXT_PACKAGE, _app("A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme."), "dialog-information"); notify_notification_add_action (notif, "nothing", _gtk("Close"), NOTIFY_ACTION_CALLBACK (on_notification_action), NULL, NULL); notify_notification_add_action (notif, "close", _gtk("Close"), NOTIFY_ACTION_CALLBACK (on_notification_action), NULL, NULL); notify_notification_set_timeout (notif, 50000); notify_notification_show (notif, NULL); g_object_unref (G_OBJECT (notif)); notify_uninit (); } } static void find_and_update_labels (GtkWidget *widget, gboolean special) { // with ChatGPT if (GTK_IS_LABEL (widget)) { gtk_label_set_ellipsize (GTK_LABEL (widget), PANGO_ELLIPSIZE_END); } else { GtkWidget *child = gtk_widget_get_first_child (widget); while (child) { find_and_update_labels (child, FALSE); child = gtk_widget_get_next_sibling (child); } } } static gboolean on_notification_action (void *data) { // @common return FALSE; } static gboolean on_sighup (void *data) { // @common update_theme ("refresh"); #if defined (G_SOURCE_CONTINUE) return G_SOURCE_CONTINUE; #else return TRUE; // glib < 2.32 #endif } static gboolean take_screenshot (void *data) { // @common 50% GdkPixbuf *image = NULL; int width = 0, height = 0; width = gtk_widget_get_width (window); height = gtk_widget_get_height (window); //GtkSnapshot *snapshot = gtk_snapshot_new (); // @todo https://stackoverflow.com/q/78771600 //GskRenderNode *node = gtk_snapshot_free_to_node (snapshot); //cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height); //cairo_t *cr = cairo_create (surface); //image = gdk_pixbuf_get_from_surface (surface, 0, 0, width, height); //cairo_destroy (cr); //cairo_surface_destroy (surface); if (image) { gdk_pixbuf_save (image, opt_screenshot, "png", NULL, "compression", "9", NULL); g_object_unref (image); gchar *text = g_strdup_printf (_app("Theme reloaded, then screenshot saved (%s)."), opt_screenshot); update_statusbar (text); g_free (text); } return FALSE; } // layout and widgets static void create_window (gpointer app) { GtkWidget *vbox_window, *widgets; gchar *text; // window window = gtk_application_window_new (GTK_APPLICATION (app)); gtk_widget_set_name (GTK_WIDGET (window), "AwfMainWindow"); gtk_window_set_icon_name (GTK_WINDOW (window), GETTEXT_PACKAGE); text = g_strdup_printf (_app("A widget factory - GTK %d.%d"), GTK_MAJOR_VERSION, GTK_MINOR_VERSION); gtk_window_set_title (GTK_WINDOW (window), text); g_free (text); // theme auto or from command line if (strcmp ((gchar*) current_theme, (gchar*) opt_theme) != 0) update_theme (opt_theme); else update_theme (current_theme); allow_update_theme = FALSE; if (current_direction == GTK_TEXT_DIR_NONE) current_direction = gtk_widget_get_default_direction (); // layout vbox_window = BOXV; gtk_window_set_child (GTK_WINDOW (window), vbox_window); GMenu *gmm = g_menu_new (); create_traditional_menubar (app, gmm); gtk_application_set_menubar (app, G_MENU_MODEL (gmm)); gtk_application_window_set_show_menubar (GTK_APPLICATION_WINDOW (window), TRUE); toolbar = BOXH; gtk_widget_add_css_class (toolbar, "primary-toolbar"); add_to (GTK_BOX (vbox_window), toolbar, FALSE, FALSE, 0, 0); create_toolbar_items (toolbar); widgets = BOXV; add_to (GTK_BOX (vbox_window), widgets, TRUE, TRUE, 0, 0); create_widgets (widgets); statusbar = gtk_statusbar_new (); // via add_progressbar_and_entrybar // for the progressbar of the statusbar, before adding statusbar gtk_widget_set_halign (gtk_widget_get_first_child (statusbar), GTK_ALIGN_FILL); // statusbar > box gtk_widget_set_hexpand (gtk_widget_get_first_child (statusbar), TRUE); // statusbar > box gtk_widget_set_hexpand (gtk_widget_get_first_child (gtk_widget_get_first_child (statusbar)), TRUE); // statusbar > box > label add_to (GTK_BOX (vbox_window), statusbar, FALSE, FALSE, 0, 0); text = g_strdup_printf (_app("Theme %s loaded."), current_theme); update_statusbar (text); g_free (text); // go go go allow_update_theme = TRUE; update_text_direction (current_direction); g_signal_connect (window, "destroy", G_CALLBACK (quit), NULL); // @todo //GtkEventController *event; //event = gtk_event_controller_key_new (); //g_signal_connect (event, "key-released", G_CALLBACK (accels_change), window); //gtk_widget_add_controller (window, event); gtk_widget_set_visible (window, TRUE); add_progressbar_and_entrybar (); } static void create_widgets (GtkWidget *root) { // @common 50% GtkWidget *hbox_columns = BOXH; GtkWidget *vbox_column1 = BOXV, *vbox_combo_entry = BOXV, *hbox_spin = BOXH, *hbox_check_radio = BOXH, *vbox_check = BOXV, *vbox_radio = BOXV; GtkWidget *vbox_column2 = BOXV, *vbox_buttons = BOXV, *hbox_btns1 = BOXH, *hbox_btns2 = BOXH, *hbox_btns3 = BOXH, *hbox_btns4 = BOXH; GtkWidget *vbox_column3 = BOXV, *vbox_progressbar1 = BOXV, *vbox_progressbar2 = BOXV, *hbox_progressbar1 = BOXH, *hbox_progressbar2 = BOXH; GtkWidget *vbox_column4 = BOXV, *vbox_others = BOXV, *hbox_label = BOXH, *hbox_spinner = BOXH; GtkWidget *vpane = PANEV, *hpane1 = PANEH, *hpane2 = PANEH; GtkWidget *hbox_frame1 = BOXH, *hbox_frame2 = BOXH, *hbox_notebook1 = BOXH, *hbox_notebook2 = BOXH; // columns layout add_to (GTK_BOX (root), hbox_columns, TRUE, TRUE, 0, 0); // column 1 add_to (GTK_BOX (hbox_columns), vbox_column1, TRUE, TRUE, 5, 0); add_to (GTK_BOX (vbox_column1), vbox_combo_entry, FALSE, TRUE, 5, 3); create_combos_entries (vbox_combo_entry); add_to (GTK_BOX (vbox_column1), hbox_spin, FALSE, FALSE, 5, 0); create_spinbuttons (hbox_spin); add_to (GTK_BOX (vbox_column1), hbox_check_radio, FALSE, TRUE, 5, 0); add_to (GTK_BOX (hbox_check_radio), vbox_check, TRUE, TRUE, 0, 0); create_checkbuttons (vbox_check); add_to (GTK_BOX (hbox_check_radio), vbox_radio, TRUE, TRUE, 0, 0); create_radiobuttons (vbox_radio); add_to (GTK_BOX (hbox_columns), SEPV, FALSE, FALSE, 0, 0); // column 2 add_to (GTK_BOX (hbox_columns), vbox_column2, TRUE, TRUE, 5, 0); add_to (GTK_BOX (vbox_column2), vbox_buttons, FALSE, TRUE, 5, 3); add_to (GTK_BOX (vbox_column2), hbox_btns1, FALSE, FALSE, 5, 3); add_to (GTK_BOX (vbox_column2), hbox_btns2, FALSE, FALSE, 5, 3); add_to (GTK_BOX (vbox_column2), hbox_btns3, FALSE, FALSE, 5, 3); add_to (GTK_BOX (vbox_column2), hbox_btns4, FALSE, FALSE, 5, 3); create_otherbuttons (vbox_buttons, hbox_btns1, hbox_btns2, hbox_btns3, hbox_btns4); add_to (GTK_BOX (hbox_columns), SEPV, FALSE, FALSE, 0, 0); // column 3 add_to (GTK_BOX (hbox_columns), vbox_column3, TRUE, TRUE, 5, 0); add_to (GTK_BOX (vbox_column3), vbox_progressbar1, FALSE, TRUE, 6, 10); add_to (GTK_BOX (vbox_column3), hbox_progressbar1, FALSE, FALSE, 5, 10); add_to (GTK_BOX (vbox_column3), hbox_progressbar2, FALSE, FALSE, 5, 10); add_to (GTK_BOX (vbox_column3), vbox_progressbar2, FALSE, TRUE, 5, 10); create_progressbars (vbox_progressbar1, hbox_progressbar1, hbox_progressbar2, vbox_progressbar2); add_to (GTK_BOX (hbox_columns), SEPV, FALSE, FALSE, 0, 0); // column 4 add_to (GTK_BOX (hbox_columns), vbox_column4, TRUE, TRUE, 5, 0); add_to (GTK_BOX (vbox_column4), vbox_others, FALSE, TRUE, 5, 3); create_treview (vbox_others); add_to (GTK_BOX (vbox_others), hbox_label, FALSE, TRUE, 5, 0); create_labels (hbox_label); add_to (GTK_BOX (vbox_others), hbox_spinner, FALSE, TRUE, 5, 0); create_spinners (hbox_spinner); create_expander (vbox_others); add_to (GTK_BOX (root), SEPH, FALSE, FALSE, 0, 0); // paned layout add_to (GTK_BOX (root), vpane, TRUE, TRUE, 0, 0); gtk_paned_set_start_child (GTK_PANED (vpane), hpane1); gtk_paned_set_shrink_start_child (GTK_PANED (vpane), FALSE); gtk_box_set_homogeneous (GTK_BOX (hbox_frame1), TRUE); gtk_box_set_spacing (GTK_BOX (hbox_frame1), 3); gtk_widget_set_size_request (hbox_frame1, -1, 50); gtk_widget_set_margin_start (hbox_frame1, 10); gtk_widget_set_margin_end (hbox_frame1, 10); gtk_widget_set_margin_top (hbox_frame1, 10); gtk_widget_set_margin_bottom (hbox_frame1, 10); gtk_paned_set_start_child (GTK_PANED (hpane1), hbox_frame1); gtk_paned_set_resize_start_child (GTK_PANED (hpane1), FALSE); gtk_paned_set_shrink_start_child (GTK_PANED (hpane1), FALSE); gtk_box_set_homogeneous (GTK_BOX (hbox_frame2), TRUE); gtk_box_set_spacing (GTK_BOX (hbox_frame2), 3); gtk_widget_set_size_request (hbox_frame2, -1, 50); gtk_widget_set_margin_start (hbox_frame2, 10); gtk_widget_set_margin_end (hbox_frame2, 10); gtk_widget_set_margin_top (hbox_frame2, 10); gtk_widget_set_margin_bottom (hbox_frame2, 10); gtk_paned_set_end_child (GTK_PANED (hpane1), hbox_frame2); create_frames (hbox_frame1, hbox_frame2); gtk_paned_set_end_child (GTK_PANED (vpane), hpane2); gtk_paned_set_shrink_end_child (GTK_PANED (vpane), FALSE); gtk_box_set_homogeneous (GTK_BOX (hbox_notebook1), TRUE); gtk_box_set_spacing (GTK_BOX (hbox_notebook1), 3); gtk_widget_set_margin_start (hbox_notebook1, 10); gtk_widget_set_margin_end (hbox_notebook1, 10); gtk_widget_set_margin_top (hbox_notebook1, 10); gtk_widget_set_margin_bottom (hbox_notebook1, 10); gtk_paned_set_start_child (GTK_PANED (hpane2), hbox_notebook1); gtk_paned_set_resize_start_child (GTK_PANED (hpane2), FALSE); gtk_paned_set_shrink_start_child (GTK_PANED (hpane2), FALSE); gtk_box_set_homogeneous (GTK_BOX (hbox_notebook2), TRUE); gtk_box_set_spacing (GTK_BOX (hbox_notebook2), 3); gtk_widget_set_margin_start (hbox_notebook2, 10); gtk_widget_set_margin_end (hbox_notebook2, 10); gtk_widget_set_margin_top (hbox_notebook2, 10); gtk_widget_set_margin_bottom (hbox_notebook2, 10); gtk_paned_set_end_child (GTK_PANED (hpane2), hbox_notebook2); create_notebooks (hbox_notebook1, hbox_notebook2); } static void add_progressbar_and_entrybar () { // entry toolbar toolbarentry = gtk_entry_new (); gtk_entry_set_placeholder_text (GTK_ENTRY (toolbarentry), "..."); gtk_widget_set_visible (toolbarentry, FALSE); gtk_widget_set_valign (toolbarentry, GTK_ALIGN_CENTER); gtk_widget_set_vexpand (toolbarentry, FALSE); gtk_widget_insert_after (toolbarentry, toolbar, toolbarplus); // after [+] // progressbar toolbar progressbar8 = gtk_progress_bar_new (); gtk_widget_set_size_request (progressbar8, 140, 1); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar8), 0); gtk_orientable_set_orientation (GTK_ORIENTABLE (progressbar8), GTK_ORIENTATION_HORIZONTAL); gtk_widget_set_visible (progressbar8, FALSE); gtk_widget_set_valign (progressbar8, GTK_ALIGN_CENTER); gtk_widget_set_halign (progressbar8, GTK_ALIGN_END); gtk_widget_set_hexpand (progressbar8, TRUE); gtk_widget_insert_after (progressbar8, toolbar, gtk_widget_get_last_child (toolbar)); // end // progressbar statusbar progressbar9 = gtk_progress_bar_new (); gtk_widget_set_size_request (progressbar9, 140, 1); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar9), 0); gtk_orientable_set_orientation (GTK_ORIENTABLE (progressbar9), GTK_ORIENTATION_HORIZONTAL); gtk_widget_set_visible (progressbar9, FALSE); gtk_widget_set_valign (progressbar9, GTK_ALIGN_CENTER); gtk_widget_set_halign (progressbar9, GTK_ALIGN_END); gtk_widget_set_hexpand (progressbar9, TRUE); gtk_widget_insert_after (progressbar9, gtk_widget_get_first_child (statusbar), gtk_widget_get_first_child (gtk_widget_get_first_child (statusbar))); // statusbar > box > label, statusbar > box > progressbar } static void add_to (GtkBox *box, GtkWidget *widget, gboolean fill, gboolean expand, guint padding, guint spacing) { if (fill && expand) { gtk_widget_set_halign (widget, GTK_ALIGN_FILL); gtk_widget_set_valign (widget, GTK_ALIGN_FILL); gtk_widget_set_hexpand (widget, TRUE); gtk_widget_set_vexpand (widget, TRUE); } else if (fill) { gtk_widget_set_halign (widget, GTK_ALIGN_FILL); gtk_widget_set_valign (widget, GTK_ALIGN_START); gtk_widget_set_hexpand (widget, FALSE); gtk_widget_set_vexpand (widget, FALSE); } else { gtk_widget_set_hexpand (widget, FALSE); gtk_widget_set_vexpand (widget, FALSE); } if (GTK_IS_BOX (widget) && (padding > 0)) { gtk_widget_set_margin_start (widget, padding); gtk_widget_set_margin_end (widget, padding); gtk_widget_set_margin_top (widget, padding); gtk_widget_set_margin_bottom (widget, padding); } if (GTK_IS_BOX (widget) && (spacing > 0)) { gtk_box_set_spacing (GTK_BOX (widget), spacing); } gtk_box_append (box, widget); if (!GTK_IS_BOX (widget)) { G_GNUC_BEGIN_IGNORE_DEPRECATIONS // GTK 4.10+ GtkStyleContext *style = gtk_widget_get_style_context (widget); gchar *text = gtk_style_context_to_string (style, GTK_STYLE_CONTEXT_PRINT_RECURSE); G_GNUC_END_IGNORE_DEPRECATIONS gtk_widget_set_tooltip_text (widget, text); g_free (text); } } static void create_toolbar_items (GtkWidget *root) { // @common gtk2/3 GtkWidget *icon1, *icon2, *icon3, *icon4, *icon5, *icon6, *icon7, *icon8; icon1 = gtk_button_new_from_icon_name ("gtk-open"); gtk_widget_add_css_class (icon1, "flat"); g_signal_connect (icon1, "clicked", G_CALLBACK (dialog_open), NULL); icon2 = gtk_button_new_from_icon_name ("gtk-open"); gtk_widget_set_sensitive (icon2, FALSE); icon3 = gtk_button_new_from_icon_name ("gtk-save"); g_signal_connect (icon3, "clicked", G_CALLBACK (dialog_save), NULL); icon4 = gtk_button_new_from_icon_name ("gtk-refresh"); g_signal_connect_swapped (icon4, "clicked", G_CALLBACK (update_theme), "refresh"); icon5 = gtk_button_new_from_icon_name ("gtk-dialog-info"); g_signal_connect_swapped (icon5, "clicked", G_CALLBACK (display_notification), "refresh"); icon6 = gtk_toggle_button_new (); gtk_button_set_icon_name (GTK_BUTTON (icon6), "gtk-add"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (icon6), TRUE); g_signal_connect (icon6, "clicked", G_CALLBACK (update_widgets), NULL); toolbarplus = icon6; icon7 = gtk_toggle_button_new (); gtk_button_set_icon_name (GTK_BUTTON (icon7), "gtk-remove"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (icon7), FALSE); g_signal_connect (icon7, "clicked", G_CALLBACK (update_widgets), NULL); icon8 = gtk_toggle_button_new (); gtk_button_set_icon_name (GTK_BUTTON (icon8), "gtk-close"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (icon8), FALSE); gtk_widget_set_sensitive (icon8, FALSE); add_to (GTK_BOX (root), icon1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), icon2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), SEPV, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), icon3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), icon4, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), icon5, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), SEPV, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), icon6, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), icon7, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), icon8, FALSE, FALSE, 0, 0); } static void create_combos_entries (GtkWidget *root) { GtkWidget *combo1, *combo2, *combo3, *combo4, *entry1, *entry2, *entry3, *entry4; G_GNUC_BEGIN_IGNORE_DEPRECATIONS //if GTK_CHECK_VERSION (4,10,0) // combo1 = gtk_drop_down_new_from_strings ((const char * const[]) { "Combo box entry 1", "Combo box entry 2", NULL }); // //gtk_drop_down_set_enable_search (GTK_DROP_DOWN (combo1), TRUE); // gtk_drop_down_set_selected (GTK_DROP_DOWN (combo1), 0); //else combo1 = gtk_combo_box_text_new_with_entry (); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo1), "Combo box entry 1"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo1), "Combo box entry 2"); gtk_combo_box_set_active (GTK_COMBO_BOX (combo1), 0); //endif //if GTK_CHECK_VERSION (4,10,0) // combo2 = gtk_drop_down_new_from_strings ((const char * const[]) { "Combo box entry 1", "Combo box entry 2", NULL }); // gtk_drop_down_set_selected (GTK_DROP_DOWN (combo2), 0); //else combo2 = gtk_combo_box_text_new_with_entry (); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo2), "Combo box entry 1"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo2), "Combo box entry 2"); gtk_combo_box_set_active (GTK_COMBO_BOX (combo2), 0); //endif gtk_widget_set_sensitive (combo2, FALSE); //if GTK_CHECK_VERSION (4,10,0) // combo3 = gtk_drop_down_new_from_strings ((const char * const[]) { "Combo box 1", "Combo box 2", NULL }); // gtk_drop_down_set_selected (GTK_DROP_DOWN (combo3), 0); //else combo3 = gtk_combo_box_text_new (); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo3), "Combo box 1"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo3), "Combo box 2"); gtk_combo_box_set_active (GTK_COMBO_BOX (combo3), 0); //endif //if GTK_CHECK_VERSION (4,10,0) // combo4 = gtk_drop_down_new_from_strings ((const char * const[]) { "Combo box 1", "Combo box 2", NULL }); // gtk_drop_down_set_selected (GTK_DROP_DOWN (combo4), 0); //else combo4 = gtk_combo_box_text_new (); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo4), "Combo box 1"); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo4), "Combo box 2"); gtk_combo_box_set_active (GTK_COMBO_BOX (combo4), 0); //endif gtk_widget_set_sensitive (combo4, FALSE); G_GNUC_END_IGNORE_DEPRECATIONS entry1 = gtk_entry_new (); gtk_editable_set_text (GTK_EDITABLE (entry1), "Entry"); gtk_entry_set_placeholder_text (GTK_ENTRY (entry1), "Placeholder"); entry2 = gtk_entry_new (); gtk_editable_set_text (GTK_EDITABLE (entry2), "Entry"); gtk_widget_set_sensitive (entry2, FALSE); entry3 = gtk_entry_new (); gtk_editable_set_text (GTK_EDITABLE (entry3), "Entry"); gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry3), GTK_ENTRY_ICON_PRIMARY, "gtk-clear"); gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry3), GTK_ENTRY_ICON_SECONDARY, "gtk-find"); gtk_entry_set_placeholder_text (GTK_ENTRY (entry3), "Placeholder"); entry4 = gtk_entry_new (); gtk_editable_set_text (GTK_EDITABLE (entry4), "Entry"); gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry4), GTK_ENTRY_ICON_PRIMARY, "gtk-clear"); gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry4), GTK_ENTRY_ICON_SECONDARY, "gtk-find"); gtk_widget_set_sensitive (entry4, FALSE); // layout add_to (GTK_BOX (root), combo1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), combo2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), combo3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), combo4, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), entry1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), entry2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), entry3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), entry4, FALSE, FALSE, 0, 0); } static void create_spinbuttons (GtkWidget *root) { // @common GtkWidget *spinbutton1, *spinbutton2; spinbutton1 = gtk_spin_button_new_with_range (-100, 100, 1); gtk_spin_button_set_value (GTK_SPIN_BUTTON (spinbutton1), 1); spinbutton2 = gtk_spin_button_new_with_range (-100, 100, 1); gtk_spin_button_set_value (GTK_SPIN_BUTTON (spinbutton2), 1); gtk_widget_set_sensitive (spinbutton2, FALSE); add_to (GTK_BOX (root), spinbutton1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), BOXH, TRUE, TRUE, 0, 0); // empty space add_to (GTK_BOX (root), spinbutton2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), BOXH, TRUE, TRUE, 0, 0); // empty space } static void create_checkbuttons (GtkWidget *root) { // @common gtk2/3 GtkWidget *checkbutton1, *checkbutton2, *checkbutton3, *checkbutton4, *checkbutton5, *checkbutton6; checkbutton1 = gtk_check_button_new_with_label ("Check btn 1"); checkbutton2 = gtk_check_button_new_with_label ("Check btn 2"); gtk_check_button_set_active (GTK_CHECK_BUTTON (checkbutton2), TRUE); checkbutton3 = gtk_check_button_new_with_label ("Check btn 3"); gtk_check_button_set_inconsistent (GTK_CHECK_BUTTON (checkbutton3), TRUE); checkbutton4 = gtk_check_button_new_with_label ("Check btn 4"); gtk_widget_set_sensitive (checkbutton4, FALSE); checkbutton5 = gtk_check_button_new_with_label ("Check btn 5"); gtk_check_button_set_active (GTK_CHECK_BUTTON (checkbutton5), TRUE); gtk_widget_set_sensitive (checkbutton5, FALSE); checkbutton6 = gtk_check_button_new_with_label ("Check btn 6"); gtk_check_button_set_inconsistent (GTK_CHECK_BUTTON (checkbutton6), TRUE); gtk_widget_set_sensitive (checkbutton6, FALSE); add_to (GTK_BOX (root), checkbutton1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), checkbutton2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), checkbutton3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), checkbutton4, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), checkbutton5, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), checkbutton6, FALSE, FALSE, 0, 0); } static void create_radiobuttons (GtkWidget *root) { // @common gtk2/3 GtkWidget *radiobutton1, *radiobutton2, *radiobutton3, *radiobutton4, *radiobutton5, *radiobutton6; radiobutton1 = gtk_check_button_new_with_label ("Radio btn 1"); gtk_check_button_set_group (GTK_CHECK_BUTTON (radiobutton1), NULL); radiobutton2 = gtk_check_button_new_with_label ("Radio btn 2"); gtk_check_button_set_group (GTK_CHECK_BUTTON (radiobutton2), GTK_CHECK_BUTTON (radiobutton1)); gtk_check_button_set_active (GTK_CHECK_BUTTON (radiobutton2), TRUE); radiobutton3 = gtk_check_button_new_with_label ("Radio btn 3"); gtk_check_button_set_group (GTK_CHECK_BUTTON (radiobutton3), GTK_CHECK_BUTTON (radiobutton1)); gtk_check_button_set_inconsistent (GTK_CHECK_BUTTON (radiobutton3), TRUE); radiobutton4 = gtk_check_button_new_with_label ("Radio btn 4"); gtk_check_button_set_group (GTK_CHECK_BUTTON (radiobutton4), NULL); gtk_widget_set_sensitive (radiobutton4, FALSE); radiobutton5 = gtk_check_button_new_with_label ("Radio btn 5"); gtk_check_button_set_group (GTK_CHECK_BUTTON (radiobutton5), GTK_CHECK_BUTTON (radiobutton4)); gtk_check_button_set_active (GTK_CHECK_BUTTON (radiobutton5), TRUE); gtk_widget_set_sensitive (radiobutton5, FALSE); radiobutton6 = gtk_check_button_new_with_label ("Radio btn 6"); gtk_check_button_set_group (GTK_CHECK_BUTTON (radiobutton6), GTK_CHECK_BUTTON (radiobutton4)); gtk_check_button_set_inconsistent (GTK_CHECK_BUTTON (radiobutton6), TRUE); gtk_widget_set_sensitive (radiobutton6, FALSE); add_to (GTK_BOX (root), radiobutton1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), radiobutton2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), radiobutton3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), radiobutton4, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), radiobutton5, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), radiobutton6, FALSE, FALSE, 0, 0); } static void create_otherbuttons (GtkWidget *root1, GtkWidget *root2, GtkWidget *root3, GtkWidget *root4, GtkWidget *root5) { GtkWidget *button1, *button2, *button3, *button4, *button5, *button6, *button7, *button8, *button9; GtkWidget *button10, *button11, *button12, *button13, *button14; button1 = gtk_button_new_with_label ("Button 1"); button2 = gtk_button_new_with_label ("Button 2"); gtk_widget_set_sensitive (button2, FALSE); button3 = gtk_toggle_button_new_with_label ("Button 3"); button4 = gtk_toggle_button_new_with_label ("Button 4"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button3), TRUE); gtk_widget_set_sensitive (button4, FALSE); // colorbutton #if GTK_CHECK_VERSION (4,10,0) GdkRGBA color; gdk_rgba_parse (&color, "#7796ba"); button5 = gtk_color_dialog_button_new (gtk_color_dialog_new ()); gtk_color_dialog_button_set_rgba (GTK_COLOR_DIALOG_BUTTON (button5), &color); #else GdkRGBA color; gdk_rgba_parse (&color, "#7796ba"); button5 = gtk_color_button_new_with_rgba (&color); #endif // fontbutton #if GTK_CHECK_VERSION (4,10,0) button6 = gtk_font_dialog_button_new (gtk_font_dialog_new ()); find_and_update_labels (button6, FALSE); gtk_widget_set_size_request (button6, 186, -1); #else button6 = gtk_font_button_new (); find_and_update_labels (button6, FALSE); gtk_widget_set_size_request (button6, 186, -1); #endif // filebutton button7 = gtk_button_new_with_label ("Button 7"); gtk_widget_add_css_class (button7, "awf-cheatcode-btn7"); button8 = gtk_button_new_with_label ("Button 8"); gtk_widget_add_css_class (button8, "awf-cheatcode-btn8"); // switchbutton button9 = gtk_switch_new (); gtk_switch_set_active (GTK_SWITCH (button9), TRUE); button10 = gtk_switch_new (); gtk_switch_set_active (GTK_SWITCH (button10), TRUE); gtk_widget_set_sensitive (button10, FALSE); button11 = gtk_switch_new (); gtk_switch_set_active (GTK_SWITCH (button11), FALSE); button12 = gtk_switch_new (); gtk_switch_set_active (GTK_SWITCH (button12), FALSE); gtk_widget_set_sensitive (button12, FALSE); button13 = gtk_link_button_new_with_label ("https://github.com/luigifab/awf-extended", "Link button"); button14 = gtk_link_button_new_with_label ("https://github.com/luigifab/awf-extended", "Link button"); gtk_widget_set_sensitive (button14, FALSE); volume1 = gtk_volume_button_new (); gtk_scale_button_set_value (GTK_SCALE_BUTTON (volume1), 0.5); volume2 = gtk_volume_button_new (); gtk_scale_button_set_value (GTK_SCALE_BUTTON (volume2), 0); gtk_widget_set_sensitive (volume2, FALSE); // layout add_to (GTK_BOX (root1), button1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button4, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button5, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button6, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button7, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), button8, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root2), button9, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root2), button10, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root3), button11, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root3), button12, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root4), button13, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root4), button14, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root5), volume1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root5), volume2, FALSE, FALSE, 0, 0); } static void create_progressbars (GtkWidget *root1, GtkWidget *root2, GtkWidget *root3, GtkWidget *root4) { // progress bars progressbar1 = gtk_progress_bar_new (); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar1), 0.5); gtk_orientable_set_orientation (GTK_ORIENTABLE (progressbar1), GTK_ORIENTATION_HORIZONTAL); progressbar2 = gtk_progress_bar_new (); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar2), 0.5); gtk_orientable_set_orientation (GTK_ORIENTABLE (progressbar2), GTK_ORIENTATION_HORIZONTAL); gtk_progress_bar_set_inverted (GTK_PROGRESS_BAR (progressbar2), TRUE); gtk_widget_add_css_class (progressbar2, "awf-cheatcode-prbr2"); progressbar3 = gtk_progress_bar_new (); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar3), 0.5); gtk_orientable_set_orientation (GTK_ORIENTABLE (progressbar3), GTK_ORIENTATION_VERTICAL); gtk_widget_set_size_request (progressbar3, -1, 100); progressbar4 = gtk_progress_bar_new (); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar4), 0.5); gtk_orientable_set_orientation (GTK_ORIENTABLE (progressbar4), GTK_ORIENTATION_VERTICAL); gtk_progress_bar_set_inverted (GTK_PROGRESS_BAR (progressbar4), TRUE); // scales scale1 = create_horizontal_scale (50, FALSE, FALSE, GTK_POS_TOP); g_signal_connect (scale1, "value_changed", G_CALLBACK (update_values), NULL); scale2 = create_horizontal_scale (50, FALSE, TRUE, GTK_POS_TOP); g_signal_connect (scale2, "value_changed", G_CALLBACK (update_values), NULL); scale3 = create_vertical_scale (50, FALSE, FALSE, GTK_POS_TOP); g_signal_connect (scale3, "value_changed", G_CALLBACK (update_values), NULL); scale4 = create_vertical_scale (50, FALSE, TRUE, GTK_POS_TOP); g_signal_connect (scale4, "value_changed", G_CALLBACK (update_values), NULL); scale5 = create_vertical_scale (50, FALSE, FALSE, GTK_POS_TOP); update_marks (GTK_SCALE (scale5), FALSE, GTK_POS_LEFT); g_signal_connect (scale5, "value_changed", G_CALLBACK (update_values), NULL); scale6 = create_vertical_scale (50, FALSE, TRUE, GTK_POS_TOP); update_marks (GTK_SCALE (scale6), FALSE, GTK_POS_RIGHT); g_signal_connect (scale6, "value_changed", G_CALLBACK (update_values), NULL); levelbar1 = gtk_level_bar_new (); gtk_level_bar_set_mode (GTK_LEVEL_BAR (levelbar1), GTK_LEVEL_BAR_MODE_CONTINUOUS); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar1), 0.5); gtk_orientable_set_orientation (GTK_ORIENTABLE (levelbar1), GTK_ORIENTATION_VERTICAL); levelbar2 = gtk_level_bar_new (); gtk_level_bar_set_mode (GTK_LEVEL_BAR (levelbar2), GTK_LEVEL_BAR_MODE_CONTINUOUS); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar2), 0.5); gtk_orientable_set_orientation (GTK_ORIENTABLE (levelbar2), GTK_ORIENTATION_VERTICAL); levelbar3 = gtk_level_bar_new_for_interval (0, 5); gtk_level_bar_set_mode (GTK_LEVEL_BAR (levelbar3), GTK_LEVEL_BAR_MODE_DISCRETE); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar3), 2); // GTK 3.20.9 not work gtk_orientable_set_orientation (GTK_ORIENTABLE (levelbar3), GTK_ORIENTATION_VERTICAL); levelbar4 = gtk_level_bar_new_for_interval (0, 5); gtk_level_bar_set_mode (GTK_LEVEL_BAR (levelbar4), GTK_LEVEL_BAR_MODE_DISCRETE); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar4), 2); // GTK 3.20.9 not work gtk_orientable_set_orientation (GTK_ORIENTABLE (levelbar4), GTK_ORIENTATION_VERTICAL); levelbar5 = gtk_level_bar_new (); gtk_level_bar_set_mode (GTK_LEVEL_BAR (levelbar5), GTK_LEVEL_BAR_MODE_CONTINUOUS); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar5), 0.5); levelbar6 = gtk_level_bar_new (); gtk_level_bar_set_mode (GTK_LEVEL_BAR (levelbar6), GTK_LEVEL_BAR_MODE_CONTINUOUS); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar6), 0.5); levelbar7 = gtk_level_bar_new_for_interval (0, 5); gtk_level_bar_set_mode (GTK_LEVEL_BAR (levelbar7), GTK_LEVEL_BAR_MODE_DISCRETE); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar7), 2); // GTK 3.20.9 not work levelbar8 = gtk_level_bar_new_for_interval (0, 5); gtk_level_bar_set_mode (GTK_LEVEL_BAR (levelbar8), GTK_LEVEL_BAR_MODE_DISCRETE); gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar8), 2); // GTK 3.20.9 not work gtk_level_bar_set_inverted (GTK_LEVEL_BAR (levelbar2), TRUE); gtk_level_bar_set_inverted (GTK_LEVEL_BAR (levelbar4), TRUE); gtk_level_bar_set_inverted (GTK_LEVEL_BAR (levelbar6), TRUE); gtk_level_bar_set_inverted (GTK_LEVEL_BAR (levelbar8), TRUE); // layout add_to (GTK_BOX (root1), progressbar1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), progressbar2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), scale1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root1), scale2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root2), progressbar3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root2), progressbar4, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root2), levelbar1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root2), levelbar2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root2), levelbar3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root2), levelbar4, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root3), scale3, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root3), scale5, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root3), scale6, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root3), scale4, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root4), levelbar5, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root4), levelbar6, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root4), levelbar7, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root4), levelbar8, FALSE, FALSE, 0, 0); } static void create_labels (GtkWidget *root) { // @common GtkWidget *label1, *label2; label1 = gtk_label_new ("Label 1"); label2 = gtk_label_new ("Label 2"); gtk_widget_set_sensitive (label2, FALSE); add_to (GTK_BOX (root), label1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), BOXH, TRUE, TRUE, 0, 0); // empty space add_to (GTK_BOX (root), label2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), BOXH, TRUE, TRUE, 0, 0); // empty space } static void create_spinners (GtkWidget *root) { // @common GtkWidget *spinner1, *spinner2; spinner1 = gtk_spinner_new (); gtk_widget_set_size_request (spinner1, 20, 20); if (opt_startspinner) gtk_spinner_start (GTK_SPINNER (spinner1)); spinner2 = gtk_spinner_new (); gtk_widget_set_size_request (spinner2, 20, 20); gtk_widget_set_sensitive (spinner2, FALSE); if (opt_startspinner) gtk_spinner_start (GTK_SPINNER (spinner2)); add_to (GTK_BOX (root), spinner1, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), BOXH, TRUE, TRUE, 0, 0); // empty space add_to (GTK_BOX (root), spinner2, FALSE, FALSE, 0, 0); add_to (GTK_BOX (root), BOXH, TRUE, TRUE, 0, 0); // empty space } static void create_expander (GtkWidget *root) { GtkWidget *expander, *scrolled_window, *tv; GtkTextBuffer *buffer; expander = gtk_expander_new (_app("More...")); gtk_expander_set_expanded (GTK_EXPANDER (expander), TRUE); scrolled_window = gtk_scrolled_window_new (); const gchar *config = g_getenv ("GTK_OVERLAY_SCROLLING"); if (config && (strcmp (config, "0") == 0)) gtk_scrolled_window_set_overlay_scrolling (GTK_SCROLLED_WINDOW (scrolled_window), FALSE); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); gtk_widget_set_size_request (scrolled_window, -1, 120); tv = gtk_text_view_new (); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tv)); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (tv), GTK_WRAP_WORD); gtk_text_buffer_set_text (GTK_TEXT_BUFFER (buffer), g_strdup_printf ("%s ~ %s", _app("A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme."), _app("A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme.")), -1); gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (scrolled_window), tv); gtk_expander_set_child (GTK_EXPANDER (expander), scrolled_window); add_to (GTK_BOX (root), expander, FALSE, FALSE, 0, 0); } static void create_frames (GtkWidget *root1, GtkWidget *root2) { GtkWidget *frame1, *frame2, *frame3, *frame4; frame1 = gtk_frame_new ("Frame (shadow in)"); gtk_widget_add_css_class (frame1, "border-inset"); frame2 = gtk_frame_new ("Frame (shadow out)"); gtk_widget_add_css_class (frame2, "border-outset"); frame3 = gtk_frame_new ("Frame (shadow etched in)"); gtk_widget_add_css_class (frame3, "border-groove"); frame4 = gtk_frame_new ("Frame (shadow etched out)"); gtk_widget_add_css_class (frame4, "border-ridge"); add_to (GTK_BOX (root1), frame1, TRUE, TRUE, 0, 0); add_to (GTK_BOX (root1), frame2, TRUE, TRUE, 0, 0); add_to (GTK_BOX (root2), frame3, TRUE, TRUE, 0, 0); add_to (GTK_BOX (root2), frame4, TRUE, TRUE, 0, 0); } static void create_notebooks (GtkWidget *root1, GtkWidget *root2) { // @common* notebook1 = gtk_notebook_new (); notebook2 = gtk_notebook_new (); notebook3 = gtk_notebook_new (); notebook4 = gtk_notebook_new (); gtk_notebook_popup_enable (GTK_NOTEBOOK (notebook1)); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook1), FALSE); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook1), GTK_POS_TOP); create_notebook_tab (notebook1, "Tab1", FALSE); create_notebook_tab (notebook1, "Tab2", FALSE); create_notebook_tab (notebook1, "Tab3", TRUE); create_notebook_tab (notebook1, "Tab4", TRUE); gtk_notebook_popup_enable (GTK_NOTEBOOK (notebook2)); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook2), FALSE); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook2), GTK_POS_BOTTOM); create_notebook_tab (notebook2, "Tab1", FALSE); create_notebook_tab (notebook2, "Tab2", FALSE); create_notebook_tab (notebook2, "Tab3", TRUE); create_notebook_tab (notebook2, "Tab4", TRUE); gtk_notebook_popup_enable (GTK_NOTEBOOK (notebook3)); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook3), FALSE); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook3), GTK_POS_LEFT); create_notebook_tab (notebook3, "T1", FALSE); create_notebook_tab (notebook3, "Tab2", FALSE); create_notebook_tab (notebook3, "T3b", TRUE); create_notebook_tab (notebook3, "T4", TRUE); gtk_notebook_popup_enable (GTK_NOTEBOOK (notebook4)); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook4), FALSE); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook4), GTK_POS_RIGHT); create_notebook_tab (notebook4, "T1", FALSE); create_notebook_tab (notebook4, "Tab2", FALSE); create_notebook_tab (notebook4, "T3b", TRUE); create_notebook_tab (notebook4, "T4", TRUE); add_to (GTK_BOX (root1), notebook1, TRUE, TRUE, 0, 0); add_to (GTK_BOX (root1), notebook2, TRUE, TRUE, 0, 0); add_to (GTK_BOX (root2), notebook3, TRUE, TRUE, 0, 0); add_to (GTK_BOX (root2), notebook4, TRUE, TRUE, 0, 0); } static void create_notebook_tab (GtkWidget *notebook, gchar *text, gboolean close) { GtkWidget *headbtn = BOXH, *content = BOXV, *btn; add_to (GTK_BOX (headbtn), gtk_label_new (text), TRUE, TRUE, 0, 0); if (close) { btn = gtk_button_new_from_icon_name ("gtk-close"); gtk_button_set_has_frame (GTK_BUTTON (btn), FALSE); gtk_widget_set_focus_on_click (btn, FALSE); add_to (GTK_BOX (headbtn), btn, FALSE, FALSE, 0, 0); } gtk_notebook_append_page (GTK_NOTEBOOK (notebook), content, headbtn); gtk_notebook_set_tab_reorderable (GTK_NOTEBOOK (notebook), content, TRUE); // gtk-scroll-tabs for GTK 4 | so same 2.24 - 3.x - 4.x GtkEventController *event; event = gtk_event_controller_scroll_new (GTK_EVENT_CONTROLLER_SCROLL_BOTH_AXES | GTK_EVENT_CONTROLLER_SCROLL_DISCRETE); g_signal_connect (event, "scroll", G_CALLBACK (on_scrolltabs), notebook); gtk_widget_add_controller (gtk_widget_get_parent (headbtn), event); } static void create_treview (GtkWidget *root) { // @common 80% GtkWidget *scrolled_window, *view; GtkCellRenderer *renderer; GtkTreeStore *store; GtkTreeIter iter; int idx = 0; G_GNUC_BEGIN_IGNORE_DEPRECATIONS // data store = gtk_tree_store_new (11, G_TYPE_INT, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 1, 1, FALSE, 2, FALSE, 3, "Text 1.1", 4, 0.0, 5, 0.0, 6, "Text 1.2", 7, "gtk-open", 8, "gtk-open", 9, FALSE, 10, FALSE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 2, 1, TRUE, 2, TRUE, 3, "Text 2.1", 4, 10.0, 5, 10.0, 6, "Text 2.2", 7, "gtk-save", 8, "gtk-save", 9, TRUE, 10, TRUE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 3, 1, FALSE, 2, FALSE, 3, "Text 3.1", 4, 20.0, 5, 20.0, 6, "Text 3.2", 7, "gtk-save-as", 8, "gtk-save-as", 9, FALSE, 10, FALSE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 4, 1, TRUE, 2, TRUE, 3, "Text 4.1", 4, 30.0, 5, 30.0, 6, "Text 4.2", 7, "gtk-refresh", 8, "gtk-refresh", 9, TRUE, 10, TRUE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 5, 1, FALSE, 2, FALSE, 3, "Text 5.1", 4, 40.0, 5, 40.0, 6, "Text 5.2", 7, "gtk-cut", 8, "gtk-cut", 9, FALSE, 10, FALSE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 6, 1, TRUE, 2, TRUE, 3, "Text 6.1", 4, 50.0, 5, 50.0, 6, "Text 6.2", 7, "gtk-help", 8, "gtk-help", 9, TRUE, 10, TRUE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 7, 1, FALSE, 2, FALSE, 3, "Text 7.1", 4, 60.0, 5, 60.0, 6, "Text 7.2", 7, "gtk-open", 8, "gtk-open", 9, FALSE, 10, FALSE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 8, 1, TRUE, 2, TRUE, 3, "Text 8.1", 4, 70.0, 5, 70.0, 6, "Text 8.2", 7, "gtk-save", 8, "gtk-save", 9, TRUE, 10, TRUE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 9, 1, FALSE, 2, FALSE, 3, "Text 9.1", 4, 80.0, 5, 80.0, 6, "Text 9.2", 7, "gtk-save-as", 8, "gtk-save-as", 9, FALSE, 10, FALSE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 10, 1, TRUE, 2, TRUE, 3, "Text 10.1", 4, 90.0, 5, 90.0, 6, "Text 10.2", 7, "gtk-refresh", 8, "gtk-refresh", 9, TRUE, 10, TRUE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, 11, 1, FALSE, 2, FALSE, 3, "Text 11.1", 4, 100.0, 5, 100.0, 6, "Text 11.2", 7, "gtk-cut", 8, "gtk-cut", 9, FALSE, 10, FALSE, -1); // columns view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store)); gtk_tree_view_set_reorderable (GTK_TREE_VIEW (view), FALSE); // rows gtk_tree_view_set_show_expanders (GTK_TREE_VIEW (view), FALSE); gtk_tree_view_set_headers_clickable (GTK_TREE_VIEW (view), TRUE); gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store), 0, GTK_SORT_ASCENDING); g_object_unref (G_OBJECT (store)); idx = 0; renderer = gtk_cell_renderer_text_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "i", renderer, "text", idx, NULL); gtk_tree_view_column_set_sort_column_id (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), idx); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 1; renderer = gtk_cell_renderer_toggle_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "c", renderer, "active", idx, NULL); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_min_width (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), 20); idx = 2; renderer = gtk_cell_renderer_toggle_new (); gtk_cell_renderer_toggle_set_radio (GTK_CELL_RENDERER_TOGGLE (renderer), TRUE); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "r", renderer, "active", idx, NULL); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_min_width (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), 20); idx = 3; renderer = gtk_cell_renderer_text_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "Text", renderer, "text", idx, NULL); gtk_tree_view_column_set_sort_column_id (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), idx); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 4; renderer = gtk_cell_renderer_progress_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "Progress", renderer, "value", idx, NULL); gtk_tree_view_column_set_sort_column_id (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), idx); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 5; renderer = gtk_cell_renderer_progress_new (); gtk_cell_renderer_set_sensitive (renderer, FALSE); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "Progress", renderer, "value", idx, NULL); gtk_tree_view_column_set_sort_column_id (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), idx); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 6; renderer = gtk_cell_renderer_text_new (); gtk_cell_renderer_set_sensitive (renderer, FALSE); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "Text", renderer, "text", idx, NULL); gtk_tree_view_column_set_sort_column_id (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), idx); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 7; renderer = gtk_cell_renderer_pixbuf_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "Icon", renderer, "icon-name", idx, NULL); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 8; renderer = gtk_cell_renderer_pixbuf_new (); gtk_cell_renderer_set_sensitive (renderer, FALSE); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "Icon", renderer, "icon-name", idx, NULL); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); idx = 9; renderer = gtk_cell_renderer_toggle_new (); gtk_cell_renderer_set_sensitive (renderer, FALSE); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "c", renderer, "active", idx, NULL); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_min_width (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), 20); idx = 10; renderer = gtk_cell_renderer_toggle_new (); gtk_cell_renderer_set_sensitive (renderer, FALSE); gtk_cell_renderer_toggle_set_radio (GTK_CELL_RENDERER_TOGGLE (renderer), TRUE); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), idx, "r", renderer, "active", idx, NULL); gtk_tree_view_column_set_reorderable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_resizable (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), TRUE); gtk_tree_view_column_set_min_width (gtk_tree_view_get_column (GTK_TREE_VIEW (view), idx), 20); G_GNUC_END_IGNORE_DEPRECATIONS // scrolled window scrolled_window = gtk_scrolled_window_new (); const gchar *config = g_getenv ("GTK_OVERLAY_SCROLLING"); if (config && (strcmp (config, "0") == 0)) gtk_scrolled_window_set_overlay_scrolling (GTK_SCROLLED_WINDOW (scrolled_window), FALSE); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_ALWAYS, GTK_POLICY_ALWAYS); gtk_widget_set_size_request (scrolled_window, 200, 200); gtk_widget_set_size_request (view, 200, 200); gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (scrolled_window), view); add_to (GTK_BOX (root), scrolled_window, FALSE, FALSE, 0, 0); } static GtkWidget* create_horizontal_scale (gdouble value, gboolean draw, gboolean inverted, int position) { // @common +shortcut GtkWidget *scale; scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, 0, 100, 1); gtk_range_set_value (GTK_RANGE (scale), value); gtk_scale_set_draw_value (GTK_SCALE (scale), draw); gtk_scale_set_value_pos (GTK_SCALE (scale), position); gtk_range_set_inverted (GTK_RANGE (scale), inverted); gtk_widget_set_size_request (scale, 186, -1); return scale; } static GtkWidget* create_vertical_scale (gdouble value, gboolean draw, gboolean inverted, int position) { // @common +shortcut GtkWidget *scale; scale = gtk_scale_new_with_range (GTK_ORIENTATION_VERTICAL, 0, 100, 1); gtk_scale_set_value_pos (GTK_SCALE (scale), position); gtk_range_set_inverted (GTK_RANGE (scale), inverted); gtk_scale_set_draw_value (GTK_SCALE (scale), draw); gtk_range_set_value (GTK_RANGE (scale), value); gtk_widget_set_size_request (scale, -1, 100); return scale; } // traditional menu static void create_traditional_menubar (GtkApplication *app, GMenu *root) { GMenu *menu, *submenu, *section; GSimpleAction *action; GSList *iterator; // options menu = g_menu_new (); g_menu_append_submenu (root, _app("_Options"), G_MENU_MODEL (menu)); create_menuitem (app, menu, _gtk("_Open"), AWF_ACCEL_OPEN, AWF_OPEN, dialog_open); create_menuitem (app, menu, _app("Open recent file"), AWF_ACCEL_RECE, AWF_RECE, NULL); create_menuitem (app, menu, _app("Calendar"), AWF_ACCEL_CALE, AWF_CALE, dialog_calendar); create_menuitem (app, menu, _app("GtkScales top"), AWF_ACCEL_SCAT, AWF_SCAT, dialog_scales_top); create_menuitem (app, menu, _app("GtkScales bottom"), AWF_ACCEL_SCAB, AWF_SCAB, dialog_scales_bottom); create_menuitem (app, menu, _app("GtkScales right"), AWF_ACCEL_SCAR, AWF_SCAR, dialog_scales_right); create_menuitem (app, menu, _app("GtkScales left"), AWF_ACCEL_SCAL, AWF_SCAL, dialog_scales_left); create_menuitem (app, menu, _gtk("_Save"), AWF_ACCEL_SAVE, AWF_SAVE, dialog_save); create_menuitem (app, menu, _gtk("_Refresh"), AWF_ACCEL_REFR, AWF_REFR, G_CALLBACK (on_sighup)); // G_CALLBACK (update_theme) create_menuitem (app, menu, _gtk("_Properties"), AWF_ACCEL_PROP, AWF_PROP, dialog_message); create_menuitem (app, menu, _gtk("Page Set_up"), AWF_ACCEL_PRSE, AWF_PRSE, dialog_page_setup); create_menuitem (app, menu, _gtk("_Print"), AWF_ACCEL_PRIN, AWF_PRIN, dialog_print); create_menuitem (app, menu, _gtk("_About"), AWF_ACCEL_ABOU, AWF_ABOU, dialog_about); submenu = g_menu_new (); g_menu_append_submenu (menu, _app("More..."), G_MENU_MODEL (submenu)); create_menuitem (app, submenu, _gtk("Cu_t"), AWF_ACCEL_MCUT, AWF_MCUT, NULL); create_menuitem (app, submenu, _gtk("_Copy"), AWF_ACCEL_MCOP, AWF_MCOP, NULL); create_menuitem (app, submenu, _gtk("_Paste"), AWF_ACCEL_MPAS, AWF_MPAS, NULL); section = g_menu_new (); g_menu_append_section (menu, NULL, G_MENU_MODEL (section)); action = g_simple_action_new_stateful ("set-check-grp11", NULL, g_variant_new_boolean (FALSE)); g_signal_connect (action, "activate", G_CALLBACK (activate_action), NULL); g_action_map_add_action (G_ACTION_MAP (g_application_get_default ()), G_ACTION (action)); g_menu_append_item (section, g_menu_item_new (g_strdup_printf ("Check 1 %s", _app("(unchecked)")), "app.set-check-grp11")); action = g_simple_action_new_stateful ("set-check-grp12", NULL, g_variant_new_boolean (TRUE)); g_signal_connect (action, "activate", G_CALLBACK (activate_action), NULL); g_action_map_add_action (G_ACTION_MAP (g_application_get_default ()), G_ACTION (action)); g_menu_append_item (section, g_menu_item_new (g_strdup_printf ("Check 2 %s", _app("(checked)")), "app.set-check-grp12")); g_menu_append_item (section, g_menu_item_new ("Empty", NULL)); // @todo action = g_simple_action_new_stateful ("set-check-grp21", NULL, g_variant_new_boolean (FALSE)); g_simple_action_set_enabled (action, FALSE); g_signal_connect (action, "activate", G_CALLBACK (activate_action), NULL); g_action_map_add_action (G_ACTION_MAP (g_application_get_default ()), G_ACTION (action)); g_menu_append_item (section, g_menu_item_new (g_strdup_printf ("Check 1 %s", _app("(unchecked)")), "app.set-check-grp21")); action = g_simple_action_new_stateful ("set-check-grp22", NULL, g_variant_new_boolean (TRUE)); g_simple_action_set_enabled (action, FALSE); g_signal_connect (action, "activate", G_CALLBACK (activate_action), NULL); g_action_map_add_action (G_ACTION_MAP (g_application_get_default ()), G_ACTION (action)); g_menu_append_item (section, g_menu_item_new (g_strdup_printf ("Check 2 %s", _app("(checked)")), "app.set-check-grp22")); g_menu_append_item (section, g_menu_item_new ("Empty", "disabled")); // @todo section = g_menu_new (); g_menu_append_section (menu, NULL, G_MENU_MODEL (section)); action = g_simple_action_new_stateful ("set-radio-grp1", G_VARIANT_TYPE_STRING, g_variant_new_string ("checked")); g_signal_connect (action, "activate", G_CALLBACK (activate_action), NULL); g_action_map_add_action (G_ACTION_MAP (g_application_get_default ()), G_ACTION (action)); g_menu_append_item (section, g_menu_item_new (g_strdup_printf ("Radio 1 %s", _app("(unchecked)")), "app.set-radio-grp1::unchecked")); g_menu_append_item (section, g_menu_item_new (g_strdup_printf ("Radio 2 %s", _app("(checked)")), "app.set-radio-grp1::checked")); g_menu_append_item (section, g_menu_item_new ("Empty", NULL)); // @todo action = g_simple_action_new_stateful ("set-radio-grp2", G_VARIANT_TYPE_STRING, g_variant_new_string ("checked")); g_simple_action_set_enabled (action, FALSE); g_signal_connect (action, "activate", G_CALLBACK (activate_action), NULL); g_action_map_add_action (G_ACTION_MAP (g_application_get_default ()), G_ACTION (action)); g_menu_append_item (section, g_menu_item_new (g_strdup_printf ("Radio 1 %s", _app("(unchecked)")), "app.set-radio-grp2::unchecked")); g_menu_append_item (section, g_menu_item_new (g_strdup_printf ("Radio 2 %s", _app("(checked)")), "app.set-radio-grp2::checked")); g_menu_append_item (section, g_menu_item_new ("Empty", "disabled")); // @todo section = g_menu_new (); g_menu_append_section (menu, NULL, G_MENU_MODEL (section)); create_menuitem (app, section, _gtk("_Close"), AWF_ACCEL_CLOS, AWF_CLOS, NULL); create_menuitem (app, section, _gtk("_Quit"), AWF_ACCEL_QUIT, AWF_QUIT, quit); // themes action = g_simple_action_new_stateful ("set-theme", G_VARIANT_TYPE_STRING, g_variant_new_string (current_theme)); g_signal_connect (action, "activate", G_CALLBACK (activate_action), NULL); g_action_map_add_action (G_ACTION_MAP (g_application_get_default ()), G_ACTION (action)); // system themes menu = g_menu_new (); g_menu_append_submenu (root, _app("_System themes"), G_MENU_MODEL (menu)); for (iterator = list_system_theme; iterator; iterator = iterator->next) { if (g_slist_find_custom (list_user_theme, iterator->data, &awf_compare_theme)) g_menu_append_item (menu, g_menu_item_new (iterator->data, "disabled")); // @todo else g_menu_append_item (menu, g_menu_item_new (iterator->data, g_strdup_printf ("app.set-theme::%s", (gchar*) iterator->data))); } if (!list_system_theme) g_menu_append (menu, _app("No themes found"), "disabled"); // @todo // user themes menu = g_menu_new (); g_menu_append_submenu (root, _app("_User themes"), G_MENU_MODEL (menu)); for (iterator = list_user_theme; iterator; iterator = iterator->next) g_menu_append_item (menu, g_menu_item_new (iterator->data, g_strdup_printf ("app.set-theme::%s", (gchar*) iterator->data))); if (!list_user_theme) g_menu_append (menu, _app("No themes found"), "disabled"); // @todo // text direction if ((current_direction == GTK_TEXT_DIR_LTR) || (current_direction == 1)) action = g_simple_action_new_stateful ("set-direction", G_VARIANT_TYPE_STRING, g_variant_new_string ("1")); if ((current_direction == GTK_TEXT_DIR_RTL) || (current_direction == 2)) action = g_simple_action_new_stateful ("set-direction", G_VARIANT_TYPE_STRING, g_variant_new_string ("2")); g_signal_connect (action, "activate", G_CALLBACK (activate_action), NULL); g_action_map_add_action (G_ACTION_MAP (g_application_get_default ()), G_ACTION (action)); menu = g_menu_new (); g_menu_append_submenu (root, _app("_Text direction"), G_MENU_MODEL (menu)); g_menu_append_item (menu, g_menu_item_new (_app("Left to Right (LTR)"), g_strdup_printf ("app.set-direction::%d", GTK_TEXT_DIR_LTR))); g_menu_append_item (menu, g_menu_item_new (_app("Right to Left (RTL)"), g_strdup_printf ("app.set-direction::%d", GTK_TEXT_DIR_RTL))); } static GMenuItem* create_menuitem (GtkApplication *app, GMenu *menu, gchar *text, gchar *accel, gchar *keymap, GCallback function) { GMenuItem *menuitem; GSimpleAction *action; gchar *acckey[2] = { accel, NULL }; gchar *appkey = g_strdup_printf ("app.%s", keymap); action = g_simple_action_new (keymap, NULL); g_action_map_add_action (G_ACTION_MAP (g_application_get_default ()), G_ACTION (action)); gtk_application_set_accels_for_action (app, appkey, (const char**) acckey); menuitem = g_menu_item_new (text, appkey); if (function) g_signal_connect (action, "activate", function, NULL); if (accel) g_menu_item_set_attribute (menuitem, "accel", "s", accel, NULL); g_menu_append_item (menu, menuitem); g_free (appkey); return menuitem; } static void activate_action (GSimpleAction *action, GVariant *parameter, gpointer data) { GVariant *action_state; // radio if (parameter) { g_simple_action_set_state (action, parameter); if (strcmp ((gchar*) g_action_get_name (G_ACTION (action)), "set-theme") == 0) update_theme ((gchar*) g_variant_get_string (parameter, NULL)); else if (strcmp ((gchar*) g_action_get_name (G_ACTION (action)), "set-direction") == 0) update_text_direction ((strcmp (g_variant_get_string (parameter, NULL), "1") == 0) ? 1 : 2); } // checkbox else { action_state = g_action_get_state (G_ACTION (action)); if (g_variant_get_boolean (action_state) == FALSE) g_simple_action_set_state (action, g_variant_new_boolean (TRUE)); else g_simple_action_set_state (action, g_variant_new_boolean (FALSE)); } } static void accels_change (GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state) { // @todo } static void accels_save () { // @todo } // dialogs static void closedialog (GtkDialog *dialog) { gtk_window_destroy (GTK_WINDOW (dialog)); } static void dialog_open () { #if GTK_CHECK_VERSION (4,10,0) GtkFileDialog *dialog = gtk_file_dialog_new (); gtk_file_dialog_set_title (dialog, "GtkFileDialog:Open"); gtk_file_dialog_open_multiple (dialog, GTK_WINDOW (window), NULL, NULL, NULL); #else GtkWidget *dialog = gtk_file_chooser_dialog_new ( "GtkFileChooserDialog:Open", GTK_WINDOW (window), GTK_FILE_CHOOSER_ACTION_OPEN, _gtk("_Cancel"), GTK_RESPONSE_CANCEL, _gtk("_Open"), GTK_RESPONSE_ACCEPT, NULL); gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dialog), TRUE); gtk_widget_set_visible (dialog, TRUE); g_signal_connect (dialog, "response", G_CALLBACK (closedialog), NULL); #endif } static void dialog_save () { #if GTK_CHECK_VERSION (4,10,0) GtkFileDialog *dialog = gtk_file_dialog_new (); gtk_file_dialog_set_title (dialog, "GtkFileDialog:Save"); gtk_file_dialog_save (dialog, GTK_WINDOW (window), NULL, NULL, NULL); #else GtkWidget *dialog = gtk_file_chooser_dialog_new ( "GtkFileChooserDialog:Save", GTK_WINDOW (window), GTK_FILE_CHOOSER_ACTION_SAVE, _gtk("_Cancel"), GTK_RESPONSE_CANCEL, _gtk("_Save"), GTK_RESPONSE_ACCEPT, NULL); gtk_widget_set_visible (dialog, TRUE); g_signal_connect (dialog, "response", G_CALLBACK (closedialog), NULL); #endif } static void dialog_message () { GtkWidget *dialog = gtk_message_dialog_new ( GTK_WINDOW (window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_YES_NO, "GtkMessageDialog"); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), _app("A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme.")); gtk_window_set_title (GTK_WINDOW (dialog), "GtkMessageDialog"); #if GTK_CHECK_VERSION (4,10,0) gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (window)); gtk_widget_set_visible (dialog, TRUE); #else gtk_widget_set_visible (dialog, TRUE); g_signal_connect (dialog, "response", G_CALLBACK (closedialog), NULL); #endif } static void dialog_page_setup () { GtkWidget *dialog = gtk_page_setup_unix_dialog_new ("GtkPageSetupUnixDialog", GTK_WINDOW (window)); #if GTK_CHECK_VERSION (4,10,0) gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (window)); gtk_widget_set_visible (dialog, TRUE); #else gtk_widget_set_visible (dialog, TRUE); g_signal_connect (dialog, "response", G_CALLBACK (closedialog), NULL); #endif } static void dialog_print () { GtkWidget *dialog = gtk_print_unix_dialog_new ("GtkPrintUnixDialog", GTK_WINDOW (window)); #if GTK_CHECK_VERSION (4,10,0) gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (window)); gtk_widget_set_visible (dialog, TRUE); #else gtk_widget_set_visible (dialog, TRUE); g_signal_connect (dialog, "response", G_CALLBACK (closedialog), NULL); #endif } static void dialog_about () { // @common gchar *t1, *t2, *t3, *t4; gtk_show_about_dialog (GTK_WINDOW (window), "version", VERSION, "comments", t1 = g_strdup_printf ("%s\n\n%s\n%s\n\n%s\n%s", _app("A widget factory is a theme preview application for GTK. It displays the various widget types provided by GTK in a single window allowing to see the visual effect of the applied theme."), t2 = g_strdup_printf (_app("Remove %s file"), "~/.awf-gtk-accels"), _app("to reset keyboard shortcuts."), t3 = g_strdup_printf (_app("compiled with gtk %d.%d.%d and glib %d.%d.%d and pango %s"), GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION, GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION, PANGO_VERSION_STRING), t4 = g_strdup_printf (_app(" started with gtk %d.%d.%d and glib %d.%d.%d and pango %s"), gtk_major_version, gtk_minor_version, gtk_micro_version, glib_major_version, glib_minor_version, glib_micro_version, pango_version_string ()) ), "website", "https://github.com/luigifab/awf-extended", "copyright", "Copyright © 2020-2025 Fabrice Creuzot (luigifab)\nCopyright © 2011-2017 Valère Monseur (valr)", "icon-name", GETTEXT_PACKAGE, "logo-icon-name", GETTEXT_PACKAGE, "license", "A widget factory is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.", "wrap-license", TRUE, NULL); g_free (t1); g_free (t2); g_free (t3); g_free (t4); } static void dialog_calendar () { GtkWidget *dialog, *infobar, *label, *calendar, *vbox = BOXV, *area; #if GTK_CHECK_VERSION (4,10,0) dialog = gtk_window_new (); gtk_window_set_title (GTK_WINDOW (dialog), "GtkWindow:Modal"); #else dialog = gtk_dialog_new_with_buttons ( NULL, GTK_WINDOW (window), GTK_DIALOG_DESTROY_WITH_PARENT, NULL, NULL); gtk_window_set_title (GTK_WINDOW (dialog), "GtkDialog"); #endif // info bars and calendar G_GNUC_BEGIN_IGNORE_DEPRECATIONS infobar = gtk_info_bar_new_with_buttons (_gtk("_OK"), GTK_RESPONSE_OK, NULL); gtk_info_bar_set_message_type (GTK_INFO_BAR (infobar), GTK_MESSAGE_INFO); label = gtk_label_new (_app("This is an info bar.")); gtk_info_bar_add_child (GTK_INFO_BAR (infobar), label); add_to (GTK_BOX (vbox), infobar, FALSE, FALSE, 0, 0); infobar = gtk_info_bar_new_with_buttons (_app("Ok"), GTK_RESPONSE_OK, NULL); gtk_info_bar_set_message_type (GTK_INFO_BAR (infobar), GTK_MESSAGE_QUESTION); label = gtk_label_new (_app("This is a question bar.")); gtk_info_bar_add_child (GTK_INFO_BAR (infobar), label); add_to (GTK_BOX (vbox), infobar, FALSE, FALSE, 0, 0); infobar = gtk_info_bar_new (); gtk_info_bar_set_message_type (GTK_INFO_BAR (infobar), GTK_MESSAGE_WARNING); label = gtk_label_new (_app("This is a warning bar.")); gtk_info_bar_add_child (GTK_INFO_BAR (infobar), label); add_to (GTK_BOX (vbox), infobar, FALSE, FALSE, 0, 0); infobar = gtk_info_bar_new (); gtk_info_bar_set_message_type (GTK_INFO_BAR (infobar), GTK_MESSAGE_ERROR); label = gtk_label_new (_app("This is an error bar.")); gtk_info_bar_add_child (GTK_INFO_BAR (infobar), label); add_to (GTK_BOX (vbox), infobar, FALSE, FALSE, 0, 0); calendar = gtk_calendar_new (); gtk_calendar_set_show_day_names (GTK_CALENDAR (calendar), TRUE); gtk_calendar_set_show_week_numbers (GTK_CALENDAR (calendar), TRUE); add_to (GTK_BOX (vbox), calendar, FALSE, FALSE, 0, 0); G_GNUC_END_IGNORE_DEPRECATIONS // dialog #if GTK_CHECK_VERSION (4,10,0) area = BOXV; gtk_window_set_child (GTK_WINDOW (dialog), area); add_to (GTK_BOX (area), vbox, TRUE, TRUE, 7, 7); // @todo buttons #else area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); add_to (GTK_BOX (area), vbox, TRUE, TRUE, 5, 5); gtk_dialog_add_button (GTK_DIALOG (dialog), _gtk("_Cancel"), 0); gtk_dialog_add_button (GTK_DIALOG (dialog), _gtk("_OK"), 0); #endif gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); gtk_widget_set_size_request (dialog, 350, -1); #if GTK_CHECK_VERSION (4,10,0) gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (window)); gtk_widget_set_visible (dialog, TRUE); #else gtk_widget_set_visible (dialog, TRUE); g_signal_connect (dialog, "response", G_CALLBACK (closedialog), NULL); #endif } static void dialog_scales_top () { // @common dialog_scales (GTK_POS_TOP); } static void dialog_scales_bottom () { // @common dialog_scales (GTK_POS_BOTTOM); } static void dialog_scales_right () { // @common dialog_scales (GTK_POS_RIGHT); } static void dialog_scales_left () { // @common dialog_scales (GTK_POS_LEFT); } static void dialog_scales (int position) { GtkWidget *dialog, *area, *hbox = BOXH; GtkWidget *vbox1 = BOXV, *vbox2 = BOXV, *vbox3 = BOXV, *hboxa = BOXH, *hboxb = BOXH; GtkWidget *scale1v, *scale2v, *scale3v, *scale4v, *scale5v, *scale6v, *scale7v, *scale8v, *scale9v, *scale10v, *scale11v, *scale12v; GtkWidget *scale1h, *scale2h, *scale3h, *scale4h, *scale5h, *scale6h, *scale7h, *scale8h, *scale9h, *scale10h, *scale11h, *scale12h; gdouble value = gtk_range_get_value (GTK_RANGE (scale1)); #if GTK_CHECK_VERSION (4,10,0) dialog = gtk_window_new (); gtk_window_set_title (GTK_WINDOW (dialog), "GtkWindow:Modal"); #else dialog = gtk_dialog_new_with_buttons ( NULL, GTK_WINDOW (window), GTK_DIALOG_DESTROY_WITH_PARENT, NULL, NULL); gtk_window_set_title (GTK_WINDOW (dialog), "GtkDialog"); #endif // vertical scales scale1v = create_vertical_scale (value, FALSE, FALSE, position); if (gtk_widget_get_direction (window) == GTK_TEXT_DIR_RTL) // @todo highlight bottom instead of top, why? gtk_widget_add_css_class (scale1v, "top"); scale2v = create_vertical_scale (value, FALSE, FALSE, position); update_marks (GTK_SCALE (scale2v), FALSE, GTK_POS_LEFT); if (gtk_widget_get_direction (window) == GTK_TEXT_DIR_RTL) // @todo highlight bottom instead of top, why? gtk_widget_add_css_class (scale2v, "top"); scale3v = create_vertical_scale (value, FALSE, FALSE, position); update_marks (GTK_SCALE (scale3v), TRUE, GTK_POS_LEFT); if (gtk_widget_get_direction (window) == GTK_TEXT_DIR_RTL) // @todo highlight bottom instead of top, why? gtk_widget_add_css_class (scale3v, "top"); scale4v = create_vertical_scale (value, TRUE, FALSE, position); if (gtk_widget_get_direction (window) == GTK_TEXT_DIR_RTL) // @todo highlight bottom instead of top, why? gtk_widget_add_css_class (scale4v, "top"); scale5v = create_vertical_scale (value, TRUE, FALSE, position); update_marks (GTK_SCALE (scale5v), FALSE, GTK_POS_LEFT); if (gtk_widget_get_direction (window) == GTK_TEXT_DIR_RTL) // @todo highlight bottom instead of top, why? gtk_widget_add_css_class (scale5v, "top"); scale6v = create_vertical_scale (value, TRUE, FALSE, position); update_marks (GTK_SCALE (scale6v), TRUE, GTK_POS_LEFT); if (gtk_widget_get_direction (window) == GTK_TEXT_DIR_RTL) // @todo highlight bottom instead of top, why? gtk_widget_add_css_class (scale6v, "top"); scale7v = create_vertical_scale (value, FALSE, TRUE, position); scale8v = create_vertical_scale (value, FALSE, TRUE, position); update_marks (GTK_SCALE (scale8v), FALSE, GTK_POS_RIGHT); scale9v = create_vertical_scale (value, FALSE, TRUE, position); update_marks (GTK_SCALE (scale9v), TRUE, GTK_POS_RIGHT); scale10v = create_vertical_scale (value, TRUE, TRUE, position); scale11v = create_vertical_scale (value, TRUE, TRUE, position); update_marks (GTK_SCALE (scale11v), FALSE, GTK_POS_RIGHT); scale12v = create_vertical_scale (value, TRUE, TRUE, position); update_marks (GTK_SCALE (scale12v), TRUE, GTK_POS_RIGHT); // horizontal scales scale1h = create_horizontal_scale (value, FALSE, FALSE, position); scale2h = create_horizontal_scale (value, FALSE, FALSE, position); update_marks (GTK_SCALE (scale2h), FALSE, GTK_POS_TOP); scale3h = create_horizontal_scale (value, FALSE, FALSE, position); update_marks (GTK_SCALE (scale3h), TRUE, GTK_POS_TOP); scale4h = create_horizontal_scale (value, TRUE, FALSE, position); scale5h = create_horizontal_scale (value, TRUE, FALSE, position); update_marks (GTK_SCALE (scale5h), FALSE, GTK_POS_TOP); scale6h = create_horizontal_scale (value, TRUE, FALSE, position); update_marks (GTK_SCALE (scale6h), TRUE, GTK_POS_TOP); scale7h = create_horizontal_scale (value, FALSE, TRUE, position); scale8h = create_horizontal_scale (value, FALSE, TRUE, position); update_marks (GTK_SCALE (scale8h), FALSE, GTK_POS_BOTTOM); scale9h = create_horizontal_scale (value, FALSE, TRUE, position); update_marks (GTK_SCALE (scale9h), TRUE, GTK_POS_BOTTOM); scale10h = create_horizontal_scale (value, TRUE, TRUE, position); scale11h = create_horizontal_scale (value, TRUE, TRUE, position); update_marks (GTK_SCALE (scale11h), FALSE, GTK_POS_BOTTOM); scale12h = create_horizontal_scale (value, TRUE, TRUE, position); update_marks (GTK_SCALE (scale12h), TRUE, GTK_POS_BOTTOM); // dialog area = BOXV; gtk_window_set_child (GTK_WINDOW (dialog), area); add_to (GTK_BOX (area), hbox, TRUE, TRUE, 5, 5); add_to (GTK_BOX (hbox), vbox1, TRUE, TRUE, 5, 5); add_to (GTK_BOX (vbox1), scale1h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox1), scale2h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox1), scale3h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox1), scale4h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox1), scale5h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox1), scale6h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hbox), vbox2, TRUE, TRUE, 5, 5); add_to (GTK_BOX (vbox2), hboxa, TRUE, TRUE, 0, 0); add_to (GTK_BOX (hboxa), scale1v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxa), scale2v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxa), scale3v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxa), scale7v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxa), scale8v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxa), scale9v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox2), hboxb, TRUE, TRUE, 0, 0); add_to (GTK_BOX (hboxb), scale4v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxb), scale5v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxb), scale6v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxb), scale10v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxb), scale11v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hboxb), scale12v, FALSE, FALSE, 5, 5); add_to (GTK_BOX (hbox), vbox3, TRUE, TRUE, 5, 5); add_to (GTK_BOX (vbox3), scale7h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox3), scale8h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox3), scale9h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox3), scale10h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox3), scale11h, FALSE, FALSE, 5, 5); add_to (GTK_BOX (vbox3), scale12h, FALSE, FALSE, 5, 5); #if GTK_CHECK_VERSION (4,10,0) // @todo buttons #else gtk_dialog_add_button (GTK_DIALOG (dialog), _gtk("_Cancel"), 0); gtk_dialog_add_button (GTK_DIALOG (dialog), _gtk("_OK"), 0); #endif gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); #if GTK_CHECK_VERSION (4,10,0) gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (window)); gtk_widget_set_visible (dialog, TRUE); #else gtk_widget_set_visible (dialog, TRUE); g_signal_connect (dialog, "response", G_CALLBACK (closedialog), NULL); #endif } // gtk-scroll-tabs for GTK 4 | so same 2.24 - 3.x - 4.x // @see https://github.com/mate-desktop/mate-control-center/blob/master/capplets/common/capplet-util.c // for on_scrolltabs source function is capplet_dialog_page_scroll_event_cb // of mate-appearance-properties from mate-control-center, GNU GPL 2.0+ static gboolean on_scrolltabs (GtkEventControllerScroll *event, double dx, double dy, GtkWidget *widget) { // gtk-scroll-tabs for GTK 4 | so same 2.24 - 3.x - 4.x GtkWidget *child, *event_widget, *action_widget; GtkNotebook *notebook; while (!GTK_IS_NOTEBOOK (widget)) widget = gtk_widget_get_parent (widget); notebook = GTK_NOTEBOOK (widget); child = gtk_notebook_get_nth_page (notebook, gtk_notebook_get_current_page (notebook)); if (child == NULL) return FALSE; // ignore scroll events from the content of the page event_widget = gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (event)); if (event_widget == NULL || event_widget == child || gtk_widget_is_ancestor (event_widget, child)) return FALSE; // and also from the action widgets action_widget = gtk_notebook_get_action_widget (notebook, GTK_PACK_START); if (event_widget == action_widget || (action_widget != NULL && gtk_widget_is_ancestor (event_widget, action_widget))) return FALSE; action_widget = gtk_notebook_get_action_widget (notebook, GTK_PACK_END); if (event_widget == action_widget || (action_widget != NULL && gtk_widget_is_ancestor (event_widget, action_widget))) return FALSE; if ((dy > 0) || (dx > 0)) gtk_notebook_next_page (notebook); else if ((dy < 0) || (dx < 0)) gtk_notebook_prev_page (notebook); return TRUE; } awf-extended-2.9.0/src/awf.pot000066400000000000000000000167621477403510000162020ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-04-01 13:38+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: gtk-awf/src/awf-gtk2.c:309 gtk-awf/src/awf-gtk2.c:2058 #: gtk-awf/src/awf-gtk3.c:302 gtk-awf/src/awf-gtk3.c:2249 #: gtk-awf/src/awf-gtk4.c:294 gtk-awf/src/awf-gtk4.c:2104 #, c-format msgid " started with gtk %d.%d.%d and glib %d.%d.%d and pango %s" msgstr "" #: gtk-awf/src/awf-gtk2.c:1731 gtk-awf/src/awf-gtk2.c:1735 #: gtk-awf/src/awf-gtk2.c:1743 gtk-awf/src/awf-gtk2.c:1748 #: gtk-awf/src/awf-gtk3.c:1921 gtk-awf/src/awf-gtk3.c:1925 #: gtk-awf/src/awf-gtk3.c:1933 gtk-awf/src/awf-gtk3.c:1938 #: gtk-awf/src/awf-gtk4.c:1851 gtk-awf/src/awf-gtk4.c:1865 #: gtk-awf/src/awf-gtk4.c:1877 gtk-awf/src/awf-gtk4.c:1886 msgid "(checked)" msgstr "" #: gtk-awf/src/awf-gtk2.c:1732 gtk-awf/src/awf-gtk2.c:1736 #: gtk-awf/src/awf-gtk2.c:1744 gtk-awf/src/awf-gtk2.c:1749 #: gtk-awf/src/awf-gtk3.c:1922 gtk-awf/src/awf-gtk3.c:1926 #: gtk-awf/src/awf-gtk3.c:1934 gtk-awf/src/awf-gtk3.c:1939 msgid "(inconsistent)" msgstr "" #: gtk-awf/src/awf-gtk2.c:1730 gtk-awf/src/awf-gtk2.c:1734 #: gtk-awf/src/awf-gtk2.c:1741 gtk-awf/src/awf-gtk2.c:1746 #: gtk-awf/src/awf-gtk3.c:1920 gtk-awf/src/awf-gtk3.c:1924 #: gtk-awf/src/awf-gtk3.c:1931 gtk-awf/src/awf-gtk3.c:1936 #: gtk-awf/src/awf-gtk4.c:1846 gtk-awf/src/awf-gtk4.c:1859 #: gtk-awf/src/awf-gtk4.c:1876 gtk-awf/src/awf-gtk4.c:1885 msgid "(unchecked)" msgstr "" #: gtk-awf/src/awf-gtk2.c:297 gtk-awf/src/awf-gtk2.c:673 #: gtk-awf/src/awf-gtk3.c:290 gtk-awf/src/awf-gtk3.c:747 #: gtk-awf/src/awf-gtk4.c:282 gtk-awf/src/awf-gtk4.c:688 #, c-format msgid "A widget factory - GTK %d.%d" msgstr "" #: gtk-awf/src/awf-gtk2.c:601 gtk-awf/src/awf-gtk2.c:1280 #: gtk-awf/src/awf-gtk2.c:2023 gtk-awf/src/awf-gtk2.c:2051 #: gtk-awf/src/awf-gtk3.c:648 gtk-awf/src/awf-gtk3.c:1441 #: gtk-awf/src/awf-gtk3.c:2214 gtk-awf/src/awf-gtk3.c:2242 #: gtk-awf/src/awf-gtk4.c:609 gtk-awf/src/awf-gtk4.c:1398 #: gtk-awf/src/awf-gtk4.c:2049 gtk-awf/src/awf-gtk4.c:2097 msgid "" "A widget factory is a theme preview application for GTK. It displays the " "various widget types provided by GTK in a single window allowing to see the " "visual effect of the applied theme." msgstr "" #: gtk-awf/src/awf-gtk2.c:1708 gtk-awf/src/awf-gtk3.c:1898 #: gtk-awf/src/awf-gtk4.c:1821 msgid "Calendar" msgstr "" #: gtk-awf/src/awf-gtk2.c:300 gtk-awf/src/awf-gtk3.c:293 #: gtk-awf/src/awf-gtk3.c:334 gtk-awf/src/awf-gtk4.c:285 #: gtk-awf/src/awf-gtk4.c:319 msgid "Don't start spinners." msgstr "" #: gtk-awf/src/awf-gtk2.c:1710 gtk-awf/src/awf-gtk3.c:1900 #: gtk-awf/src/awf-gtk4.c:1823 msgid "GtkScales bottom" msgstr "" #: gtk-awf/src/awf-gtk2.c:1712 gtk-awf/src/awf-gtk3.c:1902 #: gtk-awf/src/awf-gtk4.c:1825 msgid "GtkScales left" msgstr "" #: gtk-awf/src/awf-gtk2.c:1711 gtk-awf/src/awf-gtk3.c:1901 #: gtk-awf/src/awf-gtk4.c:1824 msgid "GtkScales right" msgstr "" #: gtk-awf/src/awf-gtk2.c:1709 gtk-awf/src/awf-gtk3.c:1899 #: gtk-awf/src/awf-gtk4.c:1822 msgid "GtkScales top" msgstr "" #: gtk-awf/src/awf-gtk2.c:1797 gtk-awf/src/awf-gtk3.c:1987 #: gtk-awf/src/awf-gtk4.c:1932 msgid "Left to Right (LTR)" msgstr "" #: gtk-awf/src/awf-gtk2.c:299 gtk-awf/src/awf-gtk3.c:292 #: gtk-awf/src/awf-gtk3.c:330 gtk-awf/src/awf-gtk4.c:284 #: gtk-awf/src/awf-gtk4.c:315 msgid "List available themes." msgstr "" #: gtk-awf/src/awf-gtk2.c:1269 gtk-awf/src/awf-gtk2.c:1720 #: gtk-awf/src/awf-gtk3.c:1421 gtk-awf/src/awf-gtk3.c:1910 #: gtk-awf/src/awf-gtk4.c:1384 gtk-awf/src/awf-gtk4.c:1834 msgid "More..." msgstr "" #: gtk-awf/src/awf-gtk2.c:1778 gtk-awf/src/awf-gtk2.c:1791 #: gtk-awf/src/awf-gtk3.c:1968 gtk-awf/src/awf-gtk3.c:1981 #: gtk-awf/src/awf-gtk4.c:1911 gtk-awf/src/awf-gtk4.c:1920 msgid "No themes found" msgstr "" #: gtk-awf/src/awf-gtk2.c:2095 gtk-awf/src/awf-gtk3.c:2286 #: gtk-awf/src/awf-gtk4.c:2149 msgid "Ok" msgstr "" #: gtk-awf/src/awf-gtk2.c:1707 gtk-awf/src/awf-gtk3.c:1897 #: gtk-awf/src/awf-gtk4.c:1820 msgid "Open recent file" msgstr "" #: gtk-awf/src/awf-gtk2.c:2052 gtk-awf/src/awf-gtk3.c:2243 #: gtk-awf/src/awf-gtk4.c:2098 #, c-format msgid "Remove %s file" msgstr "" #: gtk-awf/src/awf-gtk2.c:1803 gtk-awf/src/awf-gtk3.c:1993 #: gtk-awf/src/awf-gtk4.c:1933 msgid "Right to Left (RTL)" msgstr "" #: gtk-awf/src/awf-gtk2.c:302 gtk-awf/src/awf-gtk3.c:295 #: gtk-awf/src/awf-gtk3.c:342 gtk-awf/src/awf-gtk4.c:287 #: gtk-awf/src/awf-gtk4.c:327 #, c-format msgid "Run and save a png screenshot on %s." msgstr "" #: gtk-awf/src/awf-gtk2.c:301 gtk-awf/src/awf-gtk3.c:294 #: gtk-awf/src/awf-gtk3.c:338 gtk-awf/src/awf-gtk4.c:286 #: gtk-awf/src/awf-gtk4.c:323 msgid "Run with the specified theme." msgstr "" #: gtk-awf/src/awf-gtk2.c:298 gtk-awf/src/awf-gtk3.c:291 #: gtk-awf/src/awf-gtk3.c:326 gtk-awf/src/awf-gtk4.c:283 #: gtk-awf/src/awf-gtk4.c:311 msgid "Show version number." msgstr "" #: gtk-awf/src/awf-gtk2.c:303 gtk-awf/src/awf-gtk3.c:296 #: gtk-awf/src/awf-gtk3.c:346 gtk-awf/src/awf-gtk4.c:288 #: gtk-awf/src/awf-gtk4.c:331 msgid "Start with text from left to right (Left-To-Right)." msgstr "" #: gtk-awf/src/awf-gtk2.c:304 gtk-awf/src/awf-gtk3.c:297 #: gtk-awf/src/awf-gtk3.c:350 gtk-awf/src/awf-gtk4.c:289 #: gtk-awf/src/awf-gtk4.c:335 msgid "Start with text from right to left (Right-To-Left)." msgstr "" #: gtk-awf/src/awf-gtk2.c:462 gtk-awf/src/awf-gtk2.c:706 #: gtk-awf/src/awf-gtk3.c:508 gtk-awf/src/awf-gtk3.c:781 #: gtk-awf/src/awf-gtk4.c:473 gtk-awf/src/awf-gtk4.c:728 #, c-format msgid "Theme %s loaded." msgstr "" #: gtk-awf/src/awf-gtk2.c:443 gtk-awf/src/awf-gtk3.c:489 #: gtk-awf/src/awf-gtk4.c:454 #, c-format msgid "Theme %s reloaded." msgstr "" #: gtk-awf/src/awf-gtk2.c:653 gtk-awf/src/awf-gtk3.c:723 #: gtk-awf/src/awf-gtk4.c:668 #, c-format msgid "Theme reloaded, then screenshot saved (%s)." msgstr "" #: gtk-awf/src/awf-gtk2.c:2097 gtk-awf/src/awf-gtk3.c:2288 #: gtk-awf/src/awf-gtk4.c:2151 msgid "This is a question bar." msgstr "" #: gtk-awf/src/awf-gtk2.c:2103 gtk-awf/src/awf-gtk3.c:2294 #: gtk-awf/src/awf-gtk4.c:2157 msgid "This is a warning bar." msgstr "" #: gtk-awf/src/awf-gtk2.c:2109 gtk-awf/src/awf-gtk3.c:2300 #: gtk-awf/src/awf-gtk4.c:2163 msgid "This is an error bar." msgstr "" #: gtk-awf/src/awf-gtk2.c:2091 gtk-awf/src/awf-gtk3.c:2282 #: gtk-awf/src/awf-gtk4.c:2145 msgid "This is an info bar." msgstr "" #: gtk-awf/src/awf-gtk2.c:1701 gtk-awf/src/awf-gtk3.c:1891 #: gtk-awf/src/awf-gtk4.c:1817 msgid "_Options" msgstr "" #: gtk-awf/src/awf-gtk2.c:1759 gtk-awf/src/awf-gtk3.c:1949 #: gtk-awf/src/awf-gtk4.c:1902 msgid "_System themes" msgstr "" #: gtk-awf/src/awf-gtk2.c:1795 gtk-awf/src/awf-gtk3.c:1985 #: gtk-awf/src/awf-gtk4.c:1931 msgid "_Text direction" msgstr "" #: gtk-awf/src/awf-gtk2.c:1781 gtk-awf/src/awf-gtk3.c:1971 #: gtk-awf/src/awf-gtk4.c:1915 msgid "_User themes" msgstr "" #: gtk-awf/src/awf-gtk2.c:305 gtk-awf/src/awf-gtk2.c:2054 #: gtk-awf/src/awf-gtk3.c:298 gtk-awf/src/awf-gtk3.c:2245 #: gtk-awf/src/awf-gtk4.c:290 gtk-awf/src/awf-gtk4.c:2100 #, c-format msgid "compiled with gtk %d.%d.%d and glib %d.%d.%d and pango %s" msgstr "" #: gtk-awf/src/awf-gtk2.c:2053 gtk-awf/src/awf-gtk3.c:2244 #: gtk-awf/src/awf-gtk4.c:2099 msgid "to reset keyboard shortcuts." msgstr "" awf-extended-2.9.0/src/po/000077500000000000000000000000001477403510000153035ustar00rootroot00000000000000awf-extended-2.9.0/src/po/fr.po000066400000000000000000000204351477403510000162560ustar00rootroot00000000000000msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-04-01 13:38+0200\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" #: gtk-awf/src/awf-gtk2.c:309 gtk-awf/src/awf-gtk2.c:2058 #: gtk-awf/src/awf-gtk3.c:302 gtk-awf/src/awf-gtk3.c:2249 #: gtk-awf/src/awf-gtk4.c:294 gtk-awf/src/awf-gtk4.c:2104 #, c-format msgid " started with gtk %d.%d.%d and glib %d.%d.%d and pango %s" msgstr " démarré avec gtk %d.%d.%d et glib %d.%d.%d et pango %s" #: gtk-awf/src/awf-gtk2.c:1731 gtk-awf/src/awf-gtk2.c:1735 #: gtk-awf/src/awf-gtk2.c:1743 gtk-awf/src/awf-gtk2.c:1748 #: gtk-awf/src/awf-gtk3.c:1921 gtk-awf/src/awf-gtk3.c:1925 #: gtk-awf/src/awf-gtk3.c:1933 gtk-awf/src/awf-gtk3.c:1938 #: gtk-awf/src/awf-gtk4.c:1851 gtk-awf/src/awf-gtk4.c:1865 #: gtk-awf/src/awf-gtk4.c:1877 gtk-awf/src/awf-gtk4.c:1886 msgid "(checked)" msgstr "(coché)" #: gtk-awf/src/awf-gtk2.c:1732 gtk-awf/src/awf-gtk2.c:1736 #: gtk-awf/src/awf-gtk2.c:1744 gtk-awf/src/awf-gtk2.c:1749 #: gtk-awf/src/awf-gtk3.c:1922 gtk-awf/src/awf-gtk3.c:1926 #: gtk-awf/src/awf-gtk3.c:1934 gtk-awf/src/awf-gtk3.c:1939 msgid "(inconsistent)" msgstr "(inconsistant)" #: gtk-awf/src/awf-gtk2.c:1730 gtk-awf/src/awf-gtk2.c:1734 #: gtk-awf/src/awf-gtk2.c:1741 gtk-awf/src/awf-gtk2.c:1746 #: gtk-awf/src/awf-gtk3.c:1920 gtk-awf/src/awf-gtk3.c:1924 #: gtk-awf/src/awf-gtk3.c:1931 gtk-awf/src/awf-gtk3.c:1936 #: gtk-awf/src/awf-gtk4.c:1846 gtk-awf/src/awf-gtk4.c:1859 #: gtk-awf/src/awf-gtk4.c:1876 gtk-awf/src/awf-gtk4.c:1885 msgid "(unchecked)" msgstr "(décoché)" #: gtk-awf/src/awf-gtk2.c:297 gtk-awf/src/awf-gtk2.c:673 #: gtk-awf/src/awf-gtk3.c:290 gtk-awf/src/awf-gtk3.c:747 #: gtk-awf/src/awf-gtk4.c:282 gtk-awf/src/awf-gtk4.c:688 #, c-format msgid "A widget factory - GTK %d.%d" msgstr "La fabrique à widgets - GTK %d.%d" #: gtk-awf/src/awf-gtk2.c:601 gtk-awf/src/awf-gtk2.c:1280 #: gtk-awf/src/awf-gtk2.c:2023 gtk-awf/src/awf-gtk2.c:2051 #: gtk-awf/src/awf-gtk3.c:648 gtk-awf/src/awf-gtk3.c:1441 #: gtk-awf/src/awf-gtk3.c:2214 gtk-awf/src/awf-gtk3.c:2242 #: gtk-awf/src/awf-gtk4.c:609 gtk-awf/src/awf-gtk4.c:1398 #: gtk-awf/src/awf-gtk4.c:2049 gtk-awf/src/awf-gtk4.c:2097 msgid "" "A widget factory is a theme preview application for GTK. It displays the " "various widget types provided by GTK in a single window allowing to see the " "visual effect of the applied theme." msgstr "" "La fabrique à widgets est une application d'aperçu de thème pour GTK. Elle " "affiche les différents types de widgets fournis par GTK dans une seule " "fenêtre permettant de voir l'effet visuel du thème appliqué." #: gtk-awf/src/awf-gtk2.c:1708 gtk-awf/src/awf-gtk3.c:1898 #: gtk-awf/src/awf-gtk4.c:1821 msgid "Calendar" msgstr "Calendrier" #: gtk-awf/src/awf-gtk2.c:300 gtk-awf/src/awf-gtk3.c:293 #: gtk-awf/src/awf-gtk3.c:334 gtk-awf/src/awf-gtk4.c:285 #: gtk-awf/src/awf-gtk4.c:319 msgid "Don't start spinners." msgstr "Ne démarre pas les spinners." #: gtk-awf/src/awf-gtk2.c:1710 gtk-awf/src/awf-gtk3.c:1900 #: gtk-awf/src/awf-gtk4.c:1823 msgid "GtkScales bottom" msgstr "GtkScales bottom" #: gtk-awf/src/awf-gtk2.c:1712 gtk-awf/src/awf-gtk3.c:1902 #: gtk-awf/src/awf-gtk4.c:1825 msgid "GtkScales left" msgstr "GtkScales left" #: gtk-awf/src/awf-gtk2.c:1711 gtk-awf/src/awf-gtk3.c:1901 #: gtk-awf/src/awf-gtk4.c:1824 msgid "GtkScales right" msgstr "GtkScales right" #: gtk-awf/src/awf-gtk2.c:1709 gtk-awf/src/awf-gtk3.c:1899 #: gtk-awf/src/awf-gtk4.c:1822 msgid "GtkScales top" msgstr "GtkScales top" #: gtk-awf/src/awf-gtk2.c:1797 gtk-awf/src/awf-gtk3.c:1987 #: gtk-awf/src/awf-gtk4.c:1932 msgid "Left to Right (LTR)" msgstr "Gauche à droite (LTR)" #: gtk-awf/src/awf-gtk2.c:299 gtk-awf/src/awf-gtk3.c:292 #: gtk-awf/src/awf-gtk3.c:330 gtk-awf/src/awf-gtk4.c:284 #: gtk-awf/src/awf-gtk4.c:315 msgid "List available themes." msgstr "Liste les thèmes disponibles." #: gtk-awf/src/awf-gtk2.c:1269 gtk-awf/src/awf-gtk2.c:1720 #: gtk-awf/src/awf-gtk3.c:1421 gtk-awf/src/awf-gtk3.c:1910 #: gtk-awf/src/awf-gtk4.c:1384 gtk-awf/src/awf-gtk4.c:1834 msgid "More..." msgstr "Plus..." #: gtk-awf/src/awf-gtk2.c:1778 gtk-awf/src/awf-gtk2.c:1791 #: gtk-awf/src/awf-gtk3.c:1968 gtk-awf/src/awf-gtk3.c:1981 #: gtk-awf/src/awf-gtk4.c:1911 gtk-awf/src/awf-gtk4.c:1920 msgid "No themes found" msgstr "Aucun thème trouvé" #: gtk-awf/src/awf-gtk2.c:2095 gtk-awf/src/awf-gtk3.c:2286 #: gtk-awf/src/awf-gtk4.c:2149 msgid "Ok" msgstr "Ok" #: gtk-awf/src/awf-gtk2.c:1707 gtk-awf/src/awf-gtk3.c:1897 #: gtk-awf/src/awf-gtk4.c:1820 msgid "Open recent file" msgstr "Ouvrir un fichier récent" #: gtk-awf/src/awf-gtk2.c:2052 gtk-awf/src/awf-gtk3.c:2243 #: gtk-awf/src/awf-gtk4.c:2098 #, c-format msgid "Remove %s file" msgstr "Supprimer le fichier %s" #: gtk-awf/src/awf-gtk2.c:1803 gtk-awf/src/awf-gtk3.c:1993 #: gtk-awf/src/awf-gtk4.c:1933 msgid "Right to Left (RTL)" msgstr "Droite à gauche (RTL)" #: gtk-awf/src/awf-gtk2.c:302 gtk-awf/src/awf-gtk3.c:295 #: gtk-awf/src/awf-gtk3.c:342 gtk-awf/src/awf-gtk4.c:287 #: gtk-awf/src/awf-gtk4.c:327 #, c-format msgid "Run and save a png screenshot on %s." msgstr "Démarre et enregistre une capture d'écran png lors du %s." #: gtk-awf/src/awf-gtk2.c:301 gtk-awf/src/awf-gtk3.c:294 #: gtk-awf/src/awf-gtk3.c:338 gtk-awf/src/awf-gtk4.c:286 #: gtk-awf/src/awf-gtk4.c:323 msgid "Run with the specified theme." msgstr "Démarre avec le thème spécifié." #: gtk-awf/src/awf-gtk2.c:298 gtk-awf/src/awf-gtk3.c:291 #: gtk-awf/src/awf-gtk3.c:326 gtk-awf/src/awf-gtk4.c:283 #: gtk-awf/src/awf-gtk4.c:311 msgid "Show version number." msgstr "Affiche le numéro de version." #: gtk-awf/src/awf-gtk2.c:303 gtk-awf/src/awf-gtk3.c:296 #: gtk-awf/src/awf-gtk3.c:346 gtk-awf/src/awf-gtk4.c:288 #: gtk-awf/src/awf-gtk4.c:331 msgid "Start with text from left to right (Left-To-Right)." msgstr "Démarre avec le texte de gauche à droite (Left-To-Right)." #: gtk-awf/src/awf-gtk2.c:304 gtk-awf/src/awf-gtk3.c:297 #: gtk-awf/src/awf-gtk3.c:350 gtk-awf/src/awf-gtk4.c:289 #: gtk-awf/src/awf-gtk4.c:335 msgid "Start with text from right to left (Right-To-Left)." msgstr "Démarre avec le texte de droite à gauche (Right-To-Left)." #: gtk-awf/src/awf-gtk2.c:462 gtk-awf/src/awf-gtk2.c:706 #: gtk-awf/src/awf-gtk3.c:508 gtk-awf/src/awf-gtk3.c:781 #: gtk-awf/src/awf-gtk4.c:473 gtk-awf/src/awf-gtk4.c:728 #, c-format msgid "Theme %s loaded." msgstr "Thème %s chargé." #: gtk-awf/src/awf-gtk2.c:443 gtk-awf/src/awf-gtk3.c:489 #: gtk-awf/src/awf-gtk4.c:454 #, c-format msgid "Theme %s reloaded." msgstr "Thème %s rechargé." #: gtk-awf/src/awf-gtk2.c:653 gtk-awf/src/awf-gtk3.c:723 #: gtk-awf/src/awf-gtk4.c:668 #, c-format msgid "Theme reloaded, then screenshot saved (%s)." msgstr "Thème rechargé, puis capture d'écran enregistrée (%s)." #: gtk-awf/src/awf-gtk2.c:2097 gtk-awf/src/awf-gtk3.c:2288 #: gtk-awf/src/awf-gtk4.c:2151 msgid "This is a question bar." msgstr "Ceci est une barre de question." #: gtk-awf/src/awf-gtk2.c:2103 gtk-awf/src/awf-gtk3.c:2294 #: gtk-awf/src/awf-gtk4.c:2157 msgid "This is a warning bar." msgstr "Ceci est une barre d'avertissement." #: gtk-awf/src/awf-gtk2.c:2109 gtk-awf/src/awf-gtk3.c:2300 #: gtk-awf/src/awf-gtk4.c:2163 msgid "This is an error bar." msgstr "Ceci est une barre d'erreur." #: gtk-awf/src/awf-gtk2.c:2091 gtk-awf/src/awf-gtk3.c:2282 #: gtk-awf/src/awf-gtk4.c:2145 msgid "This is an info bar." msgstr "Ceci est une barre d'information." #: gtk-awf/src/awf-gtk2.c:1701 gtk-awf/src/awf-gtk3.c:1891 #: gtk-awf/src/awf-gtk4.c:1817 msgid "_Options" msgstr "_Options" #: gtk-awf/src/awf-gtk2.c:1759 gtk-awf/src/awf-gtk3.c:1949 #: gtk-awf/src/awf-gtk4.c:1902 msgid "_System themes" msgstr "Thèmes _système" #: gtk-awf/src/awf-gtk2.c:1795 gtk-awf/src/awf-gtk3.c:1985 #: gtk-awf/src/awf-gtk4.c:1931 msgid "_Text direction" msgstr "Direction du _texte" #: gtk-awf/src/awf-gtk2.c:1781 gtk-awf/src/awf-gtk3.c:1971 #: gtk-awf/src/awf-gtk4.c:1915 msgid "_User themes" msgstr "Thèmes _utilisateur" #: gtk-awf/src/awf-gtk2.c:305 gtk-awf/src/awf-gtk2.c:2054 #: gtk-awf/src/awf-gtk3.c:298 gtk-awf/src/awf-gtk3.c:2245 #: gtk-awf/src/awf-gtk4.c:290 gtk-awf/src/awf-gtk4.c:2100 #, c-format msgid "compiled with gtk %d.%d.%d and glib %d.%d.%d and pango %s" msgstr " compilé avec gtk %d.%d.%d et glib %d.%d.%d et pango %s" #: gtk-awf/src/awf-gtk2.c:2053 gtk-awf/src/awf-gtk3.c:2244 #: gtk-awf/src/awf-gtk4.c:2099 msgid "to reset keyboard shortcuts." msgstr "pour réinitialiser les raccourcis clavier."