pax_global_header00006660000000000000000000000064136056575430014530gustar00rootroot0000000000000052 comment=ee7e43e39042815210ea74a86f42b3dfc6042f8f xapps-1.6.10/000077500000000000000000000000001360565754300127505ustar00rootroot00000000000000xapps-1.6.10/.circleci/000077500000000000000000000000001360565754300146035ustar00rootroot00000000000000xapps-1.6.10/.circleci/config.yml000066400000000000000000000030461360565754300165760ustar00rootroot00000000000000version: 2.0 shared: &shared steps: - checkout - run: name: Prepare environment command: apt-get update - run: name: Build project command: mint-build -i - run: name: Prepare packages command: | if [ -z $CI_PULL_REQUEST ]; then mkdir /packages mv /root/*.deb /packages/ git log > /packages/git.log cd / tar zcvf packages.tar.gz packages fi - run: name: Deploy packages to Github command: | if [ -z $CI_PULL_REQUEST ]; then wget https://github.com/tcnksm/ghr/releases/download/v0.5.4/ghr_v0.5.4_linux_amd64.zip apt-get install --yes unzip unzip ghr_v0.5.4_linux_amd64.zip TAG="master".$CIRCLE_JOB ./ghr -t $GITHUB_TOKEN -u $CIRCLE_PROJECT_USERNAME -r $CIRCLE_PROJECT_REPONAME -replace $TAG /packages.tar.gz ./ghr -t $GITHUB_TOKEN -u $CIRCLE_PROJECT_USERNAME -r $CIRCLE_PROJECT_REPONAME -recreate -b "Latest unstable packages" $TAG /packages.tar.gz fi jobs: "mint19": <<: *shared docker: - image: linuxmintd/mint19-amd64 "lmde3": <<: *shared docker: - image: linuxmintd/lmde3-amd64 workflows: version: 2 build: jobs: - "mint19" - "lmde3" xapps-1.6.10/AUTHORS000066400000000000000000000003731360565754300140230ustar00rootroot00000000000000 For a full list of contributors, please check: - https://github.com/linuxmint/xapps/graphs/contributors - The git log at https://github.com/linuxmint/xapps Also, Weitian Leung is the author of /usr/bin/xfce4-set-wallpaper.xapps-1.6.10/COPYING000066400000000000000000001044661360565754300140160ustar00rootroot00000000000000GNU 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 .xapps-1.6.10/COPYING.LESSER000066400000000000000000000167431360565754300150120ustar00rootroot00000000000000 GNU LESSER 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. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser 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 Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. xapps-1.6.10/ChangeLog000066400000000000000000000000011360565754300145110ustar00rootroot00000000000000 xapps-1.6.10/README.md000066400000000000000000000053731360565754300142370ustar00rootroot00000000000000This project gathers the components which are common to multiple desktop environments and required to implement cross-DE solutions. # xapp-common A set of resources and tools. # libxapp A library available in C, Python and other languages (via Gobject Introspection). # Scope In the long term Xapps are there to provide applications to users in multiple DEs, but also to provide building blocks, resources and libraries to Linux developers who want to develop applications which work well in multiple DEs. This project is still relatively new though and we can't yet commit to a stable ABI. You are welcome to use libxapp or xapps-common in your application, but if you do, please make sure to tell us, so that we can communicate with you going forward about any potential changes. # API Reference http://developer.linuxmint.com/xapps/reference/index.html ## XAppMonitorBlanker XAppMonitorBlanker is used to blank other monitors. It takes a window as an argument and blanks all the monitors but the one where the window is located. This is particularly useful in multi-monitor situations, for presentations, full screen media playback etc.. `XAppMonitorBlanker *xapp_monitor_blanker_new (void);` `void xapp_monitor_blanker_blank_other_monitors (XAppMonitorBlanker *self, GtkWindow *window);` `void xapp_monitor_blanker_unblank_monitors (XAppMonitorBlanker *self);` `gboolean xapp_monitor_blanker_are_monitors_blanked (XAppMonitorBlanker *self);` This is used by: - xplayer ## XAppKbdLayoutController XAppKbdLayoutController is used to get a keyboard layout code or flag for a given locale. `XAppKbdLayoutController *xapp_kbd_layout_controller_new (void);` `gboolean xapp_kbd_layout_controller_get_enabled (XAppKbdLayoutController *controller);` `guint xapp_kbd_layout_controller_get_current_group (XAppKbdLayoutController *controller);` `void xapp_kbd_layout_controller_set_current_group (XAppKbdLayoutController *controller, guint group);` `void xapp_kbd_layout_controller_next_group (XAppKbdLayoutController *controller);` `void xapp_kbd_layout_controller_previous_group (XAppKbdLayoutController *controller);` `gchar *xapp_kbd_layout_controller_get_current_name (XAppKbdLayoutController *controller);` `gchar **xapp_kbd_layout_controller_get_all_names (XAppKbdLayoutController *controller);` `gchar *xapp_kbd_layout_controller_get_current_icon_name (XAppKbdLayoutController *controller);` `gchar *xapp_kbd_layout_controller_get_icon_name_for_group (XAppKbdLayoutController *controller, guint group);` `gchar *xapp_kbd_layout_controller_get_short_name (XAppKbdLayoutController *controller);` `gchar *xapp_kbd_layout_controller_get_short_name_for_group (XAppKbdLayoutController *controller, guint group);` This is used by: - cinnamon-screensaver - cinnamon keyboard applet xapps-1.6.10/debian/000077500000000000000000000000001360565754300141725ustar00rootroot00000000000000xapps-1.6.10/debian/changelog000066400000000000000000000364501360565754300160540ustar00rootroot00000000000000xapp (1.6.10) tricia; urgency=medium [ Michael Webster ] * xapp-status-icon.c: Sync the visible state of the fallback GtkStatusIcon when it is first created. * xapp-status-icon.c: Fix the timeout duration for xapp_status_icon_any_monitors. -- Clement Lefebvre Thu, 09 Jan 2020 17:13:49 +0000 xapp (1.6.9) tricia; urgency=medium [ Michael Webster ] * xapp-icon-chooser-dialog.c: fix hidpi icon rendering and spacing. [ Clement Lefebvre ] * l10n: Update translations [ Michael Webster ] * xapp-status-icon.c: Allow a primary-click to activate appindicator icons when they have set a 'secondary activate' target. Otherwise, have primary open the menu as it ordinarily would. -- Clement Lefebvre Tue, 07 Jan 2020 10:21:15 +0000 xapp (1.6.8) tricia; urgency=medium * l10n: Update translations -- Clement Lefebvre Wed, 11 Dec 2019 14:57:44 +0000 xapp (1.6.7) tricia; urgency=medium [ Michael Webster ] * xapp-status-icon.c: Reposition the menu when part of it would end up below the workarea of the monitor. * mate-xapp-status-applet.py: Call widget.show_all() before binding to the proxy's visible property. The binding is one way only - local changes can override the state initially set by the proxy. -- Clement Lefebvre Tue, 10 Dec 2019 09:48:37 +0000 xapp (1.6.6) tricia; urgency=medium [ Michael Webster ] * mate-xapp-status-applet.py: Add a small margin at either end of the applet, and allow ctrl-right-clicks anywhere on it, so the user can bring up the About menu. -- Clement Lefebvre Wed, 04 Dec 2019 16:24:15 +0000 xapp (1.6.5) tricia; urgency=medium [ Michael Webster ] * mate-xapp-status-applet.py: Hardcode symbolic icons to 22px. -- Clement Lefebvre Fri, 29 Nov 2019 18:33:05 +0000 xapp (1.6.4) tricia; urgency=medium * Mate applet: Don't use a handle -- Clement Lefebvre Thu, 28 Nov 2019 19:58:37 +0000 xapp (1.6.3) tricia; urgency=medium * l10n: Update translations -- Clement Lefebvre Tue, 26 Nov 2019 17:11:36 +0000 xapp (1.6.2) tricia; urgency=medium [ Eli Schwartz ] * mate applet: fix configuring * mate applet: fix regression in install location * debian: fixup changed file locations [ Michael Webster ] * mate-xapp-status-applet.py: handle a null icon name correctly. * test-scripts: have xapp-status-applet sort icons in the same manner the real applets do (symbolic to the right, then by alpha process name). * xapp-status-icon.c: Keep an account of button presses so an orphan release doesn't activate or pop up a menu. * xapp-status-icon: Track and notify changes in types of support for the icon - notify when a status icon is picked up by a native applet, a traditional system tray, or is not being picked up by anything. * xapp-status-icon.c: Replace g_enum_to_string with a custom function, this isn't available with lmde's glib. -- Clement Lefebvre Fri, 22 Nov 2019 10:36:41 +0000 xapp (1.6.1) tricia; urgency=medium [ Michael Webster ] * xapp-status-icon: Add a function to check for the existence of any active status applets. -- Clement Lefebvre Wed, 13 Nov 2019 17:33:22 +0100 xapp (1.6.0) tricia; urgency=medium [ Clement Lefebvre ] * Implement XAppStatusIcon (#67) [ James Ross ] * libxapp: cleanup compile warnings (#69) [ Michael Webster ] * status icons: Add a monitor class for applets - XAppStatusIconMonitor, (#70) * test-scripts: add a status-icon-via-libappindicator script. * xapp-status-icon.c: Remove leftover debug line * xapp-status-icon: When a menu is provided to XAppStatusIcon, handle positioning and showing it internally instead of requiring the application to do it. * xapp-status-icon.c: Use G_ class macros to cleanup header file, fix xapp_status_icon_get_menu() (copy/paste error). * Add some useful build C-flags, fix test script exec bit. [ Clement Lefebvre ] * Add API reference in docs/reference/ * Set theme jekyll-theme-architect * README: Add link to API reference [ Michael Webster ] * xapp-status-icon.c: Emit 'activate' during fallback status icon activation. * docs: Generate html automatically [ Stephen Collins ] * xapp-icon-chooser-dialog.c: Remove unused variable * icon chooser dialog: add default_icon property * icon chooser dialog: add *_add_custom_category () function [ Michael Webster ] * Add a Mate status applet (#72) * xapp-status-icon.c: Refactor event handling. [ Stephen Collins ] * xapp-icon-chooser-dialog.c: prevent segfault on non-existent icon name (#76) [ Clement Lefebvre ] * IconChooserButton: Add the ability to set the default category (#77) [ Stephen Collins ] * xapp-icon-chooser-button.c: add missing dispose method (#78) [ Michael Webster ] * mate-xapp-status-applet.py: Make improvements to event handling and widget appearance during clicks. * Add a custom install script for installing the generated header file. * Add i18n for the mate applet. * mate applet: Add an about window, use more appropriate install locations, move build replacement strings to a separate imported file. * xapp-status-icon.c: During async ops, when checking for cancellation, use the error code, as the cancellable may have reset in the interim, but the code will be correct. [ Michael Webster ] * status icons: Support multiple icons from the same process. [ Clement Lefebvre ] * Revert "docs: Generate html automatically" * Add a makedoc script to update docs/reference * Update reference docs [ Stephen Collins ] * xapp-icon-chooser-dialog.c: color the symbolic icons properly and fix hidpi (#79) [ Clement Lefebvre ] * l10n: Update POT -- Clement Lefebvre Tue, 12 Nov 2019 11:12:12 +0100 xapp (1.4.9) tina; urgency=medium [ Michael Webster ] * Fix a couple of copy/paste mistakes. * xapp-icon-chooser-button.c: Only create the chooser dialog when needed. -- Clement Lefebvre Tue, 20 Aug 2019 10:52:32 +0200 xapp (1.4.8) tina; urgency=medium * l10n: Update translations -- Clement Lefebvre Wed, 10 Jul 2019 11:10:06 +0200 xapp (1.4.7) tina; urgency=medium * l10n: Update translations -- Clement Lefebvre Sun, 23 Jun 2019 15:24:11 +0200 xapp (1.4.6) tina; urgency=medium [ Stephen Collins ] * xapp-icon-chooser-button.c: make dialog inherit modal state (#64) -- Clement Lefebvre Fri, 14 Jun 2019 12:00:33 +0100 xapp (1.4.5) tessa; urgency=medium * l10n: Update translations -- Clement Lefebvre Tue, 11 Dec 2018 14:21:26 +0000 xapp (1.4.4) tessa; urgency=medium * Update translations -- Clement Lefebvre Tue, 27 Nov 2018 18:16:32 +0000 xapp (1.4.3) tessa; urgency=medium [ Michael Webster ] * xapp-icon-chooser-dialog.c: Don't deep copy the category's icon list, just shallow copy and only free the strings once. This is faster. -- Clement Lefebvre Tue, 27 Nov 2018 17:24:54 +0000 xapp (1.4.2) tessa; urgency=medium [ Michael Webster ] * XAppGtkWindow: make derivable type. * xapp-icon-chooser-dialog: use XAppGtkWindow as a parent class, make the default window size slightly taller to prevent a category scroll bar under typical situations, remove the skip-taskbar hint in the test script. * xapp-gtk-window.c: Fix previous commit, initialize priv. * xapp-icon-chooser-dialog.c: Give the window the title 'Choose an icon'. * various improvements (#61) [ Clement Lefebvre ] * l10n: Update POT [ Michael Webster ] * xapp-icon-chooser-dialog.c: Only display icons that belong to contexts. -- Clement Lefebvre Mon, 19 Nov 2018 10:03:21 +0000 xapp (1.4.1) tessa; urgency=medium [ Stephen Collins ] * icon chooser dialog: Prevent the dialog from being destroyed when the window close button is clicked. This was causing an issue where the dialog will not reopen in some cases. (#56) * icon chooser button: fix image not updating when the icon property is set (#57) * icon chooser dialog: initialize the default value for the allow_paths property. it was causing file paths to not work when the property wasn't set, even though the browse button was showing (#59) * icon chooser button: prevent string pointer issues when calling icon_… (#58) * icon chooser button: enforce image size when using paths [ Michael Webster ] * xapp-icon-chooser-button.h: add missing public method and fix annotation for it. -- Clement Lefebvre Mon, 12 Nov 2018 15:13:01 +0000 xapp (1.4.0) tessa; urgency=medium [ JosephMcc ] * Add an XAppStackSidebar widget (#45) * stack-sidear: Simplify a bit * stack-sidebar: Allow using in Glade [ Michael Webster ] * xapp-stack-sidebar.c: Set our internal children visible during construction. [ JosephMcc ] * icons: Add new icons for the nemo preferences window * prefs-window: Use XAppStackSidebar [ Stephen Collins ] * Add an icon chooser dialog (#51) [ JosephMcc ] * icon-chooser: Do a bit of restyling (#52) [ Fabio Fantoni ] * Improve debian packaging (#42) [ Stephen Collins ] * fix segfault in icon chooser dialog and ensure a category is always selected (#54) * Add an icon chooser button. Displays an image of the icon and opens the icon chooser dialog on click. (#53) [ JosephMcc ] * prefs-window: Restyle to better match other dialogs (#55) [ Michael Webster ] * xapp-icon-chooser-dialog: include the generated enums header in the .c file so it does not break C application compilation. * xapp-icon-chooser-dialog: Add xapp_icon_chooser_dialog_add_button(). [ Clement Lefebvre ] * l10n: Add makepot and de-couple POT from build system -- Clement Lefebvre Tue, 30 Oct 2018 15:26:24 +0000 xapp (1.2.2) tara; urgency=medium [ Fabio Fantoni ] * circleci: remove mint18 job (#41) [ Michael Webster ] * xapp-gtk-window.c: Check for x11 at a more appropriate time. [ Clement Lefebvre ] * Pastebin: Replace gist with termbin -- Clement Lefebvre Tue, 17 Jul 2018 09:35:34 +0200 xapp (1.2.1) tara; urgency=medium [ Michael Webster ] * icons: Add category-search-symbolic -- Clement Lefebvre Sun, 06 May 2018 14:34:17 +0100 xapp (1.2.0) tara; urgency=medium [ Clement Lefebvre ] * Add CI configuration [ Michael Webster ] * Build: Switch to Meson (#34) * docs/meson.build: split mkdb args properly. (fixes arch build) * Fix post-install script shebang, remove the schema file from translation tracking. * build: make docs optional, but enabled in debian build. Add deprecated warnings option as well. * xapp-gtk-window.c: use gdk_error_trap_pop_ignored to quiet build warning. * xapp-gtk-window.c: Skip x11 calls if we're not running an x session. * xapp-gtk-window.c: only do an x11 check once, cache the result. [ JosephMcc ] * prefs-window: Remove a stray separator [ Michael Webster ] * build: Fix pkg-config generation to require header-file-included libs (fixes CI build for nemo) [ NikoKrause ] * Add media-mount-symbolic icon (#37) * extract/compress icons for nemo-fileroller (#38) [ Fabio Fantoni ] * debian: small improvements about python * debian: wrap-and-sort -bst * update debian/copyright * Bump debhelper build-dep and compat to 10 * add debian/not-installed * Drop dh's parallel arg (no longer needed with dh >= 10) -- Clement Lefebvre Mon, 16 Apr 2018 15:39:24 +0100 xapp (1.0.4) sylvia; urgency=medium [ Clement Lefebvre ] * Packaging: Change description [ Michael Webster ] * Add xapp-gtk-utils.c/.h * Remove extra spaces inserted by clandestine foreign hackers. * Add XAppGtkWindow, with methods that shadow GtkWindow's icon setting ones. This way, programs only need to change the window class, rather than adding extra code. * xapp-gtk-window: Add wrapper functions for GtkWindow subclasses. * xapp-gtk-window.*: Fix argument type for wrapper function. * xapp-gtk-window: Add progress features, refactor, add demo script for XAppGtkWindow. * xapp-gtk-window test script: Add an animate button (to test real-world effects on system reponsiveness while an operation is running.) * all: Fix build warnings, documentation. * xapp-gtk-window: Make xapp_gtk_window_new() handle the same arguments as gtk_window_new(). * all: Allow XAppGtkWindows to be used in builder (ui) files and in Glade. * update some files modified by the build * pygobject/XApp.py: simplify and add an explanation as to why this file is here (to remind me in a year.) * xapp-gtk-window.c: Add xid-based functions * xapp-gtk-window: Move the xlib include into the .c file - it can cause namespace collisions (notably synaptic.) It's ok to treat "Window" as an unsigned long, because that's what they are. [ Clement Lefebvre ] * xapp-gtk-window: Trap X errors when setting progress * Add a VAPI file to support Vala * Add a dependency on libxkbfile-dev for -dev pkg and build-dep. -- Clement Lefebvre Tue, 24 Oct 2017 12:06:19 +0100 xapp (1.0.3) sonya; urgency=medium [ Michael Webster ] * Fix build * xapp-kbd-layout-controller - update test script to reflect current api/intent [ Clement Lefebvre ] * Review licensing * Handle exceptions in usr/bin/upload-system-info [ JosephMcc ] * Add a couple of symbolic pane visibility icons * icons: Add an icon for regex-search [ leigh123linux ] * switch to the correct python deps [ Michael Webster ] * xapp-kbd-layout-controller.c: Allow up to 3 character labels. [ JosephMcc ] * Complete our set of pane icons * Add support for building gtk-doc [ leigh123linux ] * Migrate away from gnome-common deprecated vars and macros * Use python3 as all scripts are in python3 -- Clement Lefebvre Wed, 03 May 2017 11:27:21 +0100 xapp (1.0.2) serena; urgency=medium [ Clement Lefebvre ] * Implement window blanking * Continued implementation of monitor blanking * Display: properly initialize values and add a function to know if monitors are blanked [ JosephMcc ] * xapp-display.c: Add a missing cast [ Clement Lefebvre ] * Added some symbolic icons needed by Xed [ JosephMcc ] * icons: Redesign the xapp-searchbar icons * formatting: Clean up code formatting [ Emmanuel ] * properly declare variable used in for loops [ JosephMcc ] * xapp-display: Add a missing cast * xapp-display: Don't use deprecated gtk_widget_modify_bg [ Michael Webster ] * debian: Fix multiarch location of typelib file, don't strip debug symbols. * Add XAppKbdLayoutController - this is a wrapper around libgnomekbd api to provide unique icons for each layout. * Update debian/control * Cleanup some leftover dependencies, some unneeded files, clean up gir scanning. [ Clement Lefebvre ] * Added /usr/bin/pastebin and /usr/bin/upload-system-info * Pastebin: Added support for fpaste * libxapp: Rename XAppDisplay -> XAppMonitorBlanker * Create README.md [ leigh123linux ] * Fix Warnings [ Michael Webster ] * Rework XAppKbdLayoutController: -- Clement Lefebvre Mon, 07 Nov 2016 15:56:44 +0000 xapp (1.0.1) sarah; urgency=medium * Initial version -- Clement Lefebvre Sun, 21 Aug 2016 11:59:50 +0100 xapps-1.6.10/debian/clean000066400000000000000000000000151360565754300151730ustar00rootroot00000000000000debian/build/xapps-1.6.10/debian/compat000066400000000000000000000000031360565754300153710ustar00rootroot0000000000000010 xapps-1.6.10/debian/control000066400000000000000000000042121360565754300155740ustar00rootroot00000000000000Source: xapp Section: x11 Priority: optional Maintainer: Clement Lefebvre Build-Depends: debhelper (>= 10), dh-python, dpkg-dev (>= 1.15.1), gobject-introspection (>= 0.10.2-1~), gtk-doc-tools (>= 1.4), intltool (>= 0.40.6), libgdk-pixbuf2.0-dev (>= 2.22.0), libgirepository1.0-dev (>= 0.10.2-1~), libglib2.0-dev (>= 2.37.3), libgnomekbd-dev, libgtk-3-dev (>= 3.3.16), libx11-dev, libxkbfile-dev, meson, python, python-gi-dev, python3, valac, Standards-Version: 3.9.6 Package: gir1.2-xapp-1.0 Section: introspection Architecture: any Depends: ${gir:Depends}, ${misc:Depends}, ${python3:Depends}, ${python:Depends}, ${shlibs:Depends}, Description: Introspection data for XApp This package contains the introspection data for XApp. Package: libxapp-dbg Section: debug Priority: extra Architecture: any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} Depends: libxapp1 (= ${binary:Version}), ${misc:Depends} Description: XApp library - debug symbols This package contains the symbols files needed to debug the XApp library. Package: libxapp-dev Section: libdevel Architecture: any Depends: gir1.2-xapp-1.0 (= ${binary:Version}), libgnomekbd-dev, libgtk-3-dev (>= 3.3.16), libxapp1 (= ${binary:Version}), libxkbfile-dev, ${misc:Depends}, Description: XApp library - development files This package provides the include files and static library for the XApp library functions. Package: libxapp1 Section: libs Architecture: any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} Depends: libgnomekbd8, xapps-common (>= ${source:Version}), ${misc:Depends}, ${shlibs:Depends}, Description: XApp library This library is used by several Xapp apps. Package: xapps-common Architecture: all Multi-Arch: foreign Depends: inxi, python3, python3-gi, xdg-utils, ${misc:Depends}, ${python3:Depends}, Description: Common files for XApp desktop apps This package includes files that are shared between several XApp apps (i18n files and configuration schemas). Package: xapps-doc Section: doc Architecture: all Depends: devhelp, ${misc:Depends} Description: Libxapp documentation This package contains documentation for XApp library xapps-1.6.10/debian/copyright000066400000000000000000000014401360565754300161240ustar00rootroot00000000000000Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: xapps Source: https://github.com/linuxmint/xapps Files: * Copyright: 2016, Linux Mint License: LGPL-3+ This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License V3. . The complete text of the GNU Library General Public License can be found in "/usr/share/common-licenses/LGPL-3". Files: files/usr/bin/xfce4-set-wallpaper Copyright: Weitian Leung 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 V3. . The complete text of the GNU Library General Public License can be found in "/usr/share/common-licenses/GPL-3". xapps-1.6.10/debian/gir1.2-xapp-1.0.install000066400000000000000000000001341360565754300200240ustar00rootroot00000000000000usr/lib/*/girepository-1.0/XApp-1.0.typelib usr/lib/python*/dist-packages/gi/overrides/*.py xapps-1.6.10/debian/libxapp-dev.install000066400000000000000000000003251360565754300177750ustar00rootroot00000000000000usr/include/xapp/libxapp usr/lib/*/libxapp.so usr/lib/*/pkgconfig/xapp.pc usr/share/gir-1.0/XApp-1.0.gir usr/share/glade/catalogs/xapp-glade-catalog.xml usr/share/vala/vapi/xapp.deps usr/share/vala/vapi/xapp.vapi xapps-1.6.10/debian/libxapp1.install000066400000000000000000000000301360565754300172730ustar00rootroot00000000000000usr/lib/*/libxapp.so.1* xapps-1.6.10/debian/not-installed000066400000000000000000000004011360565754300166650ustar00rootroot00000000000000# We are not using libtool files usr/lib/*/libxapp.la # python gi override files that must not install usr/lib/python*/dist-packages/gi/overrides/*.pyc usr/lib/python*/dist-packages/gi/overrides/*.pyo usr/lib/python3/dist-packages/gi/overrides/__pycache__/ xapps-1.6.10/debian/rules000077500000000000000000000011031360565754300152450ustar00rootroot00000000000000#!/usr/bin/make -f # FIXME: much of this can be removed once we move off of xenial/mint 18 base support # meson support is baked in %: dh $@ --with=gir,python2,python3 override_dh_auto_configure: mkdir -p debian/build meson debian/build \ --prefix=/usr \ --buildtype=plain \ -D docs=true \ -D deprecated_warnings=false override_dh_strip: dh_strip --dbg-package=libxapp-dbg override_dh_auto_build: ninja -C debian/build override_dh_auto_test: ninja -C debian/build test override_dh_auto_install: DESTDIR=${CURDIR}/debian/tmp \ ninja -C debian/build install xapps-1.6.10/debian/source/000077500000000000000000000000001360565754300154725ustar00rootroot00000000000000xapps-1.6.10/debian/source/format000066400000000000000000000000151360565754300167010ustar00rootroot000000000000003.0 (native) xapps-1.6.10/debian/xapps-common.install000066400000000000000000000002161360565754300202020ustar00rootroot00000000000000usr/share/glib-2.0/schemas usr/bin/ usr/share/icons usr/share/locale usr/libexec/xapps usr/share/mate-panel/applets usr/share/dbus-1/services xapps-1.6.10/debian/xapps-doc.install000066400000000000000000000000221360565754300174520ustar00rootroot00000000000000/usr/share/gtk-docxapps-1.6.10/docs/000077500000000000000000000000001360565754300137005ustar00rootroot00000000000000xapps-1.6.10/docs/_config.yml000066400000000000000000000000351360565754300160250ustar00rootroot00000000000000theme: jekyll-theme-architectxapps-1.6.10/docs/meson.build000066400000000000000000000005701360565754300160440ustar00rootroot00000000000000subdir('xml') gnome.gtkdoc('libxapp', install: true, src_dir: [ join_paths(meson.source_root(), 'libxapp'), join_paths(meson.build_root(), 'libxapp'), ], dependencies: libxapp_dep, gobject_typesfile: 'libxapp.types', main_xml: 'xapp-docs.xml', scan_args: ['--rebuild-types'], mkdb_args: ['--xml-mode', '--output-format=xml'], )xapps-1.6.10/docs/reference/000077500000000000000000000000001360565754300156365ustar00rootroot00000000000000xapps-1.6.10/docs/reference/XAppGtkWindow.html000066400000000000000000001106061360565754300212360ustar00rootroot00000000000000 XAppGtkWindow: XApp Reference Manual

XAppGtkWindow

XAppGtkWindow — A subclass of GtkWindow that allows additional communication with the window manager.

Types and Values

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── GtkWidget
            ╰── GtkContainer
                ╰── GtkBin
                    ╰── GtkWindow
                        ╰── XAppGtkWindow
                            ╰── XAppIconChooserDialog

Implemented Interfaces

XAppGtkWindow implements AtkImplementorIface and GtkBuildable.

Description

This widget is a simple subclass of GtkWindow that provides the following additional capabilities:

  • Ability to set an icon name or icon file path for the window manager to make use of, rather than relying on a desktop file or fixed-size window- backed icon that Gtk normally generates. The window manager must support the NET_WM_XAPP_ICON_NAME hint.

  • Ability to send progress info to the window manager, in the form of an integer, 0-100, which can then be used to display this progress in some manner in a task manager or window list. The window manager must support the NET_WM_XAPP_PROGRESS hint.

  • Ability to signal a 'pulsing' progress state, of potentially indeterminate value, in the form of a boolean, which can be passed on to a window list. The window manager must support the NET_WM_XAPP_PROGRESS_PULSE hint

Wrappers:

Also provided are corresponding wrapper functions for normal GtkWindows. They are not class methods - they are called with the target widget as their first argument.

For example:

win = Gtk.Window() XApp.set_window_icon_name(win, "foobar")

These functions mirror those of the XAppGtkWindow class, but allow the properties to work with normal GtkWindows and descendants of GtkWindow.

Functions

xapp_gtk_window_new ()

GtkWidget *
xapp_gtk_window_new (GtkWindowType type);

Creates a new XAppGtkWindow of type type . See gtk_window_new() for more details.

Parameters

type

The GtkWindowType to use

 

Returns

A new XAppGtkWindow (transfer: full)


xapp_gtk_window_set_icon_name ()

void
xapp_gtk_window_set_icon_name (XAppGtkWindow *window,
                               const gchar *icon_name);

Sets the icon name hint for a window manager (like muffin) to make available when applications want to change their icons during runtime without having to resort to the internal low-res pixbufs that GdkWindow sets on the client side. This also chains up and calls GtkWindow.set_icon_name for convenience and compatibility. Set to NULL to unset.

Parameters

window

The XAppGtkWindow to set the icon name for

 

icon_name

The icon name or path to set, or NULL to unset.

[nullable]

xapp_gtk_window_set_icon_from_file ()

void
xapp_gtk_window_set_icon_from_file (XAppGtkWindow *window,
                                    const gchar *file_name,
                                    GError **error);

Sets the icon name hint for a window manager (like muffin) to make available when applications want to change their icons during runtime without having to resort to the internal low-res pixbufs that GdkWindow sets on the client side. This also chains up and calls GtkWindow.set_icon_from_file for convenience and compatibility. Set to NULL to unset.

Parameters

window

The XAppGtkWindow to set the icon name for

 

file_name

The icon path to set, or NULL to unset.

[nullable]

error

An error to set if something goes wrong.

[nullable]

xapp_gtk_window_set_progress ()

void
xapp_gtk_window_set_progress (XAppGtkWindow *window,
                              gint progress);

Sets the progress hint for a window manager (like muffin) to make available when applications want to display the application's progress in some operation. The value sent to the WM will be clamped to between 0 and 100.

Note: If a window will stick around after progress is complete, you will probaby need to set progress to 0 to remove any progress effects on taskbars and window lists.

Setting progress will also cancel the 'pulsing' flag on the window as well, if it has been set.

Parameters

window

The XAppGtkWindow to set the progress for

 

progress

The value to set for progress.

 

xapp_gtk_window_set_progress_pulse ()

void
xapp_gtk_window_set_progress_pulse (XAppGtkWindow *window,
                                    gboolean pulse);

Sets the progress pulse hint hint for a window manager (like muffin) to make available when applications want to display indeterminate or ongoing progress in a task manager.

Note: If a window will stick around after progress is complete, you will probaby need to set progress to 0 to remove any progress effects on taskbars and window lists. This will also remove the pulse state, if it is set.

Setting an explicit progress value will unset this flag.

Parameters

window

The XAppGtkWindow to set the progress for

 

pulse

Whether to have pulsing set or not.

 

xapp_set_window_icon_name ()

void
xapp_set_window_icon_name (GtkWindow *window,
                           const gchar *icon_name);

Sets the icon name hint for a window manager (like muffin) to make available when applications want to change their icons during runtime without having to resort to the internal low-res pixbufs that GdkWindow sets on the client side. This is a function, not a method, for taking advantage of this feature with descendants of GtkWindows, such as GtkDialogs. Sets gtk_window_set_icon_name as well, to avoid needing to have two calls each time. Set to NULL to unset.

Parameters

window

The GtkWindow to set the icon name for

 

icon_name

The icon name to set, or NULL to unset.

[nullable]

xapp_set_window_icon_from_file ()

void
xapp_set_window_icon_from_file (GtkWindow *window,
                                const gchar *file_name,
                                GError **error);

Sets the icon name hint for a window manager (like muffin) to make available when applications want to change their icons during runtime without having to resort to the internal low-res pixbufs that GdkWindow sets on the client side. This also chains up and calls GtkWindow.set_icon_from_file for convenience and compatibility. Set to NULL to unset.

Parameters

window

The GtkWindow to set the icon name for

 

file_name

The icon path to set, or NULL to unset.

[nullable]

error

An error to set if something goes wrong.

[nullable]

xapp_set_window_progress ()

void
xapp_set_window_progress (GtkWindow *window,
                          gint progress);

Sets the progress hint for a window manager (like muffin) to make available when applications want to display the application's progress in some operation. The value sent to the WM will be clamped to between 0 and 100.

Note: If a window will stick around after progress is complete, you will probaby need to set progress to 0 to remove any progress effects on taskbars and window lists.

Setting progress will also cancel the 'pulsing' flag on the window as well, if it has been set.

Parameters

window

The GtkWindow to set the progress for

 

progress

The value to set for progress.

 

xapp_set_window_progress_pulse ()

void
xapp_set_window_progress_pulse (GtkWindow *window,
                                gboolean pulse);

Sets the progress pulse hint hint for a window manager (like muffin) to make available when applications want to display indeterminate or ongoing progress in a task manager.

Note: If a window will stick around after progress is complete, you will probaby need to set progress to 0 to remove any progress effects on taskbars and window lists. This will also remove the pulse state, if it is set.

Setting an explicit progress value will unset this flag.

Parameters

window

The GtkWindow to set the progress for

 

pulse

Whether to have pulsing set or not.

 

xapp_set_xid_icon_name ()

void
xapp_set_xid_icon_name (gulong xid,
                        const gchar *icon_name);

Sets the icon name hint for a window manager (like muffin) to make available when applications want to change their icons during runtime without having to resort to the internal low-res pixbufs that GdkWindow sets on the client side. This is a function, not a method, for applying the icon name property for a given (possibly foreign) window, by passing the window's XID. Set to NULL to unset.

Parameters

xid

The Window to set the icon name for

 

icon_name

The icon name to set, or NULL to unset.

[nullable]

xapp_set_xid_icon_from_file ()

void
xapp_set_xid_icon_from_file (gulong xid,
                             const gchar *file_name);

Sets the icon name hint for a window manager (like muffin) to make available when applications want to change their icons during runtime without having to resort to the internal low-res pixbufs that GdkWindow sets on the client side. This is a function, not a method, for applying the icon name property for a given (possibly foreign) window, by passing the window's XID. Set to NULL to unset.

Parameters

xid

The Window to set the icon name for

 

file_name

The icon path to set, or NULL to unset.

[nullable]

xapp_set_xid_progress ()

void
xapp_set_xid_progress (gulong xid,
                       gint progress);

Sets the progress hint for a window manager (like muffin) to make available when applications want to display the application's progress in some operation. The value sent to the WM will be clamped to between 0 and 100.

Setting progress will also cancel the 'pulsing' flag on the window as well, if it has been set.

Note: If a window will stick around after progress is complete, you will probaby need to set progress to 0 to remove any progress effects on taskbars and window lists.

This is a function, not a method, for applying the progress property for a given (possibly foreign) window, by passing the window's XID.

Parameters

xid

The Window to set the progress for

 

progress

The value to set for progress.

 

xapp_set_xid_progress_pulse ()

void
xapp_set_xid_progress_pulse (gulong xid,
                             gboolean pulse);

Sets the progress pulse hint hint for a window manager (like muffin) to make available when applications want to display indeterminate or ongoing progress in a task manager.

Note: If a window will stick around after progress is complete, you will probaby need to set progress to 0 to remove any progress effects on taskbars and window lists.

Setting an explicit progress value will unset this flag.

Parameters

xid

The Window to set the progress for

 

pulse

Whether to have pulsing set or not.

 

Types and Values

XAPP_TYPE_GTK_WINDOW

#define XAPP_TYPE_GTK_WINDOW (xapp_gtk_window_get_type ())

struct XAppGtkWindowClass

struct XAppGtkWindowClass {
  GtkWindowClass parent_class;

  gpointer padding[12];
};

XAppGtkWindow

typedef struct _XAppGtkWindow XAppGtkWindow;
xapps-1.6.10/docs/reference/XAppIconChooserButton.html000066400000000000000000000544311360565754300227330ustar00rootroot00000000000000 XAppIconChooserButton: XApp Reference Manual

XAppIconChooserButton

XAppIconChooserButton — A button for selecting an icon

Properties

gchar * category Read / Write
gchar * icon Read / Write
GtkIconSize icon-size Read / Write

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── GtkWidget
            ╰── GtkContainer
                ╰── GtkBin
                    ╰── GtkButton
                        ╰── XAppIconChooserButton

Implemented Interfaces

XAppIconChooserButton implements AtkImplementorIface, GtkBuildable, GtkActionable and GtkActivatable.

Description

The XAppIconChooserButton creates a button so that the user can select an icon. When the button is clicked it will open an XAppIconChooserDialog. The currently selected icon will be displayed as the button image.

Functions

xapp_icon_chooser_button_new ()

XAppIconChooserButton *
xapp_icon_chooser_button_new (void);

Creates a new XAppIconChooserButton and sets its icon to icon .

Returns

a newly created XAppIconChooserButton


xapp_icon_chooser_button_new_with_size ()

XAppIconChooserButton *
xapp_icon_chooser_button_new_with_size
                               (GtkIconSize icon_size);

Creates a new XAppIconChooserButton, and sets the sizes of the button image and the icons in the dialog. Note that xapp_icon_chooser_button_new_with_size (NULL, NULL) is the same as calling xapp_icon_chooser_button_new().

Parameters

icon_size

the size of icon to use in the button, or NULL to use the default value.

 

Returns

a newly created XAppIconChooserButton


xapp_icon_chooser_button_set_icon_size ()

void
xapp_icon_chooser_button_set_icon_size
                               (XAppIconChooserButton *button,
                                GtkIconSize icon_size);

Sets the icon size used in the button.

Parameters

button

a XAppIconChooserButton

 

icon_size

the size of icon to use in the button, or -1 to use the default value.

 

xapp_icon_chooser_button_set_icon ()

void
xapp_icon_chooser_button_set_icon (XAppIconChooserButton *button,
                                   const gchar *icon);

Sets the icon on the XAppIconChooserButton.

Parameters

button

a XAppIconChooserButton

 

icon

a string representing the icon to be set. This may be an icon name or a file path.

[nullable]

xapp_icon_chooser_button_set_default_category ()

void
xapp_icon_chooser_button_set_default_category
                               (XAppIconChooserButton *button,
                                const gchar *category);

Sets the icon on the XAppIconChooserButton.

Parameters

button

a XAppIconChooserButton

 

category

a string representing the category selected by default.

[nullable]

xapp_icon_chooser_button_get_icon ()

const gchar *
xapp_icon_chooser_button_get_icon (XAppIconChooserButton *button);

Gets the icon from the XAppIconChooserButton.

Parameters

button

a XAppIconChooserButton

 

Returns

a string representing the icon. This may be an icon name or a file path.


xapp_icon_chooser_button_get_dialog ()

XAppIconChooserDialog *
xapp_icon_chooser_button_get_dialog (XAppIconChooserButton *button);

Gets a reference to the icon chooser dialog for the XAppIconChooserButton. This is useful for setting properties on the dialog.

Parameters

button

a XAppIconChooserButton

 

Returns

the XAppIconChooserDialog.

[transfer none]

Types and Values

XAPP_TYPE_ICON_CHOOSER_BUTTON

#define XAPP_TYPE_ICON_CHOOSER_BUTTON   (xapp_icon_chooser_button_get_type ())

XAppIconChooserButton

typedef struct _XAppIconChooserButton XAppIconChooserButton;

Property Details

The “category” property

  “category”                 gchar *

The category selected by default.

Flags: Read / Write

Default value: ""


The “icon” property

  “icon”                     gchar *

The preferred size to use when looking up icons. This only works with icon names. Additionally, there is no guarantee that a selected icon name will exist in a particular size.

Flags: Read / Write

Default value: ""


The “icon-size” property

  “icon-size”                GtkIconSize

The size to use when displaying the icon.

Flags: Read / Write

Default value: GTK_ICON_SIZE_DND

xapps-1.6.10/docs/reference/XAppIconChooserDialog.html000066400000000000000000001013541360565754300226540ustar00rootroot00000000000000 XAppIconChooserDialog: XApp Reference Manual

XAppIconChooserDialog

XAppIconChooserDialog — A dialog for selecting an icon

Properties

gboolean allow-paths Read / Write
gchar * default-icon Read / Write
XAppIconSize icon-size Read / Write

Signals

Object Hierarchy

    GEnum
    ╰── XAppIconSize
    GObject
    ╰── GInitiallyUnowned
        ╰── GtkWidget
            ╰── GtkContainer
                ╰── GtkBin
                    ╰── GtkWindow
                        ╰── XAppGtkWindow
                            ╰── XAppIconChooserDialog

Implemented Interfaces

XAppIconChooserDialog implements AtkImplementorIface and GtkBuildable.

Description

The XAppIconChooserDialog creates a dialog so that the user can select an icon. It provides the ability to browse by category, search by icon name, or select from a specific file.

Functions

xapp_icon_chooser_dialog_new ()

XAppIconChooserDialog *
xapp_icon_chooser_dialog_new (void);

Creates a new XAppIconChooserDialog.

Returns

a newly created XAppIconChooserDialog


xapp_icon_chooser_dialog_run ()

gint
xapp_icon_chooser_dialog_run (XAppIconChooserDialog *dialog);

Shows the dialog and enters a separate main loop until an icon is chosen or the action is canceled.

xapp_icon_chooser_dialog_run (), xapp_icon_chooser_dialog_run_with_icon(), and xapp_icon_chooser_dialog_run_with_category() may all be called multiple times. This is useful for applications which use this dialog multiple times, as it may improve performance for subsequent calls.

Parameters

dialog

a XAppIconChooserDialog

 

Returns

GTK_RESPONSE_OK if the user selected an icon, or GTK_RESPONSE_CANCEL otherwise


xapp_icon_chooser_dialog_run_with_icon ()

gint
xapp_icon_chooser_dialog_run_with_icon
                               (XAppIconChooserDialog *dialog,
                                gchar *icon);

Like xapp_icon_chooser_dialog_run but selects the icon specified by icon . This can be either an icon name or a path. Passing an icon string or path that doesn't exist is accepted, but it may show multiple results, or none at all. This behavior is useful if, for example, you wish to have the user select an image file from a particular directory.

If the property allow_paths is FALSE, setting a path will yield no results when the dialog is opened.

xapp_icon_chooser_dialog_run (), xapp_icon_chooser_dialog_run_with_icon(), and xapp_icon_chooser_dialog_run_with_category() may all be called multiple times. This is useful for applications which use this dialog multiple times, as it may improve performance for subsequent calls.

Parameters

dialog

a XAppIconChooserDialog

 

icon

a string representing the icon that should be selected

 

Returns

GTK_RESPONSE_OK if the user selected an icon, or GTK_RESPONSE_CANCEL otherwise


xapp_icon_chooser_dialog_run_with_category ()

gint
xapp_icon_chooser_dialog_run_with_category
                               (XAppIconChooserDialog *dialog,
                                gchar *category);

Like xapp_icon_chooser_dialog_run but selects a particular category specified by category . This is used when there is a particular category of icon that is more appropriate than the others. If the category does not exist, the first category in the list will be selected. To get a list of possible categories, use gtk_icon_theme_list_contexts().

xapp_icon_chooser_dialog_run (), xapp_icon_chooser_dialog_run_with_icon(), and xapp_icon_chooser_dialog_run_with_category() may all be called multiple times. This is useful for applications which use this dialog multiple times, as it may improve performance for subsequent calls.

Parameters

dialog

a XAppIconChooserDialog

 

Returns

GTK_RESPONSE_OK if the user selected an icon, or GTK_RESPONSE_CANCEL otherwise


xapp_icon_chooser_dialog_get_icon_string ()

gchar *
xapp_icon_chooser_dialog_get_icon_string
                               (XAppIconChooserDialog *dialog);

Gets the currently selected icon from the dialog. If allow-paths is TRUE, this function may return either an icon name or a path depending on what the user selects. Otherwise it will only return an icon name.

Parameters

dialog

a XAppIconChooserDialog

 

Returns

the string representation of the currently selected icon or NULL if no icon is selected.

[transfer full]


xapp_icon_chooser_dialog_add_button ()

void
xapp_icon_chooser_dialog_add_button (XAppIconChooserDialog *dialog,
                                     GtkWidget *button,
                                     GtkPackType packing,
                                     GtkResponseType response_id);

Allows a button to be added to the GtkActionBar of the dialog with a custom response id.

Parameters

dialog

an XAppIconChooserDialog

 

button

a GtkButton to add

 

packing

the GtkPackType to specify start or end packing to the action bar

 

response_id

the dialog response id to return when this button is clicked.

 

xapp_icon_chooser_dialog_get_default_icon ()

gchar *
xapp_icon_chooser_dialog_get_default_icon
                               (XAppIconChooserDialog *dialog);

Returns the default icon (if set).

Returns

the default icon, or NULL if none is set.

[transfer full]


xapp_icon_chooser_dialog_set_default_icon ()

void
xapp_icon_chooser_dialog_set_default_icon
                               (XAppIconChooserDialog *dialog,
                                const gchar *icon);

Sets the default icon. If icon is not NULL, a button will be shown that will reset the dialog to it's default value.

Parameters

icon

the default icon, or NULL to unset

 

xapp_icon_chooser_dialog_add_custom_category ()

void
xapp_icon_chooser_dialog_add_custom_category
                               (XAppIconChooserDialog *dialog,
                                const gchar *name,
                                GList *icons);

Adds a custom category to the dialog.

Parameters

dialog

a XAppIconChooserDialog

 

name

the name of the category as it will be displayed in the category list

 

icons

a list of icon names to add to the new category.

[transfer full][element-type utf8]

Types and Values

XAPP_TYPE_ICON_CHOOSER_DIALOG

#define XAPP_TYPE_ICON_CHOOSER_DIALOG   (xapp_icon_chooser_dialog_get_type ())

enum XAppIconSize

Members

XAPP_ICON_SIZE_16

   

XAPP_ICON_SIZE_22

   

XAPP_ICON_SIZE_24

   

XAPP_ICON_SIZE_32

   

XAPP_ICON_SIZE_48

   

XAPP_ICON_SIZE_96

   

XAppIconChooserDialog

typedef struct _XAppIconChooserDialog XAppIconChooserDialog;

Property Details

The “allow-paths” property

  “allow-paths”              gboolean

Whether to allow paths to be searched and selected or only icon names.

Flags: Read / Write

Default value: TRUE


The “default-icon” property

  “default-icon”             gchar *

The icon to use by default.

Flags: Read / Write

Default value: NULL


The “icon-size” property

  “icon-size”                XAppIconSize

The preferred size to use when looking up icons. This only works with icon names. Additionally, there is no guarantee that a selected icon name will exist in a particular size.

Flags: Read / Write

Default value: XAPP_ICON_SIZE_32

Signal Details

The “close” signal

void
user_function (XAppIconChooserDialog *xappiconchooserdialog,
               gpointer               user_data)

Flags: Action


The “select” signal

void
user_function (XAppIconChooserDialog *xappiconchooserdialog,
               gpointer               user_data)

Flags: Action

xapps-1.6.10/docs/reference/XAppKbdLayoutController.html000066400000000000000000001176651360565754300232770ustar00rootroot00000000000000 XAppKbdLayoutController: XApp Reference Manual

XAppKbdLayoutController

XAppKbdLayoutController — Keyboard layout selection UI element provider.

Properties

Object Hierarchy

    GObject
    ╰── XAppKbdLayoutController

Description

A GObject wrapper for Gkbd that provides additional UI element support for keyboard layout flags and abbreviations, as well as Wfacilities to distinguish regional and hardware-based variants which might otherwise appear identical in a layout list.

Functions

xapp_kbd_layout_controller_new ()

XAppKbdLayoutController *
xapp_kbd_layout_controller_new (void);

Creates a new XAppKbdLayoutController instance.

Returns

a new XAppKbdLayoutController instance.

[transfer full]


xapp_kbd_layout_controller_get_enabled ()

gboolean
xapp_kbd_layout_controller_get_enabled
                               (XAppKbdLayoutController *controller);

Returns whether or not the layout controller is enabled

Parameters

controller

the XAppKbdLayoutController

 

xapp_kbd_layout_controller_get_current_group ()

guint
xapp_kbd_layout_controller_get_current_group
                               (XAppKbdLayoutController *controller);

Selects the previous group in the group list.

Parameters

controller

the XAppKbdLayoutController

 

xapp_kbd_layout_controller_set_current_group ()

void
xapp_kbd_layout_controller_set_current_group
                               (XAppKbdLayoutController *controller,
                                guint group);

Selects the given group number as active.

Parameters

controller

the XAppKbdLayoutController

 

group

the group number to make active

 

xapp_kbd_layout_controller_next_group ()

void
xapp_kbd_layout_controller_next_group (XAppKbdLayoutController *controller);

Selects the next group in the group list.

Parameters

controller

the XAppKbdLayoutController

 

xapp_kbd_layout_controller_previous_group ()

void
xapp_kbd_layout_controller_previous_group
                               (XAppKbdLayoutController *controller);

Selects the previous group in the group list.

Parameters

controller

the XAppKbdLayoutController

 

xapp_kbd_layout_controller_get_current_name ()

gchar *
xapp_kbd_layout_controller_get_current_name
                               (XAppKbdLayoutController *controller);

Returns the full name of the current keyboard layout.

Parameters

controller

the XAppKbdLayoutController

 

Returns

the newly created string or NULL if something went wrong.

[transfer full]


xapp_kbd_layout_controller_get_all_names ()

gchar **
xapp_kbd_layout_controller_get_all_names
                               (XAppKbdLayoutController *controller);

Returns an array of all full layout names

Parameters

controller

the XAppKbdLayoutController

 

Returns

array of names.

[transfer none][array zero-terminated=1]


xapp_kbd_layout_controller_get_current_icon_name ()

gchar *
xapp_kbd_layout_controller_get_current_icon_name
                               (XAppKbdLayoutController *controller);

Returns the icon file name (no path or extension) to use for the current layout

Parameters

controller

the XAppKbdLayoutController

 

Returns

a new string with the icon name.

[transfer full]


xapp_kbd_layout_controller_get_icon_name_for_group ()

gchar *
xapp_kbd_layout_controller_get_icon_name_for_group
                               (XAppKbdLayoutController *controller,
                                guint group);

Returns the icon file name (no path or extension) to use for the specified layout.

Parameters

controller

the XAppKbdLayoutController

 

group

a group number

 

Returns

a new string with the icon name.

[transfer full]


xapp_kbd_layout_controller_get_current_flag_id ()

gint
xapp_kbd_layout_controller_get_current_flag_id
                               (XAppKbdLayoutController *controller);

Returns the duplicate id for the current layout

Parameters

controller

the XAppKbdLayoutController

 

Returns

the id


xapp_kbd_layout_controller_get_flag_id_for_group ()

gint
xapp_kbd_layout_controller_get_flag_id_for_group
                               (XAppKbdLayoutController *controller,
                                guint group);

xapp_kbd_layout_controller_get_current_short_group_label ()

gchar *
xapp_kbd_layout_controller_get_current_short_group_label
                               (XAppKbdLayoutController *controller);

Returns the short group label (and subscript, if any) of the current layout

Parameters

controller

the XAppKbdLayoutController

 

Returns

a new string or NULL.

[transfer full]


xapp_kbd_layout_controller_get_short_group_label_for_group ()

gchar *
xapp_kbd_layout_controller_get_short_group_label_for_group
                               (XAppKbdLayoutController *controller,
                                guint group);

Returns the short group label and subscript of the specified layout.

Parameters

controller

the XAppKbdLayoutController

 

group

a group number

 

Returns

a new string or NULL.

[transfer full]


xapp_kbd_layout_controller_get_current_variant_label ()

gchar *
xapp_kbd_layout_controller_get_current_variant_label
                               (XAppKbdLayoutController *controller);

Returns the variant label (and subscript, if any) of the current layout

Parameters

controller

the XAppKbdLayoutController

 

Returns

a new string or NULL.

[transfer full]


xapp_kbd_layout_controller_get_variant_label_for_group ()

gchar *
xapp_kbd_layout_controller_get_variant_label_for_group
                               (XAppKbdLayoutController *controller,
                                guint group);

Returns the variant label and subscript of the specified layout.

Parameters

controller

the XAppKbdLayoutController

 

group

a group number

 

Returns

a new string or NULL.

[transfer full]


xapp_kbd_layout_controller_render_cairo_subscript ()

void
xapp_kbd_layout_controller_render_cairo_subscript
                               (cairo_t *cr,
                                gdouble x,
                                gdouble y,
                                gdouble width,
                                gdouble height,
                                gint subscript);

Renders a subscript number in the given work area. This should be called from within a "draw" or "paint" widget/actor function, where a valid cairo_t is provided to draw with.

Parameters

cr

a cairo_t

 

x

the x position of the drawing area

 

y

the y position of the drawing area

 

width

the width of the drawing area

 

height

the height of the drawing area

 

subscript

the number to render

 

Types and Values

Property Details

The “enabled” property

  “enabled”                  gboolean

Whether we're enabled (more than one keyboard layout is installed).

Flags: Read

Default value: FALSE

Signal Details

The “config-changed” signal

void
user_function (XAppKbdLayoutController *xappkbdlayoutcontroller,
               gpointer                 user_data)

Flags: Run Last


The “layout-changed” signal

void
user_function (XAppKbdLayoutController *xappkbdlayoutcontroller,
               guint                    arg1,
               gpointer                 user_data)

Flags: Run Last

xapps-1.6.10/docs/reference/XAppMonitorBlanker.html000066400000000000000000000237331360565754300222530ustar00rootroot00000000000000 XAppMonitorBlanker: XApp Reference Manual

XAppMonitorBlanker

XAppMonitorBlanker — Blank and unblank unused monitors

Object Hierarchy

    GObject
    ╰── XAppMonitorBlanker

Description

The XAppMonitorBlanker widget that creates one or more POPUP type GtkWindows that are used to blank unused monitors in multiple monitor setups.

Functions

xapp_monitor_blanker_new ()

XAppMonitorBlanker *
xapp_monitor_blanker_new (void);

Creates a new XAppMonitorBlanker.

Returns

a newly created XAppMonitorBlanker


xapp_monitor_blanker_blank_other_monitors ()

void
xapp_monitor_blanker_blank_other_monitors
                               (XAppMonitorBlanker *self,
                                GtkWindow *window);

Blanks monitors besides the one where the window is.

Parameters

self

a XAppMonitorBlanker

 

window

a GtkWindow

 

xapp_monitor_blanker_unblank_monitors ()

void
xapp_monitor_blanker_unblank_monitors (XAppMonitorBlanker *self);

Unblanks monitors that were blanked by xapp_monitor_blanker_blank_other_monitors();

Parameters

self

a XAppMonitorBlanker

 

xapp_monitor_blanker_are_monitors_blanked ()

gboolean
xapp_monitor_blanker_are_monitors_blanked
                               (XAppMonitorBlanker *self);

Returns whether monitors are currently blanked. See xapp_monitor_blanker_blank_other_monitors().

Parameters

self

a XAppMonitorBlanker

 

Returns

TRUE if monitors are blanked.

Types and Values

xapps-1.6.10/docs/reference/XAppPreferencesWindow.html000066400000000000000000000334501360565754300227530ustar00rootroot00000000000000 XAppPreferencesWindow: XApp Reference Manual

XAppPreferencesWindow

XAppPreferencesWindow — A base preferences window

Signals

void close Action

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── GtkWidget
            ╰── GtkContainer
                ╰── GtkBin
                    ╰── GtkWindow
                        ╰── XAppPreferencesWindow

Implemented Interfaces

XAppPreferencesWindow implements AtkImplementorIface and GtkBuildable.

Description

The XAppPreferencesWindow sets up a simple dialog window with a GtkStack, GtkSidebarSwitcher, and GtkActionBar. The stack switcher and action bar only show when needed.

Functions

xapp_preferences_window_new ()

XAppPreferencesWindow *
xapp_preferences_window_new (void);

Creates a new XAppPreferencesWindow.

Returns

a newly created XAppPreferencesWindow


xapp_preferences_window_add_page ()

void
xapp_preferences_window_add_page (XAppPreferencesWindow *window,
                                  GtkWidget *widget,
                                  const gchar *name,
                                  const gchar *title);

Adds a page to the window. The page is identified by name. The title will be used in the sidebar so should be short. The sidebar will show automatically once at least two pages are added.

Parameters

window

a XAppPreferencesWindow

 

widget

a GtkWidget to add

 

name

the name for the page

 

title

a human-readable title for the page

 

xapp_preferences_window_add_button ()

void
xapp_preferences_window_add_button (XAppPreferencesWindow *window,
                                    GtkWidget *button,
                                    GtkPackType pack_type);

Adds a button to the bottom action bar of the window. Where the button is place will be determined by the GtkPackType. The action bar will show automatically once at least one button is added.

Parameters

window

a XAppPreferencesWindow

 

button

a GtkWidget to add

 

pack_type

a GtkPackType to use

 

Types and Values

XAPP_TYPE_PREFERENCES_WINDOW

#define XAPP_TYPE_PREFERENCES_WINDOW (xapp_preferences_window_get_type ())

struct XAppPreferencesWindowClass

struct XAppPreferencesWindowClass {
    GtkWindowClass parent_class;

    /* Keybinding signals */
    void (* close) (XAppPreferencesWindow *window);
};

XAppPreferencesWindow

typedef struct _XAppPreferencesWindow XAppPreferencesWindow;

Signal Details

The “close” signal

void
user_function (XAppPreferencesWindow *xapppreferenceswindow,
               gpointer               user_data)

Flags: Action

xapps-1.6.10/docs/reference/XAppStackSidebar.html000066400000000000000000000315711360565754300216630ustar00rootroot00000000000000 XAppStackSidebar: XApp Reference Manual

XAppStackSidebar

XAppStackSidebar — An automatic sidebar widget

Properties

GtkStack * stack Read / Write

Types and Values

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── GtkWidget
            ╰── GtkContainer
                ╰── GtkBin
                    ╰── XAppStackSidebar

Implemented Interfaces

XAppStackSidebar implements AtkImplementorIface and GtkBuildable.

Description

A XAppStackSidebar allows you to quickly and easily provide a consistent "sidebar" object for your user interface

In order to use a XAppStackSidebar, you simply use a GtkStack to organize your UI flow, and add the sidebar to your sidebar area. You can use xapp_stack_sidebar_set_stack() to connect the XAppStackSidebar to the GtkStack. The XAppStackSidebar is an extended version of the the GtkStackSidebar that allows showing an icon in addition to the text.

CSS nodes

XAppStackSidebar has a single CSS node with the name stacksidebar and style class .sidebar

When circumstances require it, XAppStackSidebar adds the .needs-attention style class to the widgets representing the stack pages.

Functions

xapp_stack_sidebar_new ()

XAppStackSidebar *
xapp_stack_sidebar_new (void);

Creates a new sidebar.

Returns

the new XAppStackSidebar


xapp_stack_sidebar_set_stack ()

void
xapp_stack_sidebar_set_stack (XAppStackSidebar *sidebar,
                              GtkStack *stack);

Set the GtkStack associated with this XAppStackSidebar.

The sidebar widget will automatically update according to the order (packing) and items within the given GtkStack.

Parameters

sidebar

a XAppStackSidebar

 

stack

a GtkStack

 

xapp_stack_sidebar_get_stack ()

GtkStack *
xapp_stack_sidebar_get_stack (XAppStackSidebar *sidebar);

Retrieves the stack. See xapp_stack_sidebar_set_stack().

Parameters

sidebar

a XAppStackSidebar

 

Returns

the associated GtkStack or NULL if none has been set explicitly.

[nullable][transfer none]

Types and Values

XAPP_TYPE_STACK_SIDEBAR

#define XAPP_TYPE_STACK_SIDEBAR (xapp_stack_sidebar_get_type ())

XAppStackSidebar

typedef struct _XAppStackSidebar XAppStackSidebar;

Property Details

The “stack” property

  “stack”                    GtkStack *

Associated stack for this XAppStackSidebar.

Flags: Read / Write

xapps-1.6.10/docs/reference/XAppStatusIcon.html000066400000000000000000001330651360565754300214210ustar00rootroot00000000000000 XAppStatusIcon: XApp Reference Manual

XAppStatusIcon

XAppStatusIcon — Broadcasts status information over DBUS

Properties

GtkWidget * primary-menu Read / Write
GtkWidget * secondary-menu Read / Write

Types and Values

Object Hierarchy

    GEnum
    ╰── XAppStatusIconState
    GObject
    ╰── XAppStatusIcon

Description

The XAppStatusIcon allows applications to share status info about themselves. It replaces the obsolete and very similar Gtk.StatusIcon widget.

If used in an environment where no applet is handling XAppStatusIcons, the XAppStatusIcon delegates its calls to a Gtk.StatusIcon.

Functions

xapp_status_icon_new ()

XAppStatusIcon *
xapp_status_icon_new (void);

Creates a new XAppStatusIcon instance

Returns

a new XAppStatusIcon. Use g_object_unref when finished.

[transfer full]

Since: 1.6


xapp_status_icon_set_name ()

void
xapp_status_icon_set_name (XAppStatusIcon *icon,
                           const gchar *name);

Sets the status icon name. This is not shown to users.

Parameters

icon

a XAppStatusIcon

 

name

a name (this defaults to the name of the application, if not set)

 

Since: 1.6


xapp_status_icon_set_icon_name ()

void
xapp_status_icon_set_icon_name (XAppStatusIcon *icon,
                                const gchar *icon_name);

Sets the icon name or local path to use.

Parameters

icon

a XAppStatusIcon

 

icon_name

An icon name or absolute path to an icon.

 

Since: 1.6


xapp_status_icon_set_tooltip_text ()

void
xapp_status_icon_set_tooltip_text (XAppStatusIcon *icon,
                                   const gchar *tooltip_text);

Sets the tooltip text

Parameters

icon

a XAppStatusIcon

 

tooltip_text

the text to show in the tooltip

 

Since: 1.6


xapp_status_icon_set_label ()

void
xapp_status_icon_set_label (XAppStatusIcon *icon,
                            const gchar *label);

Sets a label, shown beside the icon

Parameters

icon

a XAppStatusIcon

 

label

some text

 

Since: 1.6


xapp_status_icon_set_visible ()

void
xapp_status_icon_set_visible (XAppStatusIcon *icon,
                              const gboolean visible);

Sets the visibility of the status icon

Parameters

icon

a XAppStatusIcon

 

visible

whether or not the status icon should be visible

 

Since: 1.6


xapp_status_icon_set_primary_menu ()

void
xapp_status_icon_set_primary_menu (XAppStatusIcon *icon,
                                   GtkMenu *menu);

See the “primary-menu” property for details

Parameters

icon

an XAppStatusIcon

 

menu

A GtkMenu to display when the primary mouse button is released.

[nullable]

Since: 1.6


xapp_status_icon_get_primary_menu ()

GtkWidget *
xapp_status_icon_get_primary_menu (XAppStatusIcon *icon);

Returns a pointer to a GtkMenu that was set previously for the primary mouse button. If no menu was set, this returns NULL.

Parameters

icon

an XAppStatusIcon

 

Returns

the GtkMenu or NULL if none was set.

[transfer none]

Since: 1.6


xapp_status_icon_set_secondary_menu ()

void
xapp_status_icon_set_secondary_menu (XAppStatusIcon *icon,
                                     GtkMenu *menu);

See the “secondary-menu” property for details

Parameters

icon

an XAppStatusIcon

 

menu

A GtkMenu to display when the primary mouse button is released.

[nullable]

Since: 1.6


xapp_status_icon_get_secondary_menu ()

GtkWidget *
xapp_status_icon_get_secondary_menu (XAppStatusIcon *icon);

Returns a pointer to a GtkMenu that was set previously for the secondary mouse button. If no menu was set, this returns NULL.

Parameters

icon

an XAppStatusIcon

 

Returns

the GtkMenu or NULL if none was set.

[transfer none]

Since: 1.6


xapp_status_icon_get_state ()

XAppStatusIconState
xapp_status_icon_get_state (XAppStatusIcon *icon);

Gets the current XAppStatusIconState of icon. The state is determined by whether the icon is being displayed by an XAppStatusMonitor client, a fallback tray icon, or not being displayed at all.

See XAppStatusIconState for more details.

Parameters

icon

an XAppStatusIcon

 

Returns

the icon's state.

Since: 1.6


xapp_status_icon_any_monitors ()

gboolean
xapp_status_icon_any_monitors (void);

Looks for the existence of any active XAppStatusIconMonitors on the bus.

Returns

TRUE if at least one monitor was found.

Since: 1.6

Types and Values

XAPP_TYPE_STATUS_ICON

#define XAPP_TYPE_STATUS_ICON            (xapp_status_icon_get_type ())

enum XAppStatusIconState

Members

XAPP_STATUS_ICON_STATE_NATIVE

The XAppStatusIcon is currently being handled by an XAppStatusIconMonitor (usually in an applet).

 

XAPP_STATUS_ICON_STATE_FALLBACK

The XAppStatusIcon is currently being handled by a legacy system tray implementation (using GtkStatusIcon).

 

XAPP_STATUS_ICON_STATE_NO_SUPPORT

The XAppStatusIcon is not currently being handled by any kind of status icon implementation.

 

XAppStatusIcon

typedef struct _XAppStatusIcon XAppStatusIcon;

Property Details

The “primary-menu” property

  “primary-menu”             GtkWidget *

A GtkMenu to use when requested by the remote monitor via a left (or primary) click.

When this property is not NULL, the menu will be automatically positioned and displayed during a primary button release.

When this property IS NULL, the “activate” will be sent for primary button presses.

In both cases, the “button-press-event” and “button-release-events” will be fired like normal.

Setting this will remove any floating reference to the menu and assume ownership. As a result, it is not necessary to maintain a reference to it in the parent application (or unref it when finished with it - if you wish to replace the menu, simply call this method again with a new menu.

The same GtkMenu widget can be set as both the primary and secondary.

Flags: Read / Write


The “secondary-menu” property

  “secondary-menu”           GtkWidget *

A GtkMenu to use when requested by the remote monitor via a right (or secondary) click.

When this property is not NULL, the menu will be automatically positioned and displayed during a secondary button release.

When this property IS NULL, the “activate” will be sent for secondary button presses.

In both cases, the “button-press-event” and “button-release-events” will be fired like normal.

Setting this will remove any floating reference to the menu and assume ownership. As a result, it is not necessary to maintain a reference to it in the parent application (or unref it when finished with it - if you wish to replace the menu, simply call this method again with a new menu.

The same GtkMenu widget can be set as both the primary and secondary.

Flags: Read / Write

Signal Details

The “activate” signal

void
user_function (XAppStatusIcon *icon,
               guint           button,
               guint           time,
               gpointer        user_data)

Gets emitted when the user activates the status icon. If the XAppStatusIcon:primary-menu or XAppStatusIcon:secondary-menu is not NULL, this signal is skipped for the respective button presses. A middle button click will always send this signal when pressed.

Parameters

icon

The XAppStatusIcon

 

button

The button that was pressed

 

time

The time supplied by the event, or 0

 

user_data

user data set when the signal handler was connected.

 

Flags: Action


The “button-press-event” signal

void
user_function (XAppStatusIcon *icon,
               gint            x,
               gint            y,
               guint           button,
               guint           time,
               gint            panel_position,
               gpointer        user_data)

Gets emitted when there is a button press received from an applet

Parameters

icon

The XAppStatusIcon

 

x

The absolute x position to use for menu positioning

 

y

The absolute y position to use for menu positioning

 

button

The button that was pressed

 

time

The time supplied by the event, or 0

 

panel_position

The GtkPositionType to use for menu positioning

 

user_data

user data set when the signal handler was connected.

 

Flags: Action


The “button-release-event” signal

void
user_function (XAppStatusIcon *icon,
               gint            x,
               gint            y,
               guint           button,
               guint           time,
               gint            panel_position,
               gpointer        user_data)

Gets emitted when there is a button release received from an applet

Parameters

icon

The XAppStatusIcon

 

x

The absolute x position to use for menu positioning

 

y

The absolute y position to use for menu positioning

 

button

The button that was released

 

time

The time supplied by the event, or 0

 

panel_position

The GtkPositionType to use for menu positioning

 

user_data

user data set when the signal handler was connected.

 

Flags: Action


The “state-changed” signal

void
user_function (XAppStatusIcon     *icon,
               XAppStatusIconState new_state,
               gpointer            user_data)

Gets emitted when the state of the icon changes. If you wish to react to changes in how the status icon is being handled (perhaps to alter the menu or other click behavior), you should connect to this - see XAppStatusIconState for more details.

Parameters

icon

The XAppStatusIcon

 

new_state

The new XAppStatusIconState of the icon

 

user_data

user data set when the signal handler was connected.

 

Flags: Action

xapps-1.6.10/docs/reference/XAppStatusIconInterfaceSkeleton.html000066400000000000000000003670741360565754300247600ustar00rootroot00000000000000 XAppStatusIconInterfaceSkeleton: XApp Reference Manual

XAppStatusIconInterfaceSkeleton

XAppStatusIconInterfaceSkeleton

Functions

GDBusInterfaceInfo * xapp_status_icon_interface_interface_info ()
guint xapp_status_icon_interface_override_properties ()
void xapp_status_icon_interface_complete_button_press ()
void xapp_status_icon_interface_complete_button_release ()
void xapp_status_icon_interface_call_button_press ()
gboolean xapp_status_icon_interface_call_button_press_finish ()
gboolean xapp_status_icon_interface_call_button_press_sync ()
void xapp_status_icon_interface_call_button_release ()
gboolean xapp_status_icon_interface_call_button_release_finish ()
gboolean xapp_status_icon_interface_call_button_release_sync ()
const gchar * xapp_status_icon_interface_get_name ()
gchar * xapp_status_icon_interface_dup_name ()
void xapp_status_icon_interface_set_name ()
const gchar * xapp_status_icon_interface_get_icon_name ()
gchar * xapp_status_icon_interface_dup_icon_name ()
void xapp_status_icon_interface_set_icon_name ()
const gchar * xapp_status_icon_interface_get_tooltip_text ()
gchar * xapp_status_icon_interface_dup_tooltip_text ()
void xapp_status_icon_interface_set_tooltip_text ()
const gchar * xapp_status_icon_interface_get_label ()
gchar * xapp_status_icon_interface_dup_label ()
void xapp_status_icon_interface_set_label ()
gboolean xapp_status_icon_interface_get_visible ()
void xapp_status_icon_interface_set_visible ()
void xapp_status_icon_interface_proxy_new ()
XAppStatusIconInterface * xapp_status_icon_interface_proxy_new_finish ()
XAppStatusIconInterface * xapp_status_icon_interface_proxy_new_sync ()
void xapp_status_icon_interface_proxy_new_for_bus ()
XAppStatusIconInterface * xapp_status_icon_interface_proxy_new_for_bus_finish ()
XAppStatusIconInterface * xapp_status_icon_interface_proxy_new_for_bus_sync ()
XAppStatusIconInterface * xapp_status_icon_interface_skeleton_new ()

Properties

gchar * icon-name Read / Write
gchar * label Read / Write
gchar * name Read / Write
gchar * tooltip-text Read / Write
gboolean visible Read / Write

Object Hierarchy

    GInterface
    ╰── XAppStatusIconInterface
    GObject
    ├── GDBusInterfaceSkeleton
       ╰── XAppStatusIconInterfaceSkeleton
    ╰── GDBusProxy
        ╰── XAppStatusIconInterfaceProxy

Description

Functions

xapp_status_icon_interface_interface_info ()

GDBusInterfaceInfo *
xapp_status_icon_interface_interface_info
                               (void);

Gets a machine-readable description of the org.x.StatusIcon D-Bus interface.

Returns

A GDBusInterfaceInfo. Do not free.

[transfer none]


xapp_status_icon_interface_override_properties ()

guint
xapp_status_icon_interface_override_properties
                               (GObjectClass *klass,
                                guint property_id_begin);

Overrides all GObject properties in the XAppStatusIconInterface interface for a concrete class. The properties are overridden in the order they are defined.

Parameters

klass

The class structure for a GObject derived class.

 

property_id_begin

The property id to assign to the first overridden property.

 

Returns

The last property id.


xapp_status_icon_interface_complete_button_press ()

void
xapp_status_icon_interface_complete_button_press
                               (XAppStatusIconInterface *object,
                                GDBusMethodInvocation *invocation);

Helper function used in service implementations to finish handling invocations of the ButtonPress() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.

This method will free invocation , you cannot use it afterwards.

Parameters

object

A XAppStatusIconInterface.

 

invocation

A GDBusMethodInvocation.

[transfer full]

xapp_status_icon_interface_complete_button_release ()

void
xapp_status_icon_interface_complete_button_release
                               (XAppStatusIconInterface *object,
                                GDBusMethodInvocation *invocation);

Helper function used in service implementations to finish handling invocations of the ButtonRelease() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.

This method will free invocation , you cannot use it afterwards.

Parameters

object

A XAppStatusIconInterface.

 

invocation

A GDBusMethodInvocation.

[transfer full]

xapp_status_icon_interface_call_button_press ()

void
xapp_status_icon_interface_call_button_press
                               (XAppStatusIconInterface *proxy,
                                gint arg_x,
                                gint arg_y,
                                guint arg_button,
                                guint arg_time,
                                gint arg_panel_position,
                                GCancellable *cancellable,
                                GAsyncReadyCallback callback,
                                gpointer user_data);

Asynchronously invokes the ButtonPress() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from. You can then call xapp_status_icon_interface_call_button_press_finish() to get the result of the operation.

See xapp_status_icon_interface_call_button_press_sync() for the synchronous, blocking version of this method.

Parameters

proxy

A XAppStatusIconInterfaceProxy.

 

arg_x

Argument to pass with the method invocation.

 

arg_y

Argument to pass with the method invocation.

 

arg_button

Argument to pass with the method invocation.

 

arg_time

Argument to pass with the method invocation.

 

arg_panel_position

Argument to pass with the method invocation.

 

cancellable

A GCancellable or NULL.

[nullable]

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL.

 

user_data

User data to pass to callback .

 

xapp_status_icon_interface_call_button_press_finish ()

gboolean
xapp_status_icon_interface_call_button_press_finish
                               (XAppStatusIconInterface *proxy,
                                GAsyncResult *res,
                                GError **error);

Finishes an operation started with xapp_status_icon_interface_call_button_press().

Parameters

proxy

A XAppStatusIconInterfaceProxy.

 

res

The GAsyncResult obtained from the GAsyncReadyCallback passed to xapp_status_icon_interface_call_button_press().

 

error

Return location for error or NULL.

 

Returns

TRUE if the call succeded, FALSE if error is set.

[skip]


xapp_status_icon_interface_call_button_press_sync ()

gboolean
xapp_status_icon_interface_call_button_press_sync
                               (XAppStatusIconInterface *proxy,
                                gint arg_x,
                                gint arg_y,
                                guint arg_button,
                                guint arg_time,
                                gint arg_panel_position,
                                GCancellable *cancellable,
                                GError **error);

Synchronously invokes the ButtonPress() D-Bus method on proxy . The calling thread is blocked until a reply is received.

See xapp_status_icon_interface_call_button_press() for the asynchronous version of this method.

Parameters

proxy

A XAppStatusIconInterfaceProxy.

 

arg_x

Argument to pass with the method invocation.

 

arg_y

Argument to pass with the method invocation.

 

arg_button

Argument to pass with the method invocation.

 

arg_time

Argument to pass with the method invocation.

 

arg_panel_position

Argument to pass with the method invocation.

 

cancellable

A GCancellable or NULL.

[nullable]

error

Return location for error or NULL.

 

Returns

TRUE if the call succeded, FALSE if error is set.

[skip]


xapp_status_icon_interface_call_button_release ()

void
xapp_status_icon_interface_call_button_release
                               (XAppStatusIconInterface *proxy,
                                gint arg_x,
                                gint arg_y,
                                guint arg_button,
                                guint arg_time,
                                gint arg_panel_position,
                                GCancellable *cancellable,
                                GAsyncReadyCallback callback,
                                gpointer user_data);

Asynchronously invokes the ButtonRelease() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from. You can then call xapp_status_icon_interface_call_button_release_finish() to get the result of the operation.

See xapp_status_icon_interface_call_button_release_sync() for the synchronous, blocking version of this method.

Parameters

proxy

A XAppStatusIconInterfaceProxy.

 

arg_x

Argument to pass with the method invocation.

 

arg_y

Argument to pass with the method invocation.

 

arg_button

Argument to pass with the method invocation.

 

arg_time

Argument to pass with the method invocation.

 

arg_panel_position

Argument to pass with the method invocation.

 

cancellable

A GCancellable or NULL.

[nullable]

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL.

 

user_data

User data to pass to callback .

 

xapp_status_icon_interface_call_button_release_finish ()

gboolean
xapp_status_icon_interface_call_button_release_finish
                               (XAppStatusIconInterface *proxy,
                                GAsyncResult *res,
                                GError **error);

Finishes an operation started with xapp_status_icon_interface_call_button_release().

Parameters

proxy

A XAppStatusIconInterfaceProxy.

 

res

The GAsyncResult obtained from the GAsyncReadyCallback passed to xapp_status_icon_interface_call_button_release().

 

error

Return location for error or NULL.

 

Returns

TRUE if the call succeded, FALSE if error is set.

[skip]


xapp_status_icon_interface_call_button_release_sync ()

gboolean
xapp_status_icon_interface_call_button_release_sync
                               (XAppStatusIconInterface *proxy,
                                gint arg_x,
                                gint arg_y,
                                guint arg_button,
                                guint arg_time,
                                gint arg_panel_position,
                                GCancellable *cancellable,
                                GError **error);

Synchronously invokes the ButtonRelease() D-Bus method on proxy . The calling thread is blocked until a reply is received.

See xapp_status_icon_interface_call_button_release() for the asynchronous version of this method.

Parameters

proxy

A XAppStatusIconInterfaceProxy.

 

arg_x

Argument to pass with the method invocation.

 

arg_y

Argument to pass with the method invocation.

 

arg_button

Argument to pass with the method invocation.

 

arg_time

Argument to pass with the method invocation.

 

arg_panel_position

Argument to pass with the method invocation.

 

cancellable

A GCancellable or NULL.

[nullable]

error

Return location for error or NULL.

 

Returns

TRUE if the call succeded, FALSE if error is set.

[skip]


xapp_status_icon_interface_get_name ()

const gchar *
xapp_status_icon_interface_get_name (XAppStatusIconInterface *object);

Gets the value of the "Name" D-Bus property.

Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use xapp_status_icon_interface_dup_name() if on another thread.

[skip]

Parameters

Returns

The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

[transfer none]


xapp_status_icon_interface_dup_name ()

gchar *
xapp_status_icon_interface_dup_name (XAppStatusIconInterface *object);

Gets a copy of the "Name" D-Bus property.

Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

[skip]

Parameters

Returns

The property value or NULL if the property is not set. The returned value should be freed with g_free().

[transfer full]


xapp_status_icon_interface_set_name ()

void
xapp_status_icon_interface_set_name (XAppStatusIconInterface *object,
                                     const gchar *value);

Sets the "Name" D-Bus property to value .

Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.

[skip]

Parameters

object

A XAppStatusIconInterface.

 

value

The value to set.

 

xapp_status_icon_interface_get_icon_name ()

const gchar *
xapp_status_icon_interface_get_icon_name
                               (XAppStatusIconInterface *object);

Gets the value of the "IconName" D-Bus property.

Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use xapp_status_icon_interface_dup_icon_name() if on another thread.

[skip]

Parameters

Returns

The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

[transfer none]


xapp_status_icon_interface_dup_icon_name ()

gchar *
xapp_status_icon_interface_dup_icon_name
                               (XAppStatusIconInterface *object);

Gets a copy of the "IconName" D-Bus property.

Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

[skip]

Parameters

Returns

The property value or NULL if the property is not set. The returned value should be freed with g_free().

[transfer full]


xapp_status_icon_interface_set_icon_name ()

void
xapp_status_icon_interface_set_icon_name
                               (XAppStatusIconInterface *object,
                                const gchar *value);

Sets the "IconName" D-Bus property to value .

Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.

[skip]

Parameters

object

A XAppStatusIconInterface.

 

value

The value to set.

 

xapp_status_icon_interface_get_tooltip_text ()

const gchar *
xapp_status_icon_interface_get_tooltip_text
                               (XAppStatusIconInterface *object);

Gets the value of the "TooltipText" D-Bus property.

Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use xapp_status_icon_interface_dup_tooltip_text() if on another thread.

[skip]

Parameters

Returns

The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

[transfer none]


xapp_status_icon_interface_dup_tooltip_text ()

gchar *
xapp_status_icon_interface_dup_tooltip_text
                               (XAppStatusIconInterface *object);

Gets a copy of the "TooltipText" D-Bus property.

Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

[skip]

Parameters

Returns

The property value or NULL if the property is not set. The returned value should be freed with g_free().

[transfer full]


xapp_status_icon_interface_set_tooltip_text ()

void
xapp_status_icon_interface_set_tooltip_text
                               (XAppStatusIconInterface *object,
                                const gchar *value);

Sets the "TooltipText" D-Bus property to value .

Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.

[skip]

Parameters

object

A XAppStatusIconInterface.

 

value

The value to set.

 

xapp_status_icon_interface_get_label ()

const gchar *
xapp_status_icon_interface_get_label (XAppStatusIconInterface *object);

Gets the value of the "Label" D-Bus property.

Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use xapp_status_icon_interface_dup_label() if on another thread.

[skip]

Parameters

Returns

The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

[transfer none]


xapp_status_icon_interface_dup_label ()

gchar *
xapp_status_icon_interface_dup_label (XAppStatusIconInterface *object);

Gets a copy of the "Label" D-Bus property.

Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

[skip]

Parameters

Returns

The property value or NULL if the property is not set. The returned value should be freed with g_free().

[transfer full]


xapp_status_icon_interface_set_label ()

void
xapp_status_icon_interface_set_label (XAppStatusIconInterface *object,
                                      const gchar *value);

Sets the "Label" D-Bus property to value .

Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.

[skip]

Parameters

object

A XAppStatusIconInterface.

 

value

The value to set.

 

xapp_status_icon_interface_get_visible ()

gboolean
xapp_status_icon_interface_get_visible
                               (XAppStatusIconInterface *object);

Gets the value of the "Visible" D-Bus property.

Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

[skip]

Parameters

Returns

The property value.


xapp_status_icon_interface_set_visible ()

void
xapp_status_icon_interface_set_visible
                               (XAppStatusIconInterface *object,
                                gboolean value);

Sets the "Visible" D-Bus property to value .

Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.

[skip]

Parameters

object

A XAppStatusIconInterface.

 

value

The value to set.

 

xapp_status_icon_interface_proxy_new ()

void
xapp_status_icon_interface_proxy_new (GDBusConnection *connection,
                                      GDBusProxyFlags flags,
                                      const gchar *name,
                                      const gchar *object_path,
                                      GCancellable *cancellable,
                                      GAsyncReadyCallback callback,
                                      gpointer user_data);

Asynchronously creates a proxy for the D-Bus interface org.x.StatusIcon. See g_dbus_proxy_new() for more details.

When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from. You can then call xapp_status_icon_interface_proxy_new_finish() to get the result of the operation.

See xapp_status_icon_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.

Parameters

connection

A GDBusConnection.

 

flags

Flags from the GDBusProxyFlags enumeration.

 

name

A bus name (well-known or unique) or NULL if connection is not a message bus connection.

[nullable]

object_path

An object path.

 

cancellable

A GCancellable or NULL.

[nullable]

callback

A GAsyncReadyCallback to call when the request is satisfied.

 

user_data

User data to pass to callback .

 

xapp_status_icon_interface_proxy_new_finish ()

XAppStatusIconInterface *
xapp_status_icon_interface_proxy_new_finish
                               (GAsyncResult *res,
                                GError **error);

Finishes an operation started with xapp_status_icon_interface_proxy_new().

Parameters

res

The GAsyncResult obtained from the GAsyncReadyCallback passed to xapp_status_icon_interface_proxy_new().

 

error

Return location for error or NULL

 

Returns

The constructed proxy object or NULL if error is set.

[transfer full][type XAppStatusIconInterfaceProxy]


xapp_status_icon_interface_proxy_new_sync ()

XAppStatusIconInterface *
xapp_status_icon_interface_proxy_new_sync
                               (GDBusConnection *connection,
                                GDBusProxyFlags flags,
                                const gchar *name,
                                const gchar *object_path,
                                GCancellable *cancellable,
                                GError **error);

Synchronously creates a proxy for the D-Bus interface org.x.StatusIcon. See g_dbus_proxy_new_sync() for more details.

The calling thread is blocked until a reply is received.

See xapp_status_icon_interface_proxy_new() for the asynchronous version of this constructor.

Parameters

connection

A GDBusConnection.

 

flags

Flags from the GDBusProxyFlags enumeration.

 

name

A bus name (well-known or unique) or NULL if connection is not a message bus connection.

[nullable]

object_path

An object path.

 

cancellable

A GCancellable or NULL.

[nullable]

error

Return location for error or NULL

 

Returns

The constructed proxy object or NULL if error is set.

[transfer full][type XAppStatusIconInterfaceProxy]


xapp_status_icon_interface_proxy_new_for_bus ()

void
xapp_status_icon_interface_proxy_new_for_bus
                               (GBusType bus_type,
                                GDBusProxyFlags flags,
                                const gchar *name,
                                const gchar *object_path,
                                GCancellable *cancellable,
                                GAsyncReadyCallback callback,
                                gpointer user_data);

Like xapp_status_icon_interface_proxy_new() but takes a GBusType instead of a GDBusConnection.

When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from. You can then call xapp_status_icon_interface_proxy_new_for_bus_finish() to get the result of the operation.

See xapp_status_icon_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.

Parameters

bus_type

A GBusType.

 

flags

Flags from the GDBusProxyFlags enumeration.

 

name

A bus name (well-known or unique).

 

object_path

An object path.

 

cancellable

A GCancellable or NULL.

[nullable]

callback

A GAsyncReadyCallback to call when the request is satisfied.

 

user_data

User data to pass to callback .

 

xapp_status_icon_interface_proxy_new_for_bus_finish ()

XAppStatusIconInterface *
xapp_status_icon_interface_proxy_new_for_bus_finish
                               (GAsyncResult *res,
                                GError **error);

Finishes an operation started with xapp_status_icon_interface_proxy_new_for_bus().

Parameters

res

The GAsyncResult obtained from the GAsyncReadyCallback passed to xapp_status_icon_interface_proxy_new_for_bus().

 

error

Return location for error or NULL

 

Returns

The constructed proxy object or NULL if error is set.

[transfer full][type XAppStatusIconInterfaceProxy]


xapp_status_icon_interface_proxy_new_for_bus_sync ()

XAppStatusIconInterface *
xapp_status_icon_interface_proxy_new_for_bus_sync
                               (GBusType bus_type,
                                GDBusProxyFlags flags,
                                const gchar *name,
                                const gchar *object_path,
                                GCancellable *cancellable,
                                GError **error);

Like xapp_status_icon_interface_proxy_new_sync() but takes a GBusType instead of a GDBusConnection.

The calling thread is blocked until a reply is received.

See xapp_status_icon_interface_proxy_new_for_bus() for the asynchronous version of this constructor.

Parameters

bus_type

A GBusType.

 

flags

Flags from the GDBusProxyFlags enumeration.

 

name

A bus name (well-known or unique).

 

object_path

An object path.

 

cancellable

A GCancellable or NULL.

[nullable]

error

Return location for error or NULL

 

Returns

The constructed proxy object or NULL if error is set.

[transfer full][type XAppStatusIconInterfaceProxy]


xapp_status_icon_interface_skeleton_new ()

XAppStatusIconInterface *
xapp_status_icon_interface_skeleton_new
                               (void);

Creates a skeleton object for the D-Bus interface org.x.StatusIcon.

Returns

The skeleton object.

[transfer full][type XAppStatusIconInterfaceSkeleton]

Types and Values

Property Details

The “icon-name” property

  “icon-name”                gchar *

Represents the D-Bus property "IconName".

Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

Flags: Read / Write

Default value: NULL


The “label” property

  “label”                    gchar *

Represents the D-Bus property "Label".

Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

Flags: Read / Write

Default value: NULL


The “name” property

  “name”                     gchar *

Represents the D-Bus property "Name".

Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

Flags: Read / Write

Default value: NULL


The “tooltip-text” property

  “tooltip-text”             gchar *

Represents the D-Bus property "TooltipText".

Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

Flags: Read / Write

Default value: NULL


The “visible” property

  “visible”                  gboolean

Represents the D-Bus property "Visible".

Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

Flags: Read / Write

Default value: FALSE

Signal Details

The “handle-button-press” signal

gboolean
user_function (XAppStatusIconInterface *object,
               GDBusMethodInvocation   *invocation,
               gint                     arg_x,
               gint                     arg_y,
               guint                    arg_button,
               guint                    arg_time,
               gint                     arg_panel_position,
               gpointer                 user_data)

Signal emitted when a remote caller is invoking the ButtonPress() D-Bus method.

If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call xapp_status_icon_interface_complete_button_press() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

Parameters

object

A XAppStatusIconInterface.

 

invocation

A GDBusMethodInvocation.

 

arg_x

Argument passed by remote caller.

 

arg_y

Argument passed by remote caller.

 

arg_button

Argument passed by remote caller.

 

arg_time

Argument passed by remote caller.

 

arg_panel_position

Argument passed by remote caller.

 

user_data

user data set when the signal handler was connected.

 

Returns

TRUE if the invocation was handled, FALSE to let other signal handlers run.

Flags: Run Last


The “handle-button-release” signal

gboolean
user_function (XAppStatusIconInterface *object,
               GDBusMethodInvocation   *invocation,
               gint                     arg_x,
               gint                     arg_y,
               guint                    arg_button,
               guint                    arg_time,
               gint                     arg_panel_position,
               gpointer                 user_data)

Signal emitted when a remote caller is invoking the ButtonRelease() D-Bus method.

If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call xapp_status_icon_interface_complete_button_release() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

Parameters

object

A XAppStatusIconInterface.

 

invocation

A GDBusMethodInvocation.

 

arg_x

Argument passed by remote caller.

 

arg_y

Argument passed by remote caller.

 

arg_button

Argument passed by remote caller.

 

arg_time

Argument passed by remote caller.

 

arg_panel_position

Argument passed by remote caller.

 

user_data

user data set when the signal handler was connected.

 

Returns

TRUE if the invocation was handled, FALSE to let other signal handlers run.

Flags: Run Last

xapps-1.6.10/docs/reference/XAppStatusIconMonitor.html000066400000000000000000000343321360565754300227660ustar00rootroot00000000000000 XAppStatusIconMonitor: XApp Reference Manual

XAppStatusIconMonitor

XAppStatusIconMonitor — Looks for XAppStatusIcons on DBUS and communicates info to an applet to represent the icons.

Signals

Object Hierarchy

    GObject
    ╰── XAppStatusIconMonitor

Description

The XAppStatusIconMonitor is intended to be utilized by some status applet to display info about an app.

The simplest way to use is to make a new instance of this monitor, and connect to the “icon-added” and “icon-removed” signals. The received object for both of these signals is an XAppStatusIconInterfaceProxy. It represents an application's XAppStatusIcon, and has properties available for describing the icon name, tooltip, label and visibility.

The proxy also provides methods to handle clicks, which can be called by the applet, to request that the app display its menu.

Functions

xapp_status_icon_monitor_new ()

XAppStatusIconMonitor *
xapp_status_icon_monitor_new (void);

Creates a new monitor.

Returns

a new XAppStatusIconMonitor. Use g_object_unref when finished.

[transfer full]

Since: 1.6


xapp_status_icon_monitor_list_icons ()

GList *
xapp_status_icon_monitor_list_icons (XAppStatusIconMonitor *monitor);

List known icon proxies.

Parameters

monitor

a XAppStatusIconMonitor

 

Returns

a GList of icons.

[element-type XAppStatusIconMonitor][transfer container]

Since: 1.6

Types and Values

XAPP_TYPE_STATUS_ICON_MONITOR

#define XAPP_TYPE_STATUS_ICON_MONITOR   (xapp_status_icon_monitor_get_type ())

XAppStatusIconMonitor

typedef struct _XAppStatusIconMonitor XAppStatusIconMonitor;

Signal Details

The “icon-added” signal

void
user_function (XAppStatusIconMonitor        *monitor,
               XAppStatusIconInterfaceProxy *proxy,
               gpointer                      user_data)

This signal is emitted by the monitor when it has discovered a new XAppStatusIcon on the bus.

Parameters

monitor

the XAppStatusIconMonitor

 

proxy

the interface proxy for the XAppStatusIcon that has been added.

 

user_data

user data set when the signal handler was connected.

 

Flags: Action


The “icon-removed” signal

void
user_function (XAppStatusIconMonitor        *monitor,
               XAppStatusIconInterfaceProxy *proxy,
               gpointer                      user_data)

This signal is emitted by the monitor when an XAppStatusIcon has disappeared from the bus.

Parameters

monitor

the XAppStatusIconMonitor

 

proxy

the XAppStatusIcon proxy that has been removed.

 

user_data

user data set when the signal handler was connected.

 

Flags: Action

xapps-1.6.10/docs/reference/annotation-glossary.html000066400000000000000000000071241360565754300225430ustar00rootroot00000000000000 Annotation Glossary: XApp Reference Manual

Annotation Glossary

A

array

Parameter points to an array of items.

E

element-type

Generics and defining elements of containers and arrays.

N

nullable

NULL may be passed as the value in, out, in-out; or as a return value.

S

skip

Exposed in C code, not necessarily available in other languages.

T

transfer container

Free data container after the code is done.

transfer full

Free data after the code is done.

transfer none

Don't free data after the code is done.

type

Override the parsed C type with given type.

xapps-1.6.10/docs/reference/api-index-full.html000066400000000000000000001373171360565754300213560ustar00rootroot00000000000000 API Index: XApp Reference Manual

API Index

G

XAppGtkWindow, struct in XAppGtkWindow
XAppGtkWindowClass, struct in XAppGtkWindow
xapp_gtk_window_new, function in XAppGtkWindow
xapp_gtk_window_set_icon_from_file, function in XAppGtkWindow
xapp_gtk_window_set_icon_name, function in XAppGtkWindow
xapp_gtk_window_set_progress, function in XAppGtkWindow
xapp_gtk_window_set_progress_pulse, function in XAppGtkWindow

I

XAppIconChooserButton, struct in XAppIconChooserButton
XAppIconChooserButton:category, object property in XAppIconChooserButton
XAppIconChooserButton:icon, object property in XAppIconChooserButton
XAppIconChooserButton:icon-size, object property in XAppIconChooserButton
XAppIconChooserDialog, struct in XAppIconChooserDialog
XAppIconChooserDialog::close, object signal in XAppIconChooserDialog
XAppIconChooserDialog::select, object signal in XAppIconChooserDialog
XAppIconChooserDialog:allow-paths, object property in XAppIconChooserDialog
XAppIconChooserDialog:default-icon, object property in XAppIconChooserDialog
XAppIconChooserDialog:icon-size, object property in XAppIconChooserDialog
XAppIconSize, enum in XAppIconChooserDialog
xapp_icon_chooser_button_get_dialog, function in XAppIconChooserButton
xapp_icon_chooser_button_get_icon, function in XAppIconChooserButton
xapp_icon_chooser_button_new, function in XAppIconChooserButton
xapp_icon_chooser_button_new_with_size, function in XAppIconChooserButton
xapp_icon_chooser_button_set_default_category, function in XAppIconChooserButton
xapp_icon_chooser_button_set_icon, function in XAppIconChooserButton
xapp_icon_chooser_button_set_icon_size, function in XAppIconChooserButton
xapp_icon_chooser_dialog_add_button, function in XAppIconChooserDialog
xapp_icon_chooser_dialog_add_custom_category, function in XAppIconChooserDialog
xapp_icon_chooser_dialog_get_default_icon, function in XAppIconChooserDialog
xapp_icon_chooser_dialog_get_icon_string, function in XAppIconChooserDialog
xapp_icon_chooser_dialog_new, function in XAppIconChooserDialog
xapp_icon_chooser_dialog_run, function in XAppIconChooserDialog
xapp_icon_chooser_dialog_run_with_category, function in XAppIconChooserDialog
xapp_icon_chooser_dialog_run_with_icon, function in XAppIconChooserDialog
xapp_icon_chooser_dialog_set_default_icon, function in XAppIconChooserDialog

K

XAppKbdLayoutController::config-changed, object signal in XAppKbdLayoutController
XAppKbdLayoutController::layout-changed, object signal in XAppKbdLayoutController
XAppKbdLayoutController:enabled, object property in XAppKbdLayoutController
xapp_kbd_layout_controller_get_all_names, function in XAppKbdLayoutController
xapp_kbd_layout_controller_get_current_flag_id, function in XAppKbdLayoutController
xapp_kbd_layout_controller_get_current_group, function in XAppKbdLayoutController
xapp_kbd_layout_controller_get_current_icon_name, function in XAppKbdLayoutController
xapp_kbd_layout_controller_get_current_name, function in XAppKbdLayoutController
xapp_kbd_layout_controller_get_current_short_group_label, function in XAppKbdLayoutController
xapp_kbd_layout_controller_get_current_variant_label, function in XAppKbdLayoutController
xapp_kbd_layout_controller_get_enabled, function in XAppKbdLayoutController
xapp_kbd_layout_controller_get_flag_id_for_group, function in XAppKbdLayoutController
xapp_kbd_layout_controller_get_icon_name_for_group, function in XAppKbdLayoutController
xapp_kbd_layout_controller_get_short_group_label_for_group, function in XAppKbdLayoutController
xapp_kbd_layout_controller_get_variant_label_for_group, function in XAppKbdLayoutController
xapp_kbd_layout_controller_new, function in XAppKbdLayoutController
xapp_kbd_layout_controller_next_group, function in XAppKbdLayoutController
xapp_kbd_layout_controller_previous_group, function in XAppKbdLayoutController
xapp_kbd_layout_controller_render_cairo_subscript, function in XAppKbdLayoutController
xapp_kbd_layout_controller_set_current_group, function in XAppKbdLayoutController

M

xapp_monitor_blanker_are_monitors_blanked, function in XAppMonitorBlanker
xapp_monitor_blanker_blank_other_monitors, function in XAppMonitorBlanker
xapp_monitor_blanker_new, function in XAppMonitorBlanker
xapp_monitor_blanker_unblank_monitors, function in XAppMonitorBlanker

P

XAppPreferencesWindow, struct in XAppPreferencesWindow
XAppPreferencesWindow::close, object signal in XAppPreferencesWindow
XAppPreferencesWindowClass, struct in XAppPreferencesWindow
xapp_preferences_window_add_button, function in XAppPreferencesWindow
xapp_preferences_window_add_page, function in XAppPreferencesWindow
xapp_preferences_window_new, function in XAppPreferencesWindow

S

xapp_set_window_icon_from_file, function in XAppGtkWindow
xapp_set_window_icon_name, function in XAppGtkWindow
xapp_set_window_progress, function in XAppGtkWindow
xapp_set_window_progress_pulse, function in XAppGtkWindow
xapp_set_xid_icon_from_file, function in XAppGtkWindow
xapp_set_xid_icon_name, function in XAppGtkWindow
xapp_set_xid_progress, function in XAppGtkWindow
xapp_set_xid_progress_pulse, function in XAppGtkWindow
XAppStackSidebar, struct in XAppStackSidebar
XAppStackSidebar:stack, object property in XAppStackSidebar
xapp_stack_sidebar_get_stack, function in XAppStackSidebar
xapp_stack_sidebar_new, function in XAppStackSidebar
xapp_stack_sidebar_set_stack, function in XAppStackSidebar
XAppStatusIcon, struct in XAppStatusIcon
XAppStatusIcon::activate, object signal in XAppStatusIcon
XAppStatusIcon::button-press-event, object signal in XAppStatusIcon
XAppStatusIcon::button-release-event, object signal in XAppStatusIcon
XAppStatusIcon::state-changed, object signal in XAppStatusIcon
XAppStatusIcon:primary-menu, object property in XAppStatusIcon
XAppStatusIcon:secondary-menu, object property in XAppStatusIcon
XAppStatusIconInterface::handle-button-press, object signal in XAppStatusIconInterfaceSkeleton
XAppStatusIconInterface::handle-button-release, object signal in XAppStatusIconInterfaceSkeleton
XAppStatusIconInterface:icon-name, object property in XAppStatusIconInterfaceSkeleton
XAppStatusIconInterface:label, object property in XAppStatusIconInterfaceSkeleton
XAppStatusIconInterface:name, object property in XAppStatusIconInterfaceSkeleton
XAppStatusIconInterface:tooltip-text, object property in XAppStatusIconInterfaceSkeleton
XAppStatusIconInterface:visible, object property in XAppStatusIconInterfaceSkeleton
XAppStatusIconMonitor, struct in XAppStatusIconMonitor
XAppStatusIconMonitor::icon-added, object signal in XAppStatusIconMonitor
XAppStatusIconMonitor::icon-removed, object signal in XAppStatusIconMonitor
XAppStatusIconState, enum in XAppStatusIcon
xapp_status_icon_any_monitors, function in XAppStatusIcon
xapp_status_icon_get_primary_menu, function in XAppStatusIcon
xapp_status_icon_get_secondary_menu, function in XAppStatusIcon
xapp_status_icon_get_state, function in XAppStatusIcon
xapp_status_icon_interface_call_button_press, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_call_button_press_finish, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_call_button_press_sync, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_call_button_release, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_call_button_release_finish, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_call_button_release_sync, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_complete_button_press, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_complete_button_release, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_dup_icon_name, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_dup_label, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_dup_name, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_dup_tooltip_text, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_get_icon_name, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_get_label, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_get_name, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_get_tooltip_text, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_get_visible, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_interface_info, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_override_properties, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_proxy_new, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_proxy_new_finish, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_proxy_new_for_bus, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_proxy_new_for_bus_finish, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_proxy_new_for_bus_sync, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_proxy_new_sync, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_set_icon_name, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_set_label, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_set_name, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_set_tooltip_text, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_set_visible, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_interface_skeleton_new, function in XAppStatusIconInterfaceSkeleton
xapp_status_icon_monitor_list_icons, function in XAppStatusIconMonitor
xapp_status_icon_monitor_new, function in XAppStatusIconMonitor
xapp_status_icon_new, function in XAppStatusIcon
xapp_status_icon_set_icon_name, function in XAppStatusIcon
xapp_status_icon_set_label, function in XAppStatusIcon
xapp_status_icon_set_name, function in XAppStatusIcon
xapp_status_icon_set_primary_menu, function in XAppStatusIcon
xapp_status_icon_set_secondary_menu, function in XAppStatusIcon
xapp_status_icon_set_tooltip_text, function in XAppStatusIcon
xapp_status_icon_set_visible, function in XAppStatusIcon

T

XAPP_TYPE_GTK_WINDOW, macro in XAppGtkWindow
XAPP_TYPE_ICON_CHOOSER_BUTTON, macro in XAppIconChooserButton
XAPP_TYPE_ICON_CHOOSER_DIALOG, macro in XAppIconChooserDialog
XAPP_TYPE_PREFERENCES_WINDOW, macro in XAppPreferencesWindow
XAPP_TYPE_STACK_SIDEBAR, macro in XAppStackSidebar
XAPP_TYPE_STATUS_ICON, macro in XAppStatusIcon
XAPP_TYPE_STATUS_ICON_MONITOR, macro in XAppStatusIconMonitor
xapps-1.6.10/docs/reference/ch01.html000066400000000000000000000066351360565754300172710ustar00rootroot00000000000000 API reference: XApp Reference Manual

API reference

XAppGtkWindow — A subclass of GtkWindow that allows additional communication with the window manager.
XAppIconChooserButton — A button for selecting an icon
XAppIconChooserDialog — A dialog for selecting an icon
XAppKbdLayoutController — Keyboard layout selection UI element provider.
XAppMonitorBlanker — Blank and unblank unused monitors
XAppPreferencesWindow — A base preferences window
XAppStackSidebar — An automatic sidebar widget
XAppStatusIcon — Broadcasts status information over DBUS
XAppStatusIconMonitor — Looks for XAppStatusIcons on DBUS and communicates info to an applet to represent the icons.
XAppStatusIconInterfaceSkeleton
xapps-1.6.10/docs/reference/deprecated-api-index.html000066400000000000000000000031521360565754300225010ustar00rootroot00000000000000 Index of deprecated API: XApp Reference Manual

Index of deprecated API

xapps-1.6.10/docs/reference/home.png000066400000000000000000000002511360565754300172720ustar00rootroot00000000000000PNG  IHDRapIDATxc@*o NbfbY9h&ӨěA @;\a gȀs A2{4E |0: `p%a;(ft6YIENDB`xapps-1.6.10/docs/reference/index.html000066400000000000000000000064451360565754300176440ustar00rootroot00000000000000 XApp Reference Manual: XApp Reference Manual

xapp 1.6.2


API reference
XAppGtkWindow — A subclass of GtkWindow that allows additional communication with the window manager.
XAppIconChooserButton — A button for selecting an icon
XAppIconChooserDialog — A dialog for selecting an icon
XAppKbdLayoutController — Keyboard layout selection UI element provider.
XAppMonitorBlanker — Blank and unblank unused monitors
XAppPreferencesWindow — A base preferences window
XAppStackSidebar — An automatic sidebar widget
XAppStatusIcon — Broadcasts status information over DBUS
XAppStatusIconMonitor — Looks for XAppStatusIcons on DBUS and communicates info to an applet to represent the icons.
XAppStatusIconInterfaceSkeleton
Object Hierarchy
API Index
Index of deprecated API
Annotation Glossary
xapps-1.6.10/docs/reference/left-insensitive.png000066400000000000000000000005161360565754300216360ustar00rootroot00000000000000PNG  IHDR(-S~PLTEe 1f$j(i 0h2*ip+hHpkH! v:adJIENDB`xapps-1.6.10/docs/reference/left.png000066400000000000000000000002711360565754300172760ustar00rootroot00000000000000PNG  IHDRaIDATx! AaLUIO,z1=zFtj$w_߾zS:l R8I5FE<4(ݔ2{73͉҄':F 64I7JM>r"(!QuIENDB`xapps-1.6.10/docs/reference/libxapp.devhelp2000066400000000000000000000566441360565754300207470ustar00rootroot00000000000000 xapps-1.6.10/docs/reference/object-tree.html000066400000000000000000000130011360565754300207220ustar00rootroot00000000000000 Object Hierarchy: XApp Reference Manual

Object Hierarchy

    GObject
    ├── GInitiallyUnowned
       ╰── GtkWidget
           ╰── GtkContainer
               ╰── GtkBin
                   ├── GtkWindow
                      ├── XAppGtkWindow
                         ╰── XAppIconChooserDialog
                      ╰── XAppPreferencesWindow
                   ├── GtkButton
                      ╰── XAppIconChooserButton
                   ╰── XAppStackSidebar
    ├── XAppKbdLayoutController
    ├── XAppMonitorBlanker
    ├── XAppStatusIcon
    ├── GDBusProxy
       ╰── XAppStatusIconInterfaceProxy
    ├── GDBusInterfaceSkeleton
       ╰── XAppStatusIconInterfaceSkeleton
    ╰── XAppStatusIconMonitor
    GInterface
    ╰── XAppStatusIconInterface
    GEnum
    ├── XAppIconSize
    ╰── XAppStatusIconState
xapps-1.6.10/docs/reference/right-insensitive.png000066400000000000000000000003511360565754300220160ustar00rootroot00000000000000PNG  IHDRaIDATxc|`߾}޽{2Ԑ ـ;v\5={lI6d۶m@+` Yj3 z-04/@NA 2YfC Ȏ%Z͛6@5CC5j~)@go RafIENDB`xapps-1.6.10/docs/reference/right.png000066400000000000000000000002701360565754300174600ustar00rootroot00000000000000PNG  IHDRaIDATx! AqaMI +^4YTM4D MyO/ɂ>E. Iץ"3!]l,(jE͇5DŖ<3'x0͌{nIu$2"]pf!N IENDB`xapps-1.6.10/docs/reference/style.css000066400000000000000000000211541360565754300175130ustar00rootroot00000000000000body { font-family: cantarell, sans-serif; } .synopsis, .classsynopsis { /* tango:aluminium 1/2 */ background: #eeeeec; background: rgba(238, 238, 236, 0.5); border: solid 1px rgb(238, 238, 236); padding: 0.5em; } .programlisting { /* tango:sky blue 0/1 */ /* fallback for no rgba support */ background: #e6f3ff; border: solid 1px #729fcf; background: rgba(114, 159, 207, 0.1); border: solid 1px rgba(114, 159, 207, 0.2); padding: 0.5em; } .variablelist { padding: 4px; margin-left: 3em; } .variablelist td:first-child { vertical-align: top; } div.gallery-float { float: left; padding: 10px; } div.gallery-float img { border-style: none; } div.gallery-spacer { clear: both; } a, a:visited { text-decoration: none; /* tango:sky blue 2 */ color: #3465a4; } a:hover { text-decoration: underline; /* tango:sky blue 1 */ color: #729fcf; } div.informaltable table { border-collapse: separate; border-spacing: 1em 0.3em; border: none; } div.informaltable table td, div.informaltable table th { vertical-align: top; } .function_type, .variable_type, .property_type, .signal_type, .parameter_name, .struct_member_name, .union_member_name, .define_keyword, .datatype_keyword, .typedef_keyword { text-align: right; } /* dim non-primary columns */ .c_punctuation, .function_type, .variable_type, .property_type, .signal_type, .define_keyword, .datatype_keyword, .typedef_keyword, .property_flags, .signal_flags, .parameter_annotations, .enum_member_annotations, .struct_member_annotations, .union_member_annotations { color: #888a85; } .function_type a, .function_type a:visited, .function_type a:hover, .property_type a, .property_type a:visited, .property_type a:hover, .signal_type a, .signal_type a:visited, .signal_type a:hover, .signal_flags a, .signal_flags a:visited, .signal_flags a:hover { color: #729fcf; } td p { margin: 0.25em; } div.table table { border-collapse: collapse; border-spacing: 0px; /* tango:aluminium 3 */ border: solid 1px #babdb6; } div.table table td, div.table table th { /* tango:aluminium 3 */ border: solid 1px #babdb6; padding: 3px; vertical-align: top; } div.table table th { /* tango:aluminium 2 */ background-color: #d3d7cf; } h4 { color: #555753; margin-top: 1em; margin-bottom: 1em; } hr { /* tango:aluminium 1 */ color: #d3d7cf; background: #d3d7cf; border: none 0px; height: 1px; clear: both; margin: 2.0em 0em 2.0em 0em; } dl.toc dt { padding-bottom: 0.25em; } dl.toc > dt { padding-top: 0.25em; padding-bottom: 0.25em; font-weight: bold; } dl.toc > dl { padding-bottom: 0.5em; } .parameter { font-style: normal; } .footer { padding-top: 3.5em; /* tango:aluminium 3 */ color: #babdb6; text-align: center; font-size: 80%; } .informalfigure, .figure { margin: 1em; } .informalexample, .example { margin-top: 1em; margin-bottom: 1em; } .warning { /* tango:orange 0/1 */ background: #ffeed9; background: rgba(252, 175, 62, 0.1); border-color: #ffb04f; border-color: rgba(252, 175, 62, 0.2); } .note { /* tango:chameleon 0/0.5 */ background: #d8ffb2; background: rgba(138, 226, 52, 0.1); border-color: #abf562; border-color: rgba(138, 226, 52, 0.2); } div.blockquote { border-color: #eeeeec; } .note, .warning, div.blockquote { padding: 0.5em; border-width: 1px; border-style: solid; margin: 2em; } .note p, .warning p { margin: 0; } div.warning h3.title, div.note h3.title { display: none; } p + div.section { margin-top: 1em; } div.refnamediv, div.refsynopsisdiv, div.refsect1, div.refsect2, div.toc, div.section { margin-bottom: 1em; } /* blob links */ h2 .extralinks, h3 .extralinks { float: right; /* tango:aluminium 3 */ color: #babdb6; font-size: 80%; font-weight: normal; } .lineart { color: #d3d7cf; font-weight: normal; } .annotation { /* tango:aluminium 5 */ color: #555753; font-weight: normal; } .structfield { font-style: normal; font-weight: normal; } acronym,abbr { border-bottom: 1px dotted gray; } /* code listings */ .listing_code .programlisting .normal, .listing_code .programlisting .normal a, .listing_code .programlisting .number, .listing_code .programlisting .cbracket, .listing_code .programlisting .symbol { color: #555753; } .listing_code .programlisting .comment, .listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */ .listing_code .programlisting .function, .listing_code .programlisting .function a, .listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */ .listing_code .programlisting .string { color: #ad7fa8; } /* tango: plum */ .listing_code .programlisting .keyword, .listing_code .programlisting .usertype, .listing_code .programlisting .type, .listing_code .programlisting .type a { color: #4e9a06; } /* tango: chameleon 3 */ .listing_frame { /* tango:sky blue 1 */ border: solid 1px #729fcf; border: solid 1px rgba(114, 159, 207, 0.2); padding: 0px; } .listing_lines, .listing_code { margin-top: 0px; margin-bottom: 0px; padding: 0.5em; } .listing_lines { /* tango:sky blue 0.5 */ background: #a6c5e3; background: rgba(114, 159, 207, 0.2); /* tango:aluminium 6 */ color: #2e3436; } .listing_code { /* tango:sky blue 0 */ background: #e6f3ff; background: rgba(114, 159, 207, 0.1); } .listing_code .programlisting { /* override from previous */ border: none 0px; padding: 0px; background: none; } .listing_lines pre, .listing_code pre { margin: 0px; } @media screen { /* these have a as a first child, but since there are no parent selectors * we can't use that. */ a.footnote { position: relative; top: 0em ! important; } /* this is needed so that the local anchors are displayed below the naviagtion */ div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name] { display: inline-block; position: relative; top:-5em; } /* this seems to be a bug in the xsl style sheets when generating indexes */ div.index div.index { top: 0em; } /* make space for the fixed navigation bar and add space at the bottom so that * link targets appear somewhat close to top */ body { padding-top: 2.5em; padding-bottom: 500px; max-width: 60em; } p { max-width: 60em; } /* style and size the navigation bar */ table.navigation#top { position: fixed; background: #e2e2e2; border-bottom: solid 1px #babdb6; border-spacing: 5px; margin-top: 0; margin-bottom: 0; top: 0; left: 0; z-index: 10; } table.navigation#top td { padding-left: 6px; padding-right: 6px; } .navigation a, .navigation a:visited { /* tango:sky blue 3 */ color: #204a87; } .navigation a:hover { /* tango:sky blue 2 */ color: #3465a4; } td.shortcuts { /* tango:sky blue 2 */ color: #3465a4; font-size: 80%; white-space: nowrap; } td.shortcuts .dim { color: #babdb6; } .navigation .title { font-size: 80%; max-width: none; margin: 0px; font-weight: normal; } } @media screen and (min-width: 60em) { /* screen larger than 60em */ body { margin: auto; } } @media screen and (max-width: 60em) { /* screen less than 60em */ #nav_hierarchy { display: none; } #nav_interfaces { display: none; } #nav_prerequisites { display: none; } #nav_derived_interfaces { display: none; } #nav_implementations { display: none; } #nav_child_properties { display: none; } #nav_style_properties { display: none; } #nav_index { display: none; } #nav_glossary { display: none; } .gallery_image { display: none; } .property_flags { display: none; } .signal_flags { display: none; } .parameter_annotations { display: none; } .enum_member_annotations { display: none; } .struct_member_annotations { display: none; } .union_member_annotations { display: none; } /* now that a column is hidden, optimize space */ col.parameters_name { width: auto; } col.parameters_description { width: auto; } col.struct_members_name { width: auto; } col.struct_members_description { width: auto; } col.enum_members_name { width: auto; } col.enum_members_description { width: auto; } col.union_members_name { width: auto; } col.union_members_description { width: auto; } .listing_lines { display: none; } } @media print { table.navigation { visibility: collapse; display: none; } div.titlepage table.navigation { visibility: visible; display: table; background: #e2e2e2; border: solid 1px #babdb6; margin-top: 0; margin-bottom: 0; top: 0; left: 0; height: 3em; } } xapps-1.6.10/docs/reference/up-insensitive.png000066400000000000000000000004401360565754300213240ustar00rootroot00000000000000PNG  IHDR(-S`PLTEÿ[g&tRNS !1EMinoM3PIDATxڭJD1g,GԱ-5wn G7'30"vET!&~_b?rgԣ>1vIENDB`xapps-1.6.10/docs/reference/up.png000066400000000000000000000002721360565754300167710ustar00rootroot00000000000000PNG  IHDRaIDATx0 `7#t:HPw(.QG)Dc2z}xa< 1_M!F(ZU c !,po-i $u{ 6VCī"Z7̵*׎IENDB`xapps-1.6.10/docs/xapp-docs.xml000066400000000000000000000031661360565754300163260ustar00rootroot00000000000000 %gtkdocentities; ]> XApp Reference Manual &package_string; &package_version; API reference Object Hierarchy API Index Index of deprecated API xapps-1.6.10/docs/xml/000077500000000000000000000000001360565754300145005ustar00rootroot00000000000000xapps-1.6.10/docs/xml/gtkdocentities.ent.in000066400000000000000000000004461360565754300206410ustar00rootroot00000000000000 xapps-1.6.10/docs/xml/meson.build000066400000000000000000000010771360565754300166470ustar00rootroot00000000000000ent_conf = configuration_data() ent_conf.set('PACKAGE', 'xapps') ent_conf.set('PACKAGE_BUGREPORT', 'https://github.com/linuxmint/xapps/issues/new') ent_conf.set('PACKAGE_NAME', 'XApp') ent_conf.set('PACKAGE_STRING', meson.project_name()) ent_conf.set('PACKAGE_TARNAME', '@0@-@1@'.format(meson.project_name(), meson.project_version())) ent_conf.set('PACKAGE_URL', 'https://github.com/linuxmint/xapps') ent_conf.set('PACKAGE_VERSION', meson.project_version()) configure_file( input: 'gtkdocentities.ent.in', output: 'gtkdocentities.ent', configuration: ent_conf ) xapps-1.6.10/files/000077500000000000000000000000001360565754300140525ustar00rootroot00000000000000xapps-1.6.10/files/meson.build000066400000000000000000000001261360565754300162130ustar00rootroot00000000000000message('Copying ./files structure') install_subdir('usr', install_dir: '/', ) xapps-1.6.10/files/usr/000077500000000000000000000000001360565754300146635ustar00rootroot00000000000000xapps-1.6.10/files/usr/bin/000077500000000000000000000000001360565754300154335ustar00rootroot00000000000000xapps-1.6.10/files/usr/bin/pastebin000077500000000000000000000014101360565754300171620ustar00rootroot00000000000000#!/usr/bin/python3 import sys import os import stat import subprocess content = "" mode = os.fstat(0).st_mode if stat.S_ISFIFO(mode): content = sys.stdin.read() elif stat.S_ISREG(mode): content = sys.stdin.read() else: args = sys.argv[1:] if len(args) == 1 and os.path.exists(args[0]): with open(args[0], 'r') as infile: content = infile.read() else: str_args = ' '.join(args) content = str_args if content != "": if os.path.exists('/usr/bin/fpaste'): p = subprocess.Popen(['/usr/bin/fpaste'], stdin=subprocess.PIPE) p.communicate(content.encode("UTF-8")) else: p = subprocess.Popen(['nc', 'termbin.com', '9999'], stdin=subprocess.PIPE) p.communicate(content.encode("UTF-8")) xapps-1.6.10/files/usr/bin/upload-system-info000077500000000000000000000011351360565754300211200ustar00rootroot00000000000000#!/usr/bin/python3 import subprocess, os try: inxi = subprocess.Popen(['inxi', '-Fxxrzc0'], stdout=subprocess.PIPE) pastebin = subprocess.Popen(['/usr/bin/pastebin'], stdin=inxi.stdout, stdout=subprocess.PIPE) inxi.stdout.close() output = pastebin.communicate()[0] output = output.split()[0] # if we have more than one URL, only use the first one pastebin.wait() subprocess.call(['xdg-open', output]) except Exception as e: print ("An error occurred while uploading the system information:") print (e) print ("Please make sure you're connected to the Internet.") xapps-1.6.10/files/usr/bin/xfce4-set-wallpaper000077500000000000000000000011411360565754300211450ustar00rootroot00000000000000#!/bin/bash # Author: Weitian Leung # Version: 2.0 # License: GPL-3.0 # Description: set a picture as xfce4 wallpaper wallpaper=$1 # check image mime_type=`file --mime-type -b "$wallpaper"` if [[ ! "$mime_type" == image/* ]]; then echo "Invalid image" exit 1 fi # set to every monitor that contains image-path/last-image properties=$(xfconf-query -c xfce4-desktop -p /backdrop -l | grep -e "screen.*/monitor.*image-path$" -e "screen.*/monitor.*/last-image$") for property in $properties; do xfconf-query -c xfce4-desktop -p $property -s "$wallpaper" done xapps-1.6.10/files/usr/share/000077500000000000000000000000001360565754300157655ustar00rootroot00000000000000xapps-1.6.10/files/usr/share/icons/000077500000000000000000000000001360565754300171005ustar00rootroot00000000000000xapps-1.6.10/files/usr/share/icons/hicolor/000077500000000000000000000000001360565754300205375ustar00rootroot00000000000000xapps-1.6.10/files/usr/share/icons/hicolor/scalable/000077500000000000000000000000001360565754300223055ustar00rootroot00000000000000xapps-1.6.10/files/usr/share/icons/hicolor/scalable/actions/000077500000000000000000000000001360565754300237455ustar00rootroot00000000000000xapps-1.6.10/files/usr/share/icons/hicolor/scalable/actions/add-files-to-archive-symbolic.svg000066400000000000000000000144001360565754300321730ustar00rootroot00000000000000 image/svg+xml Gnome Symbolic Icon Theme Gnome Symbolic Icon Theme xapps-1.6.10/files/usr/share/icons/hicolor/scalable/actions/category-search-symbolic.svg000066400000000000000000000103531360565754300313670ustar00rootroot00000000000000 image/svg+xml Gnome Symbolic Icon Theme Gnome Symbolic Icon Theme xapps-1.6.10/files/usr/share/icons/hicolor/scalable/actions/extract-archive-symbolic.svg000066400000000000000000000064421360565754300314040ustar00rootroot00000000000000 image/svg+xml Gnome Symbolic Icon Theme Gnome Symbolic Icon Theme xapps-1.6.10/files/usr/share/icons/hicolor/scalable/actions/media-mount-symbolic.svg000066400000000000000000000074521360565754300305340ustar00rootroot00000000000000 image/svg+xml Gnome Symbolic Icon Theme Gnome Symbolic Icon Theme xapps-1.6.10/files/usr/share/icons/hicolor/scalable/actions/view-bottom-pane-symbolic.svg000066400000000000000000000112201360565754300314760ustar00rootroot00000000000000 image/svg+xml Gnome Symbolic Icon Theme Gnome Symbolic Icon Theme xapps-1.6.10/files/usr/share/icons/hicolor/scalable/actions/view-left-pane-symbolic-rtl.svg000066400000000000000000000113361360565754300317330ustar00rootroot00000000000000 image/svg+xml Gnome Symbolic Icon Theme Gnome Symbolic Icon Theme xapps-1.6.10/files/usr/share/icons/hicolor/scalable/actions/view-left-pane-symbolic.svg000066400000000000000000000113141360565754300311300ustar00rootroot00000000000000 image/svg+xml Gnome Symbolic Icon Theme Gnome Symbolic Icon Theme xapps-1.6.10/files/usr/share/icons/hicolor/scalable/actions/view-right-pane-symbolic-rtl.svg000066400000000000000000000113141360565754300321120ustar00rootroot00000000000000 image/svg+xml Gnome Symbolic Icon Theme Gnome Symbolic Icon Theme xapps-1.6.10/files/usr/share/icons/hicolor/scalable/actions/view-right-pane-symbolic.svg000066400000000000000000000113331360565754300313140ustar00rootroot00000000000000 image/svg+xml Gnome Symbolic Icon Theme Gnome Symbolic Icon Theme xapps-1.6.10/files/usr/share/icons/hicolor/scalable/actions/view-top-pane-symbolic.svg000066400000000000000000000112561360565754300310050ustar00rootroot00000000000000 image/svg+xml Gnome Symbolic Icon Theme Gnome Symbolic Icon Theme xapps-1.6.10/files/usr/share/icons/hicolor/scalable/actions/xapp-go-history-next-symbolic-rtl.svg000066400000000000000000000135421360565754300331370ustar00rootroot00000000000000 image/svg+xml xapps-1.6.10/files/usr/share/icons/hicolor/scalable/actions/xapp-go-history-next-symbolic.svg000066400000000000000000000135421360565754300323400ustar00rootroot00000000000000 image/svg+xml xapp-go-history-previous-symbolic-rtl.svg000066400000000000000000000135421360565754300337560ustar00rootroot00000000000000xapps-1.6.10/files/usr/share/icons/hicolor/scalable/actions image/svg+xml xapps-1.6.10/files/usr/share/icons/hicolor/scalable/actions/xapp-go-history-previous-symbolic.svg000066400000000000000000000135421360565754300332360ustar00rootroot00000000000000 image/svg+xml xapps-1.6.10/files/usr/share/icons/hicolor/scalable/actions/xapp-search-entire-word-symbolic.svg000066400000000000000000000114151360565754300327570ustar00rootroot00000000000000 image/svg+xml Gnome Symbolic Icon Theme Gnome Symbolic Icon Theme xapps-1.6.10/files/usr/share/icons/hicolor/scalable/actions/xapp-search-wrap-symbolic.svg000066400000000000000000000050631360565754300314730ustar00rootroot00000000000000 image/svg+xml Gnome Symbolic Icon Theme Gnome Symbolic Icon Theme xapps-1.6.10/files/usr/share/icons/hicolor/scalable/actions/xapp-text-case-symbolic.svg000066400000000000000000000104131360565754300311470ustar00rootroot00000000000000 image/svg+xml Gnome Symbolic Icon Theme Gnome Symbolic Icon Theme xapps-1.6.10/files/usr/share/icons/hicolor/scalable/actions/xapp-use-regex-symbolic.svg000066400000000000000000000063341360565754300311650ustar00rootroot00000000000000 image/svg+xml Gnome Symbolic Icon Theme Gnome Symbolic Icon Theme xapps-1.6.10/files/usr/share/icons/hicolor/scalable/categories/000077500000000000000000000000001360565754300244325ustar00rootroot00000000000000xapps-1.6.10/files/usr/share/icons/hicolor/scalable/categories/xapp-prefs-behavior-symbolic.svg000066400000000000000000000046411360565754300326610ustar00rootroot00000000000000 image/svg+xml xapps-1.6.10/files/usr/share/icons/hicolor/scalable/categories/xapp-prefs-display-symbolic.svg000066400000000000000000000051261360565754300325260ustar00rootroot00000000000000 image/svg+xml xapps-1.6.10/files/usr/share/icons/hicolor/scalable/categories/xapp-prefs-plugins-symbolic.svg000066400000000000000000000045001360565754300325350ustar00rootroot00000000000000 image/svg+xml xapps-1.6.10/files/usr/share/icons/hicolor/scalable/categories/xapp-prefs-preview-symbolic.svg000066400000000000000000000036421360565754300325430ustar00rootroot00000000000000 image/svg+xml xapps-1.6.10/files/usr/share/icons/hicolor/scalable/categories/xapp-prefs-toolbar-symbolic.svg000066400000000000000000000023031360565754300325150ustar00rootroot00000000000000 image/svg+xml Gnome Symbolic Icon Theme Gnome Symbolic Icon Theme xapps-1.6.10/libxapp/000077500000000000000000000000001360565754300144075ustar00rootroot00000000000000xapps-1.6.10/libxapp/XApp-1.0.metadata000066400000000000000000000004561360565754300172620ustar00rootroot00000000000000GtkWindow cheader_filename="libxapp/xapp-gtk-window.h" MonitorBlanker cheader_filename="libxapp/xapp-monitor-blanker.h" KbdLayoutController cheader_filename="libxapp/xapp-kbd-layout-controller.h" StatusIcon cheader_filename="libxapp/xapp-status-icon.h" XApp cheader_filename="libxapp/xapp-gtk-window.h"xapps-1.6.10/libxapp/g-codegen.py000077500000000000000000000015261360565754300166200ustar00rootroot00000000000000#!/usr/bin/env python3 ''' FIXME This script is used only to call gdbus-codegen and simulate the generation of the source code and header as different targets. Both are generated implicitly, so meson is not able to know how many files are generated, so it does generate only one opaque target that represents the two files. originally from: https://gitlab.gnome.org/GNOME/gnome-settings-daemon/commit/5924d72931a030b24554116a48140a661a99652b Please see: https://bugzilla.gnome.org/show_bug.cgi?id=791015 https://github.com/mesonbuild/meson/pull/2930 ''' import subprocess import sys import os subprocess.call([ 'gdbus-codegen', '--interface-prefix=' + sys.argv[1], '--generate-c-code=' + os.path.join(sys.argv[4], sys.argv[2]), '--c-namespace=XApp', '--annotate', sys.argv[1], 'org.gtk.GDBus.C.Name', sys.argv[3], sys.argv[5] ]) xapps-1.6.10/libxapp/install_generated_header.py000066400000000000000000000005711360565754300217600ustar00rootroot00000000000000#!/usr/bin/python3 import os import sys import subprocess install_dir = os.path.join(os.environ['MESON_INSTALL_DESTDIR_PREFIX'], 'include', 'xapp', 'libxapp') header_path = os.path.join(os.environ['MESON_BUILD_ROOT'], 'libxapp', sys.argv[1]) print("\nInstalling generated header '%s' to %s\n" % (sys.argv[1], install_dir)) subprocess.call(['cp', header_path, install_dir]) xapps-1.6.10/libxapp/meson.build000066400000000000000000000074561360565754300165650ustar00rootroot00000000000000glib_min_ver = '>=2.37.3' libdeps = [] libdeps += dependency('gio-2.0', version: glib_min_ver, required: true) libdeps += dependency('glib-2.0', version: glib_min_ver, required: true) libdeps += dependency('gtk+-3.0', version: '>=3.3.16', required: true) libdeps += dependency('gdk-pixbuf-2.0', version: '>=2.22.0', required: true) libdeps += dependency('cairo', required: true) libdeps += dependency('libgnomekbdui', required: true) libdeps += dependency('x11', required: true) xapp_headers = [ 'xapp-gtk-window.h', 'xapp-icon-chooser-button.h', 'xapp-icon-chooser-dialog.h', 'xapp-kbd-layout-controller.h', 'xapp-monitor-blanker.h', 'xapp-preferences-window.h', 'xapp-stack-sidebar.h', 'xapp-status-icon.h', 'xapp-status-icon-monitor.h' ] xapp_sources = [ 'xapp-glade-catalog.c', 'xapp-gtk-window.c', 'xapp-icon-chooser-button.c', 'xapp-icon-chooser-dialog.c', 'xapp-kbd-layout-controller.c', 'xapp-monitor-blanker.c', 'xapp-preferences-window.c', 'xapp-stack-sidebar.c', 'xapp-status-icon.c', 'xapp-status-icon-monitor.c' ] codegen = find_program('g-codegen.py') dbus_headers = [] # FIXME: Ugly workaround that simulates the generation of # two different targets, so headers can be included # explicitly for introspection. # # This can be removed once all platforms use meson >=.46 # and replaced with gnome.gdbus_codegen generated_sources = custom_target( 'xapp-statusicon-interface', input: 'org.x.StatusIcon.xml', output: ['xapp-statusicon-interface.h', 'xapp-statusicon-interface.c'], command: [ codegen, 'org.x.StatusIcon', 'xapp-statusicon-interface', 'StatusIconInterface', meson.current_build_dir(), '@INPUT@', '@OUTPUT@' ] ) # You can't actually access the generated header udring the install_header command below, # because the command is evaluated prior to the files being generated. So we need to manually # install the dbus header file (custom install scripts really *do* get evaluated after build, # during the install phase.) meson.add_install_script('install_generated_header.py', 'xapp-statusicon-interface.h') dbus_headers += generated_sources[0] xapp_sources += generated_sources[1] xapp_enums = gnome.mkenums('xapp-enums', sources : xapp_headers, c_template : 'xapp-enums.c.template', h_template : 'xapp-enums.h.template', identifier_prefix : 'XApp', symbol_prefix : 'xapp' ) libxapp = library('xapp', sources : xapp_headers + xapp_sources + xapp_enums + dbus_headers, include_directories: [top_inc], version: meson.project_version(), soversion: '1', dependencies: libdeps, c_args: ['-Wno-declaration-after-statement', '-DG_LOG_DOMAIN="XApp"'], link_args: [ '-Wl,-Bsymbolic', '-Wl,-z,relro', '-Wl,-z,now', '-lm'], install: true ) install_headers(xapp_headers, subdir: 'xapp/libxapp' ) libxapp_dep = declare_dependency( link_with: libxapp, include_directories: top_inc, dependencies: libdeps, sources: [ xapp_headers, dbus_headers ] ) gir = gnome.generate_gir(libxapp, namespace: 'XApp', nsversion: '1.0', sources: xapp_headers + xapp_sources + dbus_headers, identifier_prefix: 'XApp', symbol_prefix: 'xapp_', includes: ['GObject-2.0', 'Gtk-3.0'], install: true ) pkg.generate( libraries: libxapp, name: 'xapp', subdirs: 'xapp', description: 'Utility library', version: meson.project_version(), requires: ['gtk+-3.0', 'gobject-2.0', 'cairo'], requires_private: 'xkbfile', ) install_data(['xapp-glade-catalog.xml'], install_dir : join_paths(get_option('datadir'), 'glade/catalogs') ) gnome.generate_vapi('xapp', packages: ['glib-2.0', 'gio-unix-2.0', 'gtk+-3.0'], sources: gir[0], metadata_dirs: meson.current_source_dir(), install: true ) xapps-1.6.10/libxapp/org.x.StatusIcon.xml000066400000000000000000000021641360565754300202640ustar00rootroot00000000000000 xapps-1.6.10/libxapp/xapp-enums.c.template000066400000000000000000000017131360565754300204640ustar00rootroot00000000000000/*** BEGIN file-header ***/ #include "config.h" #include "xapp-enums.h" #include "xapp-icon-chooser-dialog.h" #include "xapp-status-icon.h" #define C_ENUM(v) ((gint) v) #define C_FLAGS(v) ((guint) v) /*** END file-header ***/ /*** BEGIN file-production ***/ /* enumerations from "@basename@" */ /*** END file-production ***/ /*** BEGIN value-header ***/ GType @enum_name@_get_type (void) { static volatile gsize gtype_id = 0; static const G@Type@Value values[] = { /*** END value-header ***/ /*** BEGIN value-production ***/ { C_ENUM(@VALUENAME@), "@VALUENAME@", "@valuenick@" }, /*** END value-production ***/ /*** BEGIN value-tail ***/ { 0, NULL, NULL } }; if (g_once_init_enter (>ype_id)) { GType new_type = g_@type@_register_static ("@EnumName@", values); g_once_init_leave (>ype_id, new_type); } return (GType) gtype_id; } /*** END value-tail ***/ /*** BEGIN file-tail ***/ /*** END file-tail ***/ xapps-1.6.10/libxapp/xapp-enums.h.template000066400000000000000000000007601360565754300204720ustar00rootroot00000000000000/*** BEGIN file-header ***/ #ifndef __XAPP_ENUMS_H__ #define __XAPP_ENUMS_H__ #include G_BEGIN_DECLS /*** END file-header ***/ /*** BEGIN file-production ***/ /* enumerations from "@basename@" */ /*** END file-production ***/ /*** BEGIN value-header ***/ GType @enum_name@_get_type (void); #define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ()) /*** END value-header ***/ /*** BEGIN file-tail ***/ G_END_DECLS #endif /* __XAPP_ENUMS_H__ */ /*** END file-tail ***/ xapps-1.6.10/libxapp/xapp-glade-catalog.c000066400000000000000000000006161360565754300202100ustar00rootroot00000000000000#include "config.h" #include #include "xapp-gtk-window.h" #include "xapp-icon-chooser-button.h" #include "xapp-stack-sidebar.h" void xapp_glade_catalog_init (const gchar *catalog_name); void xapp_glade_catalog_init (const gchar *catalog_name) { g_type_ensure (XAPP_TYPE_GTK_WINDOW); g_type_ensure (XAPP_TYPE_ICON_CHOOSER_BUTTON); g_type_ensure (XAPP_TYPE_STACK_SIDEBAR); } xapps-1.6.10/libxapp/xapp-glade-catalog.xml000066400000000000000000000015311360565754300205630ustar00rootroot00000000000000 xapp_glade_catalog_init xapps-1.6.10/libxapp/xapp-gtk-window.c000066400000000000000000000565251360565754300176300ustar00rootroot00000000000000 #include #include #include #include #include #include #include #include #include "xapp-gtk-window.h" #define ICON_NAME_HINT "_NET_WM_XAPP_ICON_NAME" #define PROGRESS_HINT "_NET_WM_XAPP_PROGRESS" #define PROGRESS_PULSE_HINT "_NET_WM_XAPP_PROGRESS_PULSE" /** * SECTION:xapp-gtk-window * @Short_description: A subclass of %GtkWindow that allows additional communication with the window manager. * @Title: XAppGtkWindow * * This widget is a simple subclass of GtkWindow that provides the following * additional capabilities: * * - Ability to set an icon name or icon file path for the window manager to * make use of, rather than relying on a desktop file or fixed-size window- * backed icon that Gtk normally generates. The window manager must support * the NET_WM_XAPP_ICON_NAME hint. * * - Ability to send progress info to the window manager, in the form of an integer, * 0-100, which can then be used to display this progress in some manner in a task * manager or window list. The window manager must support the NET_WM_XAPP_PROGRESS * hint. * * - Ability to signal a 'pulsing' progress state, of potentially indeterminate value, * in the form of a boolean, which can be passed on to a window list. The window * manager must support the NET_WM_XAPP_PROGRESS_PULSE hint * * Wrappers: * * Also provided are corresponding wrapper functions for normal GtkWindows. * They are not class methods - they are called with the target widget as their first * argument. * * For example: * * win = Gtk.Window() * XApp.set_window_icon_name(win, "foobar") * * These functions mirror those of the #XAppGtkWindow class, but allow the properties * to work with normal GtkWindows and descendants of GtkWindow. */ typedef struct { gchar *icon_name; gchar *icon_path; guint progress; gboolean progress_pulse; } XAppGtkWindowPrivate; G_DEFINE_TYPE_WITH_PRIVATE (XAppGtkWindow, xapp_gtk_window, GTK_TYPE_WINDOW) static gboolean is_x11_session (void) { static gboolean running_x11 = FALSE; static gsize once_init_value = 0; if (g_once_init_enter (&once_init_value)) { running_x11 = GDK_IS_X11_DISPLAY(gdk_display_get_default()); g_debug ("XAppGtkWindow: is_x11_session: %s\n", running_x11 ? "TRUE" : "FALSE"); g_once_init_leave (&once_init_value, 1); } return running_x11; } static void clear_icon_strings (XAppGtkWindowPrivate *priv) { g_clear_pointer (&priv->icon_name, g_free); g_clear_pointer (&priv->icon_path, g_free); } static void set_window_hint_utf8 (Window xid, const gchar *atom_name, const gchar *str) { GdkDisplay *display; display = gdk_display_get_default (); if (str != NULL) { XChangeProperty (GDK_DISPLAY_XDISPLAY (display), xid, gdk_x11_get_xatom_by_name_for_display (display, atom_name), gdk_x11_get_xatom_by_name_for_display (display, "UTF8_STRING"), 8, PropModeReplace, (guchar *) str, strlen (str)); } else { XDeleteProperty (GDK_DISPLAY_XDISPLAY (display), xid, gdk_x11_get_xatom_by_name_for_display (display, atom_name)); } } static void set_window_hint_cardinal (Window xid, const gchar *atom_name, gulong cardinal) { GdkDisplay *display; display = gdk_display_get_default (); gdk_error_trap_push (); if (cardinal > 0) { XChangeProperty (GDK_DISPLAY_XDISPLAY (display), xid, gdk_x11_get_xatom_by_name_for_display (display, atom_name), XA_CARDINAL, 32, PropModeReplace, (guchar *) &cardinal, 1); } else { XDeleteProperty (GDK_DISPLAY_XDISPLAY (display), xid, gdk_x11_get_xatom_by_name_for_display (display, atom_name)); } gdk_error_trap_pop_ignored (); } static Window get_window_xid (GtkWindow *window) { GdkWindow *gdk_window; gdk_window = gtk_widget_get_window (GTK_WIDGET (window)); if (gdk_window_get_effective_toplevel (gdk_window) != gdk_window) { g_warning ("Window is not toplevel"); return 0; } return GDK_WINDOW_XID (gdk_window); } static void update_window_icon (GtkWindow *window, XAppGtkWindowPrivate *priv) { if (!is_x11_session ()) { return; } /* Icon name/path */ if (priv->icon_name != NULL) { set_window_hint_utf8 (get_window_xid (window), ICON_NAME_HINT, priv->icon_name); } else if (priv->icon_path != NULL) { set_window_hint_utf8 (get_window_xid (window), ICON_NAME_HINT, priv->icon_path); } else { set_window_hint_utf8 (get_window_xid (window), ICON_NAME_HINT, NULL); } } static void update_window_progress (GtkWindow *window, XAppGtkWindowPrivate *priv) { if (!is_x11_session ()) { return; } /* Progress: 0 - 100 */ set_window_hint_cardinal (get_window_xid (window), PROGRESS_HINT, (gulong) priv->progress); set_window_hint_cardinal (get_window_xid (window), PROGRESS_PULSE_HINT, (gulong) (priv->progress_pulse ? 1 : 0)); } static void set_icon_name_internal (GtkWindow *window, XAppGtkWindowPrivate *priv, const gchar *icon_name) { if (g_strcmp0 (icon_name, priv->icon_name) == 0) { gtk_window_set_icon_name (window, icon_name); return; } /* Clear both strings when either is set - this ensures the * correct value is set during update_window() */ clear_icon_strings (priv); if (icon_name != NULL) { priv->icon_name = g_strdup (icon_name); } /* If the window is realized, set the icon name immediately. * If it's not, it will be set by xapp_gtk_window_realize(). */ if (gtk_widget_get_realized (GTK_WIDGET (window))) { update_window_icon (window, priv); } /* Call the GtkWindow method for compatibility */ gtk_window_set_icon_name (GTK_WINDOW (window), icon_name); } static void set_icon_from_file_internal (GtkWindow *window, XAppGtkWindowPrivate *priv, const gchar *file_name, GError **error) { if (g_strcmp0 (file_name, priv->icon_path) == 0) { gtk_window_set_icon_from_file (window, file_name, error); return; } /* Clear both strings when either is set - this ensures the correct * value is set during update_window() */ clear_icon_strings (priv); if (file_name != NULL) { priv->icon_path = g_strdup (file_name); } /* If the window is realized, set the icon path immediately. * If it's not, it will be set by xapp_gtk_window_realize(). */ if (gtk_widget_get_realized (GTK_WIDGET (window))) { update_window_icon (window, priv); } gtk_window_set_icon_from_file (GTK_WINDOW (window), file_name, error); } static void set_progress_internal (GtkWindow *window, XAppGtkWindowPrivate *priv, gint progress) { gboolean update; guint clamped_progress; update = FALSE; if (priv->progress_pulse) { priv->progress_pulse = FALSE; update = TRUE; } clamped_progress = CLAMP (progress, 0, 100); if (clamped_progress != priv->progress) { priv->progress = clamped_progress; update = TRUE; } /* If the window is realized, set the progress immediately. * If it's not, it will be set by xapp_gtk_window_realize(). */ if (gtk_widget_get_realized (GTK_WIDGET (window))) { if (update) { update_window_progress (window, priv); } } } static void set_progress_pulse_internal (GtkWindow *window, XAppGtkWindowPrivate *priv, gboolean pulse) { gboolean update; update = FALSE; if (priv->progress_pulse != pulse) { priv->progress_pulse = pulse; update = TRUE; } /* If the window is realized, set the progress immediately. * If it's not, it will be set by xapp_gtk_window_realize(). */ if (gtk_widget_get_realized (GTK_WIDGET (window))) { if (update) { update_window_progress (window, priv); } } } static void xapp_gtk_window_realize (GtkWidget *widget) { XAppGtkWindow *window = XAPP_GTK_WINDOW (widget); XAppGtkWindowPrivate *priv = xapp_gtk_window_get_instance_private (window); GTK_WIDGET_CLASS (xapp_gtk_window_parent_class)->realize (widget); update_window_icon (GTK_WINDOW (window), priv); update_window_progress (GTK_WINDOW (window), priv); } static void xapp_gtk_window_unrealize (GtkWidget *widget) { GTK_WIDGET_CLASS (xapp_gtk_window_parent_class)->unrealize (widget); } static void xapp_gtk_window_finalize (GObject *object) { XAppGtkWindow *window = XAPP_GTK_WINDOW (object); XAppGtkWindowPrivate *priv = xapp_gtk_window_get_instance_private (window); clear_icon_strings (priv); G_OBJECT_CLASS (xapp_gtk_window_parent_class)->finalize (object); } static void xapp_gtk_window_init (XAppGtkWindow *window) { XAppGtkWindowPrivate *priv; priv = xapp_gtk_window_get_instance_private (window); priv->icon_name = NULL; priv->icon_path = NULL; } static void xapp_gtk_window_class_init (XAppGtkWindowClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GtkWidgetClass *wclass = GTK_WIDGET_CLASS (klass); gobject_class->finalize = xapp_gtk_window_finalize; wclass->realize = xapp_gtk_window_realize; wclass->unrealize = xapp_gtk_window_unrealize; } /** * xapp_gtk_window_new: * @type: The #GtkWindowType to use * * Creates a new #XAppGtkWindow of type @type. See gtk_window_new() * for more details. * * Returns: A new #XAppGtkWindow (transfer: full) */ GtkWidget * xapp_gtk_window_new (GtkWindowType type) { return g_object_new (XAPP_TYPE_GTK_WINDOW, "type", type, NULL); } /** * xapp_gtk_window_set_icon_name: * @window: The #XAppGtkWindow to set the icon name for * @icon_name: (nullable): The icon name or path to set, or %NULL to unset. * * Sets the icon name hint for a window manager (like muffin) to make * available when applications want to change their icons during runtime * without having to resort to the internal low-res pixbufs that GdkWindow * sets on the client side. This also chains up and calls GtkWindow.set_icon_name * for convenience and compatibility. Set to %NULL to unset. */ void xapp_gtk_window_set_icon_name (XAppGtkWindow *window, const gchar *icon_name) { g_return_if_fail (XAPP_IS_GTK_WINDOW (window)); XAppGtkWindowPrivate *priv = xapp_gtk_window_get_instance_private (window); set_icon_name_internal (GTK_WINDOW (window), priv, icon_name); } /** * xapp_gtk_window_set_icon_from_file: * @window: The #XAppGtkWindow to set the icon name for * @file_name: (nullable): The icon path to set, or %NULL to unset. * @error: (nullable): An error to set if something goes wrong. * * Sets the icon name hint for a window manager (like muffin) to make * available when applications want to change their icons during runtime * without having to resort to the internal low-res pixbufs that GdkWindow * sets on the client side. This also chains up and calls GtkWindow.set_icon_from_file * for convenience and compatibility. Set to %NULL to unset. */ void xapp_gtk_window_set_icon_from_file (XAppGtkWindow *window, const gchar *file_name, GError **error) { g_return_if_fail (XAPP_IS_GTK_WINDOW (window)); XAppGtkWindowPrivate *priv = xapp_gtk_window_get_instance_private (window); set_icon_from_file_internal (GTK_WINDOW (window), priv, file_name, error); } /** * xapp_gtk_window_set_progress: * @window: The #XAppGtkWindow to set the progress for * @progress: The value to set for progress. * * Sets the progress hint for a window manager (like muffin) to make * available when applications want to display the application's progress * in some operation. The value sent to the WM will be clamped to * between 0 and 100. * * Note: If a window will stick around after progress is complete, you will * probaby need to set progress to 0 to remove any progress effects on taskbars * and window lists. * * Setting progress will also cancel the 'pulsing' flag on the window as * well, if it has been set. */ void xapp_gtk_window_set_progress (XAppGtkWindow *window, gint progress) { g_return_if_fail (XAPP_IS_GTK_WINDOW (window)); XAppGtkWindowPrivate *priv = xapp_gtk_window_get_instance_private (window); set_progress_internal (GTK_WINDOW (window), priv, progress); } /** * xapp_gtk_window_set_progress_pulse: * @window: The #XAppGtkWindow to set the progress for * @pulse: Whether to have pulsing set or not. * * Sets the progress pulse hint hint for a window manager (like muffin) * to make available when applications want to display indeterminate or * ongoing progress in a task manager. * * Note: If a window will stick around after progress is complete, you will * probaby need to set progress to 0 to remove any progress effects on taskbars * and window lists. This will also remove the pulse state, if it is set. * * Setting an explicit progress value will unset this flag. */ void xapp_gtk_window_set_progress_pulse (XAppGtkWindow *window, gboolean pulse) { g_return_if_fail (XAPP_IS_GTK_WINDOW (window)); XAppGtkWindowPrivate *priv = xapp_gtk_window_get_instance_private (window); set_progress_pulse_internal (GTK_WINDOW (window), priv, pulse); } /* Wrappers (for GtkWindow subclasses like GtkDialog) * window must be a GtkWindow or descendant */ static void on_gtk_window_realized (GtkWidget *widget, gpointer user_data) { XAppGtkWindowPrivate *priv; priv = (XAppGtkWindowPrivate *) user_data; update_window_icon (GTK_WINDOW (widget), priv); update_window_progress (GTK_WINDOW (widget), priv); } static void destroy_xapp_struct (gpointer user_data) { XAppGtkWindowPrivate *priv = (XAppGtkWindowPrivate *) user_data; g_clear_pointer (&priv->icon_name, g_free); g_clear_pointer (&priv->icon_path, g_free); g_slice_free (XAppGtkWindowPrivate, priv); } static XAppGtkWindowPrivate * get_xapp_struct (GtkWindow *window) { XAppGtkWindowPrivate *priv; priv = g_object_get_data (G_OBJECT (window), "xapp-window-struct"); if (priv) { return priv; } priv = g_slice_new0 (XAppGtkWindowPrivate); g_object_set_data_full (G_OBJECT (window), "xapp-window-struct", priv, (GDestroyNotify) destroy_xapp_struct); g_signal_connect_after (GTK_WIDGET (window), "realize", G_CALLBACK (on_gtk_window_realized), priv); return priv; } /** * xapp_set_window_icon_name: * @window: The #GtkWindow to set the icon name for * @icon_name: (nullable): The icon name to set, or %NULL to unset. * * Sets the icon name hint for a window manager (like muffin) to make * available when applications want to change their icons during runtime * without having to resort to the internal low-res pixbufs that GdkWindow * sets on the client side. This is a function, not a method, for taking * advantage of this feature with descendants of GtkWindows, such as * GtkDialogs. Sets gtk_window_set_icon_name as well, to avoid needing * to have two calls each time. Set to %NULL to unset. */ void xapp_set_window_icon_name (GtkWindow *window, const gchar *icon_name) { XAppGtkWindowPrivate *priv; g_return_if_fail (GTK_IS_WINDOW (window)); priv = get_xapp_struct (window); if (XAPP_IS_GTK_WINDOW (window)) { g_warning("Window is an instance of XAppGtkWindow. Use the instance set_icon_name method instead."); } set_icon_name_internal (window, priv, icon_name); } /** * xapp_set_window_icon_from_file: * @window: The #GtkWindow to set the icon name for * @file_name: (nullable): The icon path to set, or %NULL to unset. * @error: (nullable): An error to set if something goes wrong. * * Sets the icon name hint for a window manager (like muffin) to make * available when applications want to change their icons during runtime * without having to resort to the internal low-res pixbufs that GdkWindow * sets on the client side. This also chains up and calls GtkWindow.set_icon_from_file * for convenience and compatibility. Set to %NULL to unset. */ void xapp_set_window_icon_from_file (GtkWindow *window, const gchar *file_name, GError **error) { XAppGtkWindowPrivate *priv; g_return_if_fail (GTK_IS_WINDOW (window)); priv = get_xapp_struct (window); if (XAPP_IS_GTK_WINDOW (window)) { g_warning("Window is an instance of XAppGtkWindow. Use the instance set_icon_from_file method instead."); } set_icon_from_file_internal (window, priv, file_name, error); } /** * xapp_set_window_progress: * @window: The #GtkWindow to set the progress for * @progress: The value to set for progress. * * Sets the progress hint for a window manager (like muffin) to make * available when applications want to display the application's progress * in some operation. The value sent to the WM will be clamped to * between 0 and 100. * * Note: If a window will stick around after progress is complete, you will * probaby need to set progress to 0 to remove any progress effects on taskbars * and window lists. * * Setting progress will also cancel the 'pulsing' flag on the window as * well, if it has been set. */ void xapp_set_window_progress (GtkWindow *window, gint progress) { XAppGtkWindowPrivate *priv; g_return_if_fail (GTK_IS_WINDOW (window)); priv = get_xapp_struct (window); if (XAPP_IS_GTK_WINDOW (window)) { g_warning("Window is an instance of XAppGtkWindow. Use the instance set_progress method instead."); } set_progress_internal (window, priv, progress); } /** * xapp_set_window_progress_pulse: * @window: The #GtkWindow to set the progress for * @pulse: Whether to have pulsing set or not. * * Sets the progress pulse hint hint for a window manager (like muffin) * to make available when applications want to display indeterminate or * ongoing progress in a task manager. * * Note: If a window will stick around after progress is complete, you will * probaby need to set progress to 0 to remove any progress effects on taskbars * and window lists. This will also remove the pulse state, if it is set. * * Setting an explicit progress value will unset this flag. */ void xapp_set_window_progress_pulse (GtkWindow *window, gboolean pulse) { XAppGtkWindowPrivate *priv; g_return_if_fail (GTK_IS_WINDOW (window)); priv = get_xapp_struct (window); if (XAPP_IS_GTK_WINDOW (window)) { g_warning("Window is an instance of XAppGtkWindow. Use the instance set_progress_pulse method instead."); } set_progress_pulse_internal (GTK_WINDOW (window), priv, pulse); } /** * xapp_set_xid_icon_name: * @xid: The Window to set the icon name for * @icon_name: (nullable): The icon name to set, or %NULL to unset. * * Sets the icon name hint for a window manager (like muffin) to make * available when applications want to change their icons during runtime * without having to resort to the internal low-res pixbufs that GdkWindow * sets on the client side. This is a function, not a method, for applying * the icon name property for a given (possibly foreign) window, by passing * the window's XID. Set to %NULL to unset. */ void xapp_set_xid_icon_name (gulong xid, const gchar *icon_name) { g_return_if_fail (xid > 0); set_window_hint_utf8 (xid, ICON_NAME_HINT, icon_name); } /** * xapp_set_xid_icon_from_file: * @xid: The Window to set the icon name for * @file_name: (nullable): The icon path to set, or %NULL to unset. * * Sets the icon name hint for a window manager (like muffin) to make * available when applications want to change their icons during runtime * without having to resort to the internal low-res pixbufs that GdkWindow * sets on the client side. This is a function, not a method, for applying * the icon name property for a given (possibly foreign) window, by passing * the window's XID. Set to %NULL to unset. */ void xapp_set_xid_icon_from_file (gulong xid, const gchar *file_name) { g_return_if_fail (xid > 0); set_window_hint_utf8 (xid, ICON_NAME_HINT, file_name); } /** * xapp_set_xid_progress: * @xid: The Window to set the progress for * @progress: The value to set for progress. * * Sets the progress hint for a window manager (like muffin) to make * available when applications want to display the application's progress * in some operation. The value sent to the WM will be clamped to * between 0 and 100. * * Setting progress will also cancel the 'pulsing' flag on the window as * well, if it has been set. * * Note: If a window will stick around after progress is complete, you will * probaby need to set progress to 0 to remove any progress effects on taskbars * and window lists. * * This is a function, not a method, for applying the progress property for * a given (possibly foreign) window, by passing the window's XID. */ void xapp_set_xid_progress (gulong xid, gint progress) { g_return_if_fail (xid > 0); set_window_hint_cardinal (xid, PROGRESS_HINT, (gulong) (CLAMP (progress, 0, 100))); set_window_hint_cardinal (xid, PROGRESS_PULSE_HINT, (gulong) 0); } /** * xapp_set_xid_progress_pulse: * @xid: The Window to set the progress for * @pulse: Whether to have pulsing set or not. * * Sets the progress pulse hint hint for a window manager (like muffin) * to make available when applications want to display indeterminate or * ongoing progress in a task manager. * * Note: If a window will stick around after progress is complete, you will * probaby need to set progress to 0 to remove any progress effects on taskbars * and window lists. * * Setting an explicit progress value will unset this flag. */ void xapp_set_xid_progress_pulse (gulong xid, gboolean pulse) { g_return_if_fail (xid > 0); set_window_hint_cardinal (xid, PROGRESS_PULSE_HINT, (gulong) (pulse ? 1 : 0)); } xapps-1.6.10/libxapp/xapp-gtk-window.h000066400000000000000000000062331360565754300176240ustar00rootroot00000000000000#ifndef __XAPP_GTK_WINDOW_H__ #define __XAPP_GTK_WINDOW_H__ #include #include #include G_BEGIN_DECLS #define XAPP_TYPE_GTK_WINDOW (xapp_gtk_window_get_type ()) G_DECLARE_DERIVABLE_TYPE (XAppGtkWindow, xapp_gtk_window, XAPP, GTK_WINDOW, GtkWindow) struct _XAppGtkWindowClass { GtkWindowClass parent_class; gpointer padding[12]; }; /* Class */ GtkWidget *xapp_gtk_window_new (GtkWindowType type); void xapp_gtk_window_set_icon_name (XAppGtkWindow *window, const gchar *icon_name); void xapp_gtk_window_set_icon_from_file (XAppGtkWindow *window, const gchar *file_name, GError **error); void xapp_gtk_window_set_progress (XAppGtkWindow *window, gint progress); void xapp_gtk_window_set_progress_pulse (XAppGtkWindow *window, gboolean pulse); /* Wrappers (for GtkWindow subclasses like GtkDialog)*/ void xapp_set_window_icon_name (GtkWindow *window, const gchar *icon_name); void xapp_set_window_icon_from_file (GtkWindow *window, const gchar *file_name, GError **error); void xapp_set_window_progress (GtkWindow *window, gint progress); void xapp_set_window_progress_pulse (GtkWindow *window, gboolean pulse); /* Low level for X11 Window xid's */ void xapp_set_xid_icon_name (gulong xid, const gchar *icon_name); void xapp_set_xid_icon_from_file (gulong xid, const gchar *file_name); void xapp_set_xid_progress (gulong xid, gint progress); void xapp_set_xid_progress_pulse (gulong xid, gboolean pulse); G_END_DECLS #endif /* __XAPP_GTK_WINDOW_H__ */ xapps-1.6.10/libxapp/xapp-icon-chooser-button.c000066400000000000000000000303371360565754300214300ustar00rootroot00000000000000#include #include "xapp-icon-chooser-button.h" #include #define XAPP_BUTTON_ICON_SIZE_DEFAULT GTK_ICON_SIZE_DIALOG /** * SECTION:xapp-icon-chooser-button * @Short_description: A button for selecting an icon * @Title: XAppIconChooserButton * * The XAppIconChooserButton creates a button so that * the user can select an icon. When the button is clicked * it will open an XAppIconChooserDialog. The currently * selected icon will be displayed as the button image. */ typedef struct { GtkWidget *image; XAppIconChooserDialog *dialog; GtkIconSize icon_size; gchar *icon_string; gchar *category_string; } XAppIconChooserButtonPrivate; struct _XAppIconChooserButton { GtkButton parent_instance; }; enum { PROP_0, PROP_ICON_SIZE, PROP_ICON, PROP_CATEGORY, N_PROPERTIES }; static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; G_DEFINE_TYPE_WITH_PRIVATE (XAppIconChooserButton, xapp_icon_chooser_button, GTK_TYPE_BUTTON) static void ensure_dialog (XAppIconChooserButton *button) { XAppIconChooserButtonPrivate *priv; priv = xapp_icon_chooser_button_get_instance_private (button); if (priv->dialog != NULL) { return; } priv->dialog = xapp_icon_chooser_dialog_new (); } static void on_clicked (GtkButton *button) { XAppIconChooserButtonPrivate *priv; GtkResponseType response; GtkWidget *toplevel; toplevel = gtk_widget_get_toplevel (GTK_WIDGET (button)); priv = xapp_icon_chooser_button_get_instance_private (XAPP_ICON_CHOOSER_BUTTON (button)); ensure_dialog (XAPP_ICON_CHOOSER_BUTTON (button)); gtk_window_set_transient_for (GTK_WINDOW (priv->dialog), GTK_WINDOW (toplevel)); gtk_window_set_modal (GTK_WINDOW (priv->dialog), gtk_window_get_modal (GTK_WINDOW (toplevel))); if (priv->category_string) { response = xapp_icon_chooser_dialog_run_with_category (priv->dialog, priv->category_string); } else if (priv->icon_string) { response = xapp_icon_chooser_dialog_run_with_icon (priv->dialog, priv->icon_string); } else { response = xapp_icon_chooser_dialog_run (priv->dialog); } if (response == GTK_RESPONSE_OK) { gchar *icon; icon = xapp_icon_chooser_dialog_get_icon_string (priv->dialog); xapp_icon_chooser_button_set_icon (XAPP_ICON_CHOOSER_BUTTON (button), icon); } } void xapp_icon_chooser_button_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { XAppIconChooserButton *button; XAppIconChooserButtonPrivate *priv; button = XAPP_ICON_CHOOSER_BUTTON (object); priv = xapp_icon_chooser_button_get_instance_private (button); switch (prop_id) { case PROP_ICON_SIZE: g_value_set_enum (value, priv->icon_size); break; case PROP_ICON: g_value_set_string (value, priv->icon_string); break; case PROP_CATEGORY: g_value_set_string (value, priv->category_string); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } void xapp_icon_chooser_button_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { XAppIconChooserButton *button; button = XAPP_ICON_CHOOSER_BUTTON (object); switch (prop_id) { case PROP_ICON_SIZE: xapp_icon_chooser_button_set_icon_size (button, g_value_get_enum (value)); break; case PROP_ICON: xapp_icon_chooser_button_set_icon (button, g_value_get_string (value)); break; case PROP_CATEGORY: xapp_icon_chooser_button_set_default_category (button, g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } void xapp_icon_chooser_button_dispose (GObject *object) { XAppIconChooserButtonPrivate *priv; priv = xapp_icon_chooser_button_get_instance_private (XAPP_ICON_CHOOSER_BUTTON (object)); g_clear_pointer (&priv->icon_string, g_free); g_clear_pointer (&priv->category_string, g_free); g_clear_object (&priv->dialog); G_OBJECT_CLASS (xapp_icon_chooser_button_parent_class)->dispose (object); } static void xapp_icon_chooser_button_init (XAppIconChooserButton *button) { XAppIconChooserButtonPrivate *priv; priv = xapp_icon_chooser_button_get_instance_private (button); priv->image = gtk_image_new_from_icon_name ("unkown", XAPP_BUTTON_ICON_SIZE_DEFAULT); gtk_button_set_image (GTK_BUTTON (button), priv->image); gtk_widget_set_hexpand (GTK_WIDGET (button), FALSE); gtk_widget_set_vexpand (GTK_WIDGET (button), FALSE); gtk_widget_set_halign (GTK_WIDGET (button), GTK_ALIGN_CENTER); gtk_widget_set_valign (GTK_WIDGET (button), GTK_ALIGN_CENTER); xapp_icon_chooser_button_set_icon_size (button, -1); priv->dialog = NULL; } static void xapp_icon_chooser_button_class_init (XAppIconChooserButtonClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkButtonClass *button_class = GTK_BUTTON_CLASS (klass); object_class->get_property = xapp_icon_chooser_button_get_property; object_class->set_property = xapp_icon_chooser_button_set_property; object_class->dispose = xapp_icon_chooser_button_dispose; button_class->clicked = on_clicked; /** * XAppIconChooserButton:icon-size: * * The size to use when displaying the icon. */ obj_properties[PROP_ICON_SIZE] = g_param_spec_enum ("icon-size", _("Icon size"), _("The preferred icon size."), GTK_TYPE_ICON_SIZE, GTK_ICON_SIZE_DND, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY); /** * XAppIconChooserButton:icon: * * The preferred size to use when looking up icons. This only works with icon names. * Additionally, there is no guarantee that a selected icon name will exist in a * particular size. */ obj_properties[PROP_ICON] = g_param_spec_string ("icon", _("Icon"), _("The string representing the icon."), "", G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY); /** * XAppIconChooserButton:category: * * The category selected by default. */ obj_properties[PROP_CATEGORY] = g_param_spec_string ("category", _("Category"), _("The default category."), "", G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, N_PROPERTIES, obj_properties); } /** * xapp_icon_chooser_button_new: * * Creates a new #XAppIconChooserButton and sets its icon to @icon. * * Returns: a newly created #XAppIconChooserButton */ XAppIconChooserButton * xapp_icon_chooser_button_new (void) { return g_object_new (XAPP_TYPE_ICON_CHOOSER_BUTTON, NULL); } /** * xapp_icon_chooser_button_new_with_size: * @icon_size: the size of icon to use in the button, or NULL to use the default value. * * Creates a new #XAppIconChooserButton, and sets the sizes of the button image and the icons in * the dialog. Note that xapp_icon_chooser_button_new_with_size (NULL, NULL) is the same as calling * xapp_icon_chooser_button_new (). * * Returns: a newly created #XAppIconChooserButton */ XAppIconChooserButton * xapp_icon_chooser_button_new_with_size (GtkIconSize icon_size) { XAppIconChooserButton *button; button = g_object_new (XAPP_TYPE_ICON_CHOOSER_BUTTON, NULL); xapp_icon_chooser_button_set_icon_size (button, icon_size); return button; } /** * xapp_icon_chooser_button_set_icon_size: * @button: a #XAppIconChooserButton * @icon_size: the size of icon to use in the button, or -1 to use the default value. * * Sets the icon size used in the button. */ void xapp_icon_chooser_button_set_icon_size (XAppIconChooserButton *button, GtkIconSize icon_size) { XAppIconChooserButtonPrivate *priv; gint width, height; gchar *icon; priv = xapp_icon_chooser_button_get_instance_private (button); if (icon_size == -1) { priv->icon_size = XAPP_BUTTON_ICON_SIZE_DEFAULT; } else { priv->icon_size = icon_size; } gtk_icon_size_lookup (priv->icon_size, &width, &height); gtk_image_set_pixel_size (GTK_IMAGE (priv->image), width); // We need to make sure the icon gets resized if it's a file path. Since // this means regenerating the pixbuf anyway, it's easier to just call // xapp_icon_chooser_button_set_icon, but we need to dup the string so // it doens't get freed before it gets used. icon = g_strdup(priv->icon_string); xapp_icon_chooser_button_set_icon (button, icon); g_free (icon); g_object_notify (G_OBJECT (button), "icon-size"); } /** * xapp_icon_chooser_button_get_icon: * @button: a #XAppIconChooserButton * * Gets the icon from the #XAppIconChooserButton. * * returns: a string representing the icon. This may be an icon name or a file path. */ const gchar* xapp_icon_chooser_button_get_icon (XAppIconChooserButton *button) { XAppIconChooserButtonPrivate *priv; priv = xapp_icon_chooser_button_get_instance_private (button); return priv->icon_string; } /** * xapp_icon_chooser_button_set_icon: * @button: a #XAppIconChooserButton * @icon: (nullable): a string representing the icon to be set. This may be an icon name or a file path. * * Sets the icon on the #XAppIconChooserButton. */ void xapp_icon_chooser_button_set_icon (XAppIconChooserButton *button, const gchar *icon) { XAppIconChooserButtonPrivate *priv; const gchar *icon_string; priv = xapp_icon_chooser_button_get_instance_private (button); if (priv->icon_string != NULL) { g_free (priv->icon_string); } if (icon == NULL) { priv->icon_string = NULL; icon_string = "unkown"; } else { priv->icon_string = g_strdup (icon); icon_string = icon; } if (g_strrstr (icon_string, "/")) { GdkPixbuf *pixbuf; gint width, height; gtk_icon_size_lookup (priv->icon_size, &width, &height); pixbuf = gdk_pixbuf_new_from_file_at_size (icon_string, width, height, NULL); gtk_image_set_from_pixbuf (GTK_IMAGE (priv->image), pixbuf); } else { gtk_image_set_from_icon_name (GTK_IMAGE (priv->image), icon_string, priv->icon_size); } g_object_notify (G_OBJECT (button), "icon"); } /** * xapp_icon_chooser_button_set_default_category: * @button: a #XAppIconChooserButton * @category: (nullable): a string representing the category selected by default. * * Sets the icon on the #XAppIconChooserButton. */ void xapp_icon_chooser_button_set_default_category (XAppIconChooserButton *button, const gchar *category) { XAppIconChooserButtonPrivate *priv; priv = xapp_icon_chooser_button_get_instance_private (button); if (priv->category_string != NULL) { g_free (priv->category_string); } priv->category_string = g_strdup (category); } /** * xapp_icon_chooser_button_get_dialog: * @button: a #XAppIconChooserButton * * Gets a reference to the icon chooser dialog for the #XAppIconChooserButton. * This is useful for setting properties on the dialog. * * Returns: (transfer none): the #XAppIconChooserDialog */ XAppIconChooserDialog * xapp_icon_chooser_button_get_dialog (XAppIconChooserButton *button) { XAppIconChooserButtonPrivate *priv; ensure_dialog (button); priv = xapp_icon_chooser_button_get_instance_private (button); return priv->dialog; } xapps-1.6.10/libxapp/xapp-icon-chooser-button.h000066400000000000000000000027071360565754300214350ustar00rootroot00000000000000#ifndef _XAPP_ICON_CHOOSER_BUTTON_H_ #define _XAPP_ICON_CHOOSER_BUTTON_H_ #include #include #include "xapp-icon-chooser-dialog.h" #include "xapp-enums.h" G_BEGIN_DECLS #define XAPP_TYPE_ICON_CHOOSER_BUTTON (xapp_icon_chooser_button_get_type ()) G_DECLARE_FINAL_TYPE (XAppIconChooserButton, xapp_icon_chooser_button, XAPP, ICON_CHOOSER_BUTTON, GtkButton) XAppIconChooserButton * xapp_icon_chooser_button_new (void); XAppIconChooserButton * xapp_icon_chooser_button_new_with_size (GtkIconSize icon_size); void xapp_icon_chooser_button_set_icon_size (XAppIconChooserButton *button, GtkIconSize icon_size); void xapp_icon_chooser_button_set_icon (XAppIconChooserButton *button, const gchar *icon); void xapp_icon_chooser_button_set_default_category (XAppIconChooserButton *button, const gchar *category); const gchar* xapp_icon_chooser_button_get_icon (XAppIconChooserButton *button); XAppIconChooserDialog * xapp_icon_chooser_button_get_dialog (XAppIconChooserButton *button); G_END_DECLS #endif /* _XAPP_ICON_CHOOSER_DIALOG_H_ */ xapps-1.6.10/libxapp/xapp-icon-chooser-dialog.c000066400000000000000000002023661360565754300213570ustar00rootroot00000000000000#include #include #include #include #include "xapp-enums.h" #include "xapp-icon-chooser-dialog.h" #include "xapp-stack-sidebar.h" #include #include #define DEBUG_REFS 0 #define DEBUG_ICON_THEME 0 /** * SECTION:xapp-icon-chooser-dialog * @Short_description: A dialog for selecting an icon * @Title: XAppIconChooserDialog * * The XAppIconChooserDialog creates a dialog so that * the user can select an icon. It provides the ability * to browse by category, search by icon name, or select * from a specific file. */ typedef struct { const gchar *name; /* This is a translation which doesn't get freed */ GList *icons; GList *iter; GtkListStore *model; } IconCategoryInfo; typedef struct { GtkResponseType response; XAppIconSize icon_size; GtkListStore *search_icon_store; GFileEnumerator *search_file_enumerator; GCancellable *cancellable; GList *full_icon_list; GList *search_iter; GHashTable *categories; GHashTable *surfaces_by_name; GtkWidget *search_bar; GtkWidget *icon_view; GtkWidget *list_box; GtkWidget *default_button; GtkWidget *select_button; GtkWidget *browse_button; GtkWidget *action_area; GtkWidget *loading_bar; GtkCellArea *ca_box; gchar *icon_string; gchar *current_text; gulong search_changed_id; gboolean allow_paths; gchar *default_icon; IconCategoryInfo *current_category; } XAppIconChooserDialogPrivate; struct _XAppIconChooserDialog { XAppGtkWindow parent_instance; }; typedef struct { XAppIconChooserDialog *dialog; GtkListStore *model; IconCategoryInfo *category_info; GCancellable *cancellable; cairo_surface_t *surface; const gchar *name; gboolean chunk_end; } NamedIconInfoLoadCallbackInfo; typedef struct { XAppIconChooserDialog *dialog; GtkListStore *model; GCancellable *cancellable; GFileEnumerator *enumerator; gchar *short_name; gchar *long_name; gboolean chunk_end; } FileIconInfoLoadCallbackInfo; typedef struct { const gchar *name; const gchar *contexts[5]; } IconCategoryDefinition; static IconCategoryDefinition categories[] = { // Category name context names { N_("Actions"), { "Actions", NULL } }, { N_("Applications"), { "Applications", "Apps", NULL } }, { N_("Categories"), { "Categories", NULL } }, { N_("Devices"), { "Devices", NULL } }, { N_("Emblems"), { "Emblems", NULL } }, { N_("Emoji"), { "Emotes", NULL } }, { N_("Mime types"), { "MimeTypes", "Mimetypes", NULL } }, { N_("Places"), { "Places", NULL } }, { N_("Status"), { "Status", "Notifications", NULL } }, { N_("Other"), { "Panel", NULL } } }; enum { CLOSE, SELECT, LAST_SIGNAL }; enum { PROP_0, PROP_ICON_SIZE, PROP_ALLOW_PATHS, PROP_DEFAULT_ICON, N_PROPERTIES }; enum { COLUMN_DISPLAY_NAME, COLUMN_FULL_NAME, COLUMN_SURFACE, }; static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; static guint signals[LAST_SIGNAL] = {0, }; G_DEFINE_TYPE_WITH_PRIVATE (XAppIconChooserDialog, xapp_icon_chooser_dialog, XAPP_TYPE_GTK_WINDOW) static void on_category_selected (GtkListBox *list_box, XAppIconChooserDialog *dialog); static void on_search_text_changed (GtkSearchEntry *entry, XAppIconChooserDialog *dialog); static void on_icon_view_selection_changed (GtkIconView *icon_view, gpointer user_data); static void on_icon_store_icons_added (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter, gpointer user_data); static void on_browse_button_clicked (GtkButton *button, gpointer user_data); static void on_select_button_clicked (GtkButton *button, gpointer user_data); static void on_cancel_button_clicked (GtkButton *button, gpointer user_data); static gboolean on_default_button_clicked (GtkButton *button, gpointer user_data); static gboolean on_search_bar_key_pressed (GtkWidget *widget, GdkEvent *event, gpointer user_data); static gboolean on_delete_event (GtkWidget *widget, GdkEventAny *event); static void on_icon_view_item_activated (GtkIconView *iconview, GtkTreePath *path, gpointer user_data); static void load_categories (XAppIconChooserDialog *dialog); static void load_icons_for_category (XAppIconChooserDialog *dialog, IconCategoryInfo *category_info, guint icon_size); static void search_path (XAppIconChooserDialog *dialog, const gchar *path_string, GtkListStore *icon_store); static void search_icon_name (XAppIconChooserDialog *dialog, const gchar *name_string, GtkListStore *icon_store); static gint list_box_sort (GtkListBoxRow *row1, GtkListBoxRow *row2, gpointer user_data); static gint search_model_sort (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data); static void free_category_info (IconCategoryInfo *category_info) { g_list_free_full (category_info->icons, g_free); g_clear_object (&category_info->model); g_free (category_info); } static void free_file_info (FileIconInfoLoadCallbackInfo *file_info) { g_object_unref (file_info->cancellable); g_object_unref (file_info->enumerator); g_free (file_info->short_name); g_free (file_info->long_name); g_free (file_info); } static void free_named_info (NamedIconInfoLoadCallbackInfo *named_info) { g_object_unref (named_info->cancellable); g_clear_pointer (&named_info->surface, cairo_surface_destroy); g_free (named_info); } #if DEBUG_REFS static void on_cancellable_finalize (gpointer data, GObject *object) { g_printerr ("Cancellable Finalize: %p\n", object); } static void on_enumerator_finalize (gpointer data, GObject *object) { g_printerr ("Enumerator Finalize: %p\n", object); } #endif static void on_enumerator_toggle_ref_called (gpointer data, GObject *object, gboolean is_last_ref) { XAppIconChooserDialog *dialog; XAppIconChooserDialogPrivate *priv; dialog = XAPP_ICON_CHOOSER_DIALOG (data); priv = xapp_icon_chooser_dialog_get_instance_private (dialog); if (is_last_ref) { g_object_remove_toggle_ref (object, (GToggleNotify) on_enumerator_toggle_ref_called, dialog); priv->search_file_enumerator = NULL; } } static void clear_search_state (XAppIconChooserDialog *dialog) { XAppIconChooserDialogPrivate *priv; priv = xapp_icon_chooser_dialog_get_instance_private (dialog); g_cancellable_cancel (priv->cancellable); g_clear_object (&priv->cancellable); g_clear_object (&priv->search_file_enumerator); gtk_widget_hide (priv->loading_bar); priv->search_iter = NULL; } void xapp_icon_chooser_dialog_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { XAppIconChooserDialog *dialog; XAppIconChooserDialogPrivate *priv; dialog = XAPP_ICON_CHOOSER_DIALOG (object); priv = xapp_icon_chooser_dialog_get_instance_private (dialog); switch (prop_id) { case PROP_ICON_SIZE: g_value_set_enum (value, priv->icon_size); break; case PROP_ALLOW_PATHS: g_value_set_boolean (value, priv->allow_paths); break; case PROP_DEFAULT_ICON: g_value_set_string (value, xapp_icon_chooser_dialog_get_default_icon(dialog)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } void xapp_icon_chooser_dialog_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { XAppIconChooserDialog *dialog; XAppIconChooserDialogPrivate *priv; dialog = XAPP_ICON_CHOOSER_DIALOG (object); priv = xapp_icon_chooser_dialog_get_instance_private (dialog); switch (prop_id) { case PROP_ICON_SIZE: priv->icon_size = g_value_get_enum (value); break; case PROP_ALLOW_PATHS: priv->allow_paths = g_value_get_boolean (value); if (priv->allow_paths) { gtk_widget_show (priv->browse_button); gtk_widget_set_no_show_all (priv->browse_button, FALSE); } else { gtk_widget_hide (priv->browse_button); gtk_widget_set_no_show_all (priv->browse_button, TRUE); } break; case PROP_DEFAULT_ICON: xapp_icon_chooser_dialog_set_default_icon (dialog, g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void xapp_icon_chooser_dialog_dispose (GObject *object) { XAppIconChooserDialog *dialog; XAppIconChooserDialogPrivate *priv; dialog = XAPP_ICON_CHOOSER_DIALOG (object); priv = xapp_icon_chooser_dialog_get_instance_private (dialog); if (priv->categories != NULL) { g_hash_table_destroy (priv->categories); priv->categories = NULL; } if (priv->surfaces_by_name != NULL) { g_hash_table_destroy (priv->surfaces_by_name); priv->surfaces_by_name = NULL; } g_clear_pointer (&priv->icon_string, g_free); g_clear_pointer (&priv->default_icon, g_free); g_clear_pointer (&priv->current_text, g_free); g_clear_object (&priv->cancellable); G_OBJECT_CLASS (xapp_icon_chooser_dialog_parent_class)->dispose (object); } static void xapp_icon_chooser_dialog_init (XAppIconChooserDialog *dialog) { XAppIconChooserDialogPrivate *priv; GtkWidget *main_box; GtkWidget *secondary_box; GtkWidget *toolbar; GtkWidget *overlay; GtkWidget *spinner; GtkWidget *spinner_label; GtkWidget *loading_bar_box; GtkToolItem *tool_item; GtkWidget *toolbar_box; GtkWidget *right_box; GtkStyleContext *style; GtkSizeGroup *button_size_group; GtkWidget *cancel_button; GtkWidget *button_area; GtkWidget *scrolled_window; priv = xapp_icon_chooser_dialog_get_instance_private (dialog); priv->icon_size = XAPP_ICON_SIZE_32; priv->categories = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify) free_category_info); /* surfaces_by_name will save surfaces generated by icon name, so they can avoid creating * them again when they're reloaded (like re-selecting a previously selected category) */ priv->surfaces_by_name = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) cairo_surface_destroy); priv->response = GTK_RESPONSE_NONE; priv->icon_string = NULL; priv->current_text = NULL; priv->cancellable = NULL; priv->allow_paths = TRUE; priv->full_icon_list = NULL; priv->search_icon_store = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING, CAIRO_GOBJECT_TYPE_SURFACE); gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (priv->search_icon_store), COLUMN_DISPLAY_NAME, search_model_sort, priv, NULL); gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (priv->search_icon_store), COLUMN_DISPLAY_NAME, GTK_SORT_ASCENDING); g_signal_connect (priv->search_icon_store, "row-inserted", G_CALLBACK (on_icon_store_icons_added), dialog); gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 450); gtk_window_set_skip_taskbar_hint (GTK_WINDOW (dialog), TRUE); gtk_window_set_type_hint (GTK_WINDOW (dialog), GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_title (GTK_WINDOW (dialog), _("Choose an icon")); main_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_add (GTK_CONTAINER (dialog), main_box); // toolbar toolbar = gtk_toolbar_new (); gtk_box_pack_start (GTK_BOX (main_box), toolbar, FALSE, FALSE, 0); style = gtk_widget_get_style_context (toolbar); gtk_style_context_add_class (style, "primary-toolbar"); tool_item = gtk_tool_item_new (); gtk_toolbar_insert (GTK_TOOLBAR (toolbar), tool_item, 0); gtk_tool_item_set_expand (tool_item, TRUE); toolbar_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add (GTK_CONTAINER (tool_item), toolbar_box); style = gtk_widget_get_style_context (GTK_WIDGET (toolbar_box)); gtk_style_context_add_class (style, "linked"); priv->search_bar = gtk_search_entry_new (); gtk_box_pack_start (GTK_BOX (toolbar_box), priv->search_bar, TRUE, TRUE, 0); gtk_entry_set_placeholder_text (GTK_ENTRY (priv->search_bar), _("Search")); priv->search_changed_id = g_signal_connect (priv->search_bar, "search-changed", G_CALLBACK (on_search_text_changed), dialog); g_signal_connect (priv->search_bar, "key-press-event", G_CALLBACK (on_search_bar_key_pressed), dialog); priv->browse_button = gtk_button_new_with_label (_("Browse")); gtk_box_pack_start (GTK_BOX (toolbar_box), priv->browse_button, FALSE, FALSE, 0); g_signal_connect (priv->browse_button, "clicked", G_CALLBACK (on_browse_button_clicked), dialog); secondary_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start (GTK_BOX (main_box), secondary_box, TRUE, TRUE, 0); // context list scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_box_pack_start (GTK_BOX (secondary_box), scrolled_window, FALSE, FALSE, 0); priv->list_box = gtk_list_box_new (); gtk_container_add(GTK_CONTAINER (scrolled_window), GTK_WIDGET (priv->list_box)); gtk_list_box_set_sort_func (GTK_LIST_BOX (priv->list_box), list_box_sort, NULL, NULL); g_signal_connect (priv->list_box, "selected-rows-changed", G_CALLBACK (on_category_selected), dialog); style = gtk_widget_get_style_context (GTK_WIDGET (scrolled_window)); gtk_style_context_add_class (style, "sidebar"); right_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start (GTK_BOX (secondary_box), right_box, TRUE, TRUE, 0); overlay = gtk_overlay_new (); gtk_box_pack_start (GTK_BOX (right_box), overlay, TRUE, TRUE, 0); // icon view scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_overlay_add_overlay (GTK_OVERLAY (overlay), scrolled_window); gtk_widget_set_halign (scrolled_window, GTK_ALIGN_FILL); gtk_widget_set_valign (scrolled_window, GTK_ALIGN_FILL); priv->loading_bar = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (priv->loading_bar), GTK_SHADOW_NONE); gtk_style_context_add_class (gtk_widget_get_style_context (priv->loading_bar), "background"); gtk_overlay_add_overlay (GTK_OVERLAY (overlay), priv->loading_bar); gtk_widget_set_halign (priv->loading_bar, GTK_ALIGN_START); gtk_widget_set_valign (priv->loading_bar, GTK_ALIGN_END); gtk_widget_set_no_show_all (priv->loading_bar, TRUE); loading_bar_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add (GTK_CONTAINER (priv->loading_bar), loading_bar_box); g_object_set (loading_bar_box, "margin", 4, NULL); spinner = gtk_spinner_new (); gtk_spinner_start (GTK_SPINNER (spinner)); gtk_box_pack_start (GTK_BOX (loading_bar_box), spinner, FALSE, FALSE, 4); spinner_label = gtk_label_new (_("Loading...")); gtk_box_pack_start (GTK_BOX (loading_bar_box), spinner_label, FALSE, FALSE, 4); gtk_widget_show_all (loading_bar_box); GtkCellArea *ca_box = gtk_cell_area_box_new (); gtk_orientable_set_orientation (GTK_ORIENTABLE (ca_box), GTK_ORIENTATION_VERTICAL); GtkCellRenderer *r; r = gtk_cell_renderer_pixbuf_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (ca_box), r, FALSE); gtk_cell_area_attribute_connect (GTK_CELL_AREA (ca_box), r, "surface", COLUMN_SURFACE); r = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (ca_box), r, FALSE); gtk_cell_area_attribute_connect (GTK_CELL_AREA (ca_box), r, "text", COLUMN_DISPLAY_NAME); g_object_set (G_OBJECT (r), "alignment", PANGO_ALIGN_CENTER, "xalign", 0.5, "width-chars", 20, "wrap-mode", PANGO_WRAP_WORD_CHAR, "wrap-width", 0, NULL); priv->ca_box = ca_box; priv->icon_view = gtk_icon_view_new_with_area (GTK_CELL_AREA (ca_box)); gtk_container_add(GTK_CONTAINER (scrolled_window), GTK_WIDGET (priv->icon_view)); gtk_icon_view_set_tooltip_column (GTK_ICON_VIEW (priv->icon_view), COLUMN_FULL_NAME); g_signal_connect (priv->icon_view, "selection-changed", G_CALLBACK (on_icon_view_selection_changed), dialog); g_signal_connect (priv->icon_view, "item-activated", G_CALLBACK (on_icon_view_item_activated), dialog); // buttons button_area = gtk_action_bar_new (); priv->action_area = button_area; gtk_box_pack_start (GTK_BOX (main_box), button_area, FALSE, FALSE, 0); button_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); priv->default_button = gtk_button_new_with_label (_("Default")); gtk_widget_set_no_show_all (priv->default_button, TRUE); style = gtk_widget_get_style_context (GTK_WIDGET (priv->default_button)); gtk_style_context_add_class (style, "text-button"); gtk_size_group_add_widget (button_size_group, priv->default_button); gtk_action_bar_pack_start (GTK_ACTION_BAR (button_area), priv->default_button); g_signal_connect (priv->default_button, "clicked", G_CALLBACK (on_default_button_clicked), dialog); priv->select_button = gtk_button_new_with_label (_("Select")); style = gtk_widget_get_style_context (GTK_WIDGET (priv->select_button)); gtk_style_context_add_class (style, "text-button"); gtk_size_group_add_widget (button_size_group, priv->select_button); gtk_action_bar_pack_end (GTK_ACTION_BAR (button_area), priv->select_button); g_signal_connect (priv->select_button, "clicked", G_CALLBACK (on_select_button_clicked), dialog); cancel_button = gtk_button_new_with_label (_("Cancel")); style = gtk_widget_get_style_context (GTK_WIDGET (cancel_button)); gtk_style_context_add_class (style, "text-button"); gtk_size_group_add_widget (button_size_group, cancel_button); gtk_action_bar_pack_end (GTK_ACTION_BAR (button_area), cancel_button); g_signal_connect (cancel_button, "clicked", G_CALLBACK (on_cancel_button_clicked), dialog); load_categories (dialog); } static void xapp_icon_chooser_dialog_class_init (XAppIconChooserDialogClass *klass) { GtkBindingSet *binding_set; GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->get_property = xapp_icon_chooser_dialog_get_property; object_class->set_property = xapp_icon_chooser_dialog_set_property; object_class->dispose = xapp_icon_chooser_dialog_dispose; widget_class->delete_event = on_delete_event; /** * XAppIconChooserDialog:icon-size: * * The preferred size to use when looking up icons. This only works with icon names. * Additionally, there is no guarantee that a selected icon name will exist in a * particular size. */ obj_properties[PROP_ICON_SIZE] = g_param_spec_enum ("icon-size", _("Icon size"), _("The preferred icon size."), XAPP_TYPE_ICON_SIZE, XAPP_ICON_SIZE_32, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY); /** * XAppIconChooserDialog:allow-paths: * * Whether to allow paths to be searched and selected or only icon names. */ obj_properties[PROP_ALLOW_PATHS] = g_param_spec_boolean ("allow-paths", _("Allow Paths"), _("Whether to allow paths."), TRUE, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY); /** * XAppIconChooserDialog:default-icon: * * The icon to use by default. */ obj_properties[PROP_DEFAULT_ICON] = g_param_spec_string ("default-icon", _("Default Icon"), _("The icon to use by default"), NULL, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, N_PROPERTIES, obj_properties); // keybinding signals signals[CLOSE] = g_signal_new ("close", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (GtkWidgetClass, delete_event), NULL, NULL, NULL, G_TYPE_NONE, 0); signals[SELECT] = g_signal_new ("select", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, 0, NULL, NULL, NULL, G_TYPE_NONE, 0); binding_set = gtk_binding_set_by_class (klass); gtk_binding_entry_add_signal (binding_set, GDK_KEY_Escape, 0, "close", 0); gtk_binding_entry_add_signal (binding_set, GDK_KEY_Return, 0, "select", 0); gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Enter, 0, "select", 0); gtk_widget_class_set_css_name (widget_class, "stacksidebar"); } /** * xapp_icon_chooser_dialog_new: * * Creates a new #XAppIconChooserDialog. * * Returns: a newly created #XAppIconChooserDialog */ XAppIconChooserDialog * xapp_icon_chooser_dialog_new (void) { return g_object_new (XAPP_TYPE_ICON_CHOOSER_DIALOG, NULL); } /** * xapp_icon_chooser_dialog_run: * @dialog: a #XAppIconChooserDialog * * Shows the dialog and enters a separate main loop until an icon is chosen or the action is canceled. * * xapp_icon_chooser_dialog_run (), xapp_icon_chooser_dialog_run_with_icon(), and * xapp_icon_chooser_dialog_run_with_category () may all be called multiple times. This is useful for * applications which use this dialog multiple times, as it may improve performance for subsequent * calls. * * Returns: GTK_RESPONSE_OK if the user selected an icon, or GTK_RESPONSE_CANCEL otherwise */ gint xapp_icon_chooser_dialog_run (XAppIconChooserDialog *dialog) { XAppIconChooserDialogPrivate *priv; priv = xapp_icon_chooser_dialog_get_instance_private (dialog); gtk_widget_show_all (GTK_WIDGET (dialog)); gtk_widget_grab_focus (priv->search_bar); gtk_main (); return priv->response; } /** * xapp_icon_chooser_dialog_run_with_icon: * @dialog: a #XAppIconChooserDialog * @icon: a string representing the icon that should be selected * * Like xapp_icon_chooser_dialog_run but selects the icon specified by @icon. This can be either an * icon name or a path. Passing an icon string or path that doesn't exist is accepted, but it may show * multiple results, or none at all. This behavior is useful if, for example, you wish to have the * user select an image file from a particular directory. * * If the property allow_paths is FALSE, setting a path will yield no results when the dialog is opened. * * xapp_icon_chooser_dialog_run (), xapp_icon_chooser_dialog_run_with_icon(), and * xapp_icon_chooser_dialog_run_with_category () may all be called multiple times. This is useful for * applications which use this dialog multiple times, as it may improve performance for subsequent * calls. * * Returns: GTK_RESPONSE_OK if the user selected an icon, or GTK_RESPONSE_CANCEL otherwise */ gint xapp_icon_chooser_dialog_run_with_icon (XAppIconChooserDialog *dialog, gchar *icon) { XAppIconChooserDialogPrivate *priv; priv = xapp_icon_chooser_dialog_get_instance_private (dialog); gtk_widget_show_all (GTK_WIDGET (dialog)); gtk_entry_set_text (GTK_ENTRY (priv->search_bar), icon); gtk_widget_grab_focus (priv->search_bar); gtk_main (); return priv->response; } /** * xapp_icon_chooser_dialog_run_with_category: * @dialog: a #XAppIconChooserDialog * * Like xapp_icon_chooser_dialog_run but selects a particular category specified by @category. * This is used when there is a particular category of icon that is more appropriate than the * others. If the category does not exist, the first category in the list will be selected. To * get a list of possible categories, use gtk_icon_theme_list_contexts (). * * xapp_icon_chooser_dialog_run (), xapp_icon_chooser_dialog_run_with_icon(), and * xapp_icon_chooser_dialog_run_with_category () may all be called multiple times. This is useful for * applications which use this dialog multiple times, as it may improve performance for subsequent * calls. * * Returns: GTK_RESPONSE_OK if the user selected an icon, or GTK_RESPONSE_CANCEL otherwise */ gint xapp_icon_chooser_dialog_run_with_category (XAppIconChooserDialog *dialog, gchar *category) { XAppIconChooserDialogPrivate *priv; GList *children; priv = xapp_icon_chooser_dialog_get_instance_private (dialog); gtk_widget_show_all (GTK_WIDGET (dialog)); gtk_widget_grab_focus (priv->search_bar); children = gtk_container_get_children (GTK_CONTAINER (priv->list_box)); for ( ; children; children = children->next) { GtkWidget *row; GtkWidget *child; const gchar *context; row = children->data; child = gtk_bin_get_child (GTK_BIN (row)); context = gtk_label_get_text (GTK_LABEL (child)); if (g_strcmp0 (context, category) == 0) { gtk_list_box_select_row (GTK_LIST_BOX (priv->list_box), GTK_LIST_BOX_ROW (row)); break; } } gtk_main (); return priv->response; } /** * xapp_icon_chooser_dialog_get_default_icon: * * Returns the default icon (if set). * * Returns: (transfer full): the default icon, or NULL if none is set */ gchar * xapp_icon_chooser_dialog_get_default_icon (XAppIconChooserDialog *dialog) { XAppIconChooserDialogPrivate *priv; priv = xapp_icon_chooser_dialog_get_instance_private (dialog); return g_strdup(priv->default_icon); } /** * xapp_icon_chooser_dialog_set_default_icon: * @icon: the default icon, or NULL to unset * * Sets the default icon. If @icon is not NULL, a button will be shown that * will reset the dialog to it's default value. */ void xapp_icon_chooser_dialog_set_default_icon (XAppIconChooserDialog *dialog, const gchar *icon) { XAppIconChooserDialogPrivate *priv; priv = xapp_icon_chooser_dialog_get_instance_private (dialog); priv->default_icon = g_strdup (icon); if (icon == NULL) { gtk_widget_hide (priv->default_button); } else { gtk_widget_show (priv->default_button); } } /** * xapp_icon_chooser_dialog_add_custom_category: * @dialog: a #XAppIconChooserDialog * @name: the name of the category as it will be displayed in the category list * @icons: (transfer full) (element-type utf8): a list of icon names to add to the new category * * Adds a custom category to the dialog. */ void xapp_icon_chooser_dialog_add_custom_category (XAppIconChooserDialog *dialog, const gchar *name, GList *icons) { XAppIconChooserDialogPrivate *priv; IconCategoryInfo *category_info; GtkWidget *row; GtkWidget *label; priv = xapp_icon_chooser_dialog_get_instance_private (dialog); category_info = g_new0 (IconCategoryInfo, 1); category_info->name = name; category_info->icons = icons; category_info->model = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING, CAIRO_GOBJECT_TYPE_SURFACE); g_signal_connect (category_info->model, "row-inserted", G_CALLBACK (on_icon_store_icons_added), dialog); category_info->icons = g_list_sort (category_info->icons, (GCompareFunc) g_utf8_collate); row = gtk_list_box_row_new (); label = gtk_label_new (category_info->name); gtk_label_set_xalign (GTK_LABEL (label), 0.0); gtk_widget_set_margin_start (GTK_WIDGET (label), 6); gtk_widget_set_margin_end (GTK_WIDGET (label), 6); gtk_container_add (GTK_CONTAINER (row), label); gtk_container_add (GTK_CONTAINER (priv->list_box), row); g_hash_table_insert (priv->categories, row, category_info); } /** * xapp_icon_chooser_dialog_get_icon_string: * @dialog: a #XAppIconChooserDialog * * Gets the currently selected icon from the dialog. If allow-paths is TRUE, this function may return * either an icon name or a path depending on what the user selects. Otherwise it will only return an * icon name. * * Returns: (transfer full): the string representation of the currently selected icon or NULL * if no icon is selected. */ gchar * xapp_icon_chooser_dialog_get_icon_string (XAppIconChooserDialog *dialog) { XAppIconChooserDialogPrivate *priv; priv = xapp_icon_chooser_dialog_get_instance_private (dialog); return g_strdup (priv->icon_string); } static void xapp_icon_chooser_dialog_close (XAppIconChooserDialog *dialog, GtkResponseType response) { XAppIconChooserDialogPrivate *priv; priv = xapp_icon_chooser_dialog_get_instance_private (dialog); priv->response = response; gtk_widget_hide (GTK_WIDGET (dialog)); gtk_main_quit (); } static void on_custom_button_clicked (GtkButton *button, gpointer user_data) { GtkResponseType response_id; response_id = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (button), "response-id")); xapp_icon_chooser_dialog_close (XAPP_ICON_CHOOSER_DIALOG (user_data), response_id); } /** * xapp_icon_chooser_dialog_add_button: * @dialog: an #XAppIconChooserDialog * @button: a #GtkButton to add * @packing: the #GtkPackType to specify start or end packing to the action bar * @response_id: the dialog response id to return when this button is clicked. * * Allows a button to be added to the #GtkActionBar of the dialog with a custom * response id. */ void xapp_icon_chooser_dialog_add_button (XAppIconChooserDialog *dialog, GtkWidget *button, GtkPackType packing, GtkResponseType response_id) { XAppIconChooserDialogPrivate *priv; priv = xapp_icon_chooser_dialog_get_instance_private (dialog); g_signal_connect (button, "clicked", G_CALLBACK (on_custom_button_clicked), dialog); /* This saves having to use a custom container for callback data. */ g_object_set_data (G_OBJECT (button), "response-id", GINT_TO_POINTER (response_id)); if (packing == GTK_PACK_START) { gtk_action_bar_pack_start (GTK_ACTION_BAR (priv->action_area), button); } else { gtk_action_bar_pack_end (GTK_ACTION_BAR (priv->action_area), button); } } static gint list_box_sort (GtkListBoxRow *row1, GtkListBoxRow *row2, gpointer user_data) { GtkWidget *item; const gchar *label1; const gchar *label2; item = gtk_bin_get_child (GTK_BIN (row1)); label1 = gtk_label_get_text (GTK_LABEL (item)); item = gtk_bin_get_child (GTK_BIN (row2)); label2 = gtk_label_get_text (GTK_LABEL (item)); return g_strcmp0 (label1, label2); } static gint search_model_sort (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data) { gchar *a_value; gchar *b_value; gchar *search_str; gboolean a_starts_with; gboolean b_starts_with; gint ret; XAppIconChooserDialogPrivate *priv = (XAppIconChooserDialogPrivate *) user_data; search_str = priv->current_text; gtk_tree_model_get (model, a, COLUMN_DISPLAY_NAME, &a_value, -1); gtk_tree_model_get (model, b, COLUMN_DISPLAY_NAME, &b_value, -1); ret = g_strcmp0 (a_value, b_value); if (search_str == NULL) { } else if (g_strcmp0 (a_value, search_str) == 0) { ret = -1; } else if (g_strcmp0 (b_value, search_str) == 0) { ret = 1; } else { a_starts_with = g_str_has_prefix (a_value, search_str); b_starts_with = g_str_has_prefix (b_value, search_str); if (a_starts_with && !b_starts_with) { ret = -1; } if (!a_starts_with && b_starts_with) { ret = 1; } } g_free (a_value); g_free (b_value); return ret; } static void load_categories (XAppIconChooserDialog *dialog) { XAppIconChooserDialogPrivate *priv; GtkListBoxRow *row; GtkIconTheme *theme; GList *contexts, *l; gint i; gint j; priv = xapp_icon_chooser_dialog_get_instance_private (dialog); theme = gtk_icon_theme_get_default (); contexts = gtk_icon_theme_list_contexts (theme); for (i = 0; i < G_N_ELEMENTS (categories); i++) { IconCategoryDefinition *category; IconCategoryInfo *category_info; GtkWidget *row; GtkWidget *label; GList *context_icons; category = &categories[i]; category_info = g_new0 (IconCategoryInfo, 1); category_info->name = _(category->name); for (j = 0; category->contexts[j] != NULL; j++) { GList *match; context_icons = gtk_icon_theme_list_icons (theme, category->contexts[j]); category_info->icons = g_list_concat (category_info->icons, context_icons); match = g_list_find_custom (contexts, category->contexts[j], (GCompareFunc) g_strcmp0); if (match) { contexts = g_list_remove_link (contexts, match); g_free (match->data); g_list_free (match); } } /* Any contexts not consumed by categories should be added to the 'other' category */ if (i == (G_N_ELEMENTS (categories) - 1) && g_list_length (contexts) > 0) { for (l = contexts; l != NULL; l = l->next) { #if DEBUG_ICON_THEME g_message ("Adding unused category to Other category: '%s'", (gchar *) l->data); #endif context_icons = gtk_icon_theme_list_icons (theme, (gchar *) l->data); category_info->icons = g_list_concat (category_info->icons, context_icons); } } if (g_list_length (category_info->icons) == 0) { free_category_info (category_info); continue; } /* Add the list of icons for this category into our master search list */ priv->full_icon_list = g_list_concat (priv->full_icon_list, g_list_copy (category_info->icons)); category_info->model = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING, CAIRO_GOBJECT_TYPE_SURFACE); g_signal_connect (category_info->model, "row-inserted", G_CALLBACK (on_icon_store_icons_added), dialog); category_info->icons = g_list_sort (category_info->icons, (GCompareFunc) g_utf8_collate); row = gtk_list_box_row_new (); label = gtk_label_new (category_info->name); gtk_label_set_xalign (GTK_LABEL (label), 0.0); gtk_widget_set_margin_start (GTK_WIDGET (label), 6); gtk_widget_set_margin_end (GTK_WIDGET (label), 6); gtk_container_add (GTK_CONTAINER (row), label); gtk_container_add (GTK_CONTAINER (priv->list_box), row); g_hash_table_insert (priv->categories, row, category_info); } g_list_free_full (contexts, g_free); priv->full_icon_list = g_list_sort (priv->full_icon_list, (GCompareFunc) g_utf8_collate); row = gtk_list_box_get_row_at_index (GTK_LIST_BOX (priv->list_box), 0); gtk_list_box_select_row (GTK_LIST_BOX (priv->list_box), row); } static gboolean load_next_file_search_chunk (gpointer user_data) { XAppIconChooserDialogPrivate *priv; FileIconInfoLoadCallbackInfo *callback_info; callback_info = (FileIconInfoLoadCallbackInfo*) user_data; priv = xapp_icon_chooser_dialog_get_instance_private (callback_info->dialog); if (g_cancellable_is_cancelled (callback_info->cancellable)) { free_file_info (callback_info); return G_SOURCE_REMOVE; } search_path (callback_info->dialog, priv->current_text, priv->search_icon_store); free_file_info (callback_info); return G_SOURCE_REMOVE; } static gboolean load_next_category_chunk (gpointer user_data) { XAppIconChooserDialogPrivate *priv; NamedIconInfoLoadCallbackInfo *callback_info; callback_info = (NamedIconInfoLoadCallbackInfo*) user_data; priv = xapp_icon_chooser_dialog_get_instance_private (callback_info->dialog); if (g_cancellable_is_cancelled (callback_info->cancellable)) { free_named_info (callback_info); return G_SOURCE_REMOVE; } load_icons_for_category (callback_info->dialog, callback_info->category_info, priv->icon_size); free_named_info (callback_info); return G_SOURCE_REMOVE; } static gboolean load_next_name_search_chunk (gpointer user_data) { XAppIconChooserDialogPrivate *priv; NamedIconInfoLoadCallbackInfo *callback_info; callback_info = (NamedIconInfoLoadCallbackInfo*) user_data; priv = xapp_icon_chooser_dialog_get_instance_private (callback_info->dialog); if (g_cancellable_is_cancelled (callback_info->cancellable)) { free_named_info (callback_info); return G_SOURCE_REMOVE; } search_icon_name (callback_info->dialog, priv->current_text, priv->search_icon_store); free_named_info (callback_info); return G_SOURCE_REMOVE; } static void finish_pixbuf_load_from_file (GObject *stream, GAsyncResult *res, gpointer *user_data) { FileIconInfoLoadCallbackInfo *callback_info; GdkPixbuf *pixbuf; GError *error = NULL; callback_info = (FileIconInfoLoadCallbackInfo *) user_data; pixbuf = gdk_pixbuf_new_from_stream_finish (res, &error); g_input_stream_close (G_INPUT_STREAM (stream), NULL, NULL); g_object_unref (stream); if (g_cancellable_is_cancelled (callback_info->cancellable)) { g_clear_object (&pixbuf); free_file_info (callback_info); return; } if (pixbuf == NULL) { if (error && (error->domain != G_IO_ERROR || error->code != G_IO_ERROR_CANCELLED)) { g_message ("%s\n", error->message); } g_clear_error (&error); } if (pixbuf) { GtkTreeIter iter; cairo_surface_t *surface; surface = gdk_cairo_surface_create_from_pixbuf (pixbuf, 0, gtk_widget_get_window (GTK_WIDGET (callback_info->dialog))); gtk_list_store_append (callback_info->model, &iter); gtk_list_store_set (callback_info->model, &iter, COLUMN_DISPLAY_NAME, callback_info->short_name, COLUMN_FULL_NAME, callback_info->long_name, COLUMN_SURFACE, surface, -1); cairo_surface_destroy (surface); g_object_unref (pixbuf); } if (callback_info->chunk_end) { g_idle_add ((GSourceFunc) load_next_file_search_chunk, callback_info); } else { free_file_info (callback_info); } } static void add_named_entry (NamedIconInfoLoadCallbackInfo *callback_info, cairo_surface_t *surface) { GtkTreeIter iter; gtk_list_store_append (callback_info->model, &iter); gtk_list_store_set (callback_info->model, &iter, COLUMN_DISPLAY_NAME, callback_info->name, COLUMN_FULL_NAME, callback_info->name, COLUMN_SURFACE, surface, -1); } static gboolean add_named_entry_with_existing_surface (gpointer user_data) { NamedIconInfoLoadCallbackInfo *callback_info; callback_info = (NamedIconInfoLoadCallbackInfo*) user_data; if (g_cancellable_is_cancelled (callback_info->cancellable)) { free_named_info (callback_info); return G_SOURCE_REMOVE; } /* Category results have a category_info attached. */ if (callback_info->category_info) { add_named_entry (callback_info, callback_info->surface); if (callback_info->chunk_end) { g_idle_add ((GSourceFunc) load_next_category_chunk, callback_info); return G_SOURCE_REMOVE; } } /* Otherwise, it's a search result set */ else { add_named_entry (callback_info, callback_info->surface); if (callback_info->chunk_end) { g_idle_add ((GSourceFunc) load_next_name_search_chunk, callback_info); return G_SOURCE_REMOVE; } } free_named_info (callback_info); return G_SOURCE_REMOVE; } static void finish_pixbuf_load_from_name (GObject *info, GAsyncResult *res, gpointer *user_data) { XAppIconChooserDialogPrivate *priv; NamedIconInfoLoadCallbackInfo *callback_info; GdkPixbuf *pixbuf; cairo_surface_t *surface; GError *error = NULL; callback_info = (NamedIconInfoLoadCallbackInfo*) user_data; priv = xapp_icon_chooser_dialog_get_instance_private (callback_info->dialog); pixbuf = gtk_icon_info_load_symbolic_for_context_finish (GTK_ICON_INFO (info), res, NULL, &error); g_object_unref (info); if (g_cancellable_is_cancelled (callback_info->cancellable)) { g_clear_object (&pixbuf); free_named_info (callback_info); return; } if (pixbuf == NULL) { if (error && (error->domain != G_IO_ERROR || error->code != G_IO_ERROR_CANCELLED)) { g_message ("%s\n", error->message); } free_named_info (callback_info); g_clear_error (&error); return; } surface = gdk_cairo_surface_create_from_pixbuf (pixbuf, 0, gtk_widget_get_window (GTK_WIDGET (callback_info->dialog))); g_object_unref (pixbuf); /* Hash table 'takes' reference, we don't have to free surface. callback_info->name is already owned by priv->full_icon_list so it needs to be copied */ g_hash_table_insert (priv->surfaces_by_name, g_strdup (callback_info->name), (gpointer) surface); /* If there's a category_info, this is a category selection. */ if (callback_info->category_info) { add_named_entry (callback_info, surface); if (callback_info->chunk_end) { g_idle_add ((GSourceFunc) load_next_category_chunk, callback_info); return; } } /* Otherwise, it's a search result set */ else { add_named_entry (callback_info, surface); if (callback_info->chunk_end) { g_idle_add ((GSourceFunc) load_next_name_search_chunk, callback_info); return; } } free_named_info (callback_info); } #define CATEGORY_CHUNK_SIZE 500 static void load_icons_for_category (XAppIconChooserDialog *dialog, IconCategoryInfo *category_info, guint icon_size) { XAppIconChooserDialogPrivate *priv; GtkIconTheme *theme; gint chunk_count; gint scale; priv = xapp_icon_chooser_dialog_get_instance_private (dialog); theme = gtk_icon_theme_get_default (); scale = gtk_widget_get_scale_factor (GTK_WIDGET (dialog)); for (chunk_count = 0; chunk_count < CATEGORY_CHUNK_SIZE; chunk_count++) { if (category_info->iter == NULL) { category_info->iter = category_info->icons; } else { category_info->iter = category_info->iter->next; } if (category_info->iter) { NamedIconInfoLoadCallbackInfo *callback_info; const gchar *name = category_info->iter->data; cairo_surface_t *surface; callback_info = g_new0 (NamedIconInfoLoadCallbackInfo, 1); callback_info->dialog = dialog; callback_info->category_info = category_info; callback_info->model = category_info->model; callback_info->cancellable = g_object_ref (priv->cancellable); callback_info->name = name; callback_info->chunk_end = (chunk_count == CATEGORY_CHUNK_SIZE - 1); surface = g_hash_table_lookup (priv->surfaces_by_name, name); if (surface != NULL) { callback_info->surface = cairo_surface_reference (surface); g_idle_add ((GSourceFunc) add_named_entry_with_existing_surface, callback_info); } else { GtkIconInfo *info; GtkStyleContext *context; info = gtk_icon_theme_lookup_icon_for_scale (theme, name, icon_size, scale, GTK_ICON_LOOKUP_FORCE_SIZE); if (info == NULL) { // this shouldn't be the case most of the time, but if a custom category is defined it's possible // the icon doesn't exist. In that case it's best to just skip over it since trying to load it will // lead to a segfault. continue; } context = gtk_widget_get_style_context (priv->icon_view); gtk_icon_info_load_symbolic_for_context_async (info, context, NULL, (GAsyncReadyCallback) (finish_pixbuf_load_from_name), callback_info); } } else { gtk_widget_hide (priv->loading_bar); break; // Quit the count early, we're out of data } } } static void on_category_selected (GtkListBox *list_box, XAppIconChooserDialog *dialog) { XAppIconChooserDialogPrivate *priv; GList *selection; GtkWidget *selected; IconCategoryInfo *category_info; priv = xapp_icon_chooser_dialog_get_instance_private (dialog); clear_search_state (dialog); selection = gtk_list_box_get_selected_rows (GTK_LIST_BOX (priv->list_box)); if (!selection) { return; } gtk_widget_show (priv->loading_bar); g_signal_handler_block (priv->search_bar, priv->search_changed_id); gtk_entry_set_text (GTK_ENTRY (priv->search_bar), ""); g_signal_handler_unblock (priv->search_bar, priv->search_changed_id); selected = selection->data; category_info = g_hash_table_lookup (priv->categories, selected); priv->cancellable = g_cancellable_new (); #if DEBUG_REFS g_object_weak_ref (G_OBJECT (priv->cancellable), (GWeakNotify) on_cancellable_finalize, priv); #endif priv->current_category = category_info; gtk_list_store_clear (GTK_LIST_STORE (category_info->model)); gtk_icon_view_set_model (GTK_ICON_VIEW (priv->icon_view), GTK_TREE_MODEL (category_info->model)); load_icons_for_category (dialog, category_info, priv->icon_size); gtk_adjustment_set_value (gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (priv->icon_view)), 0.0); g_list_free (selection); } #define SEARCH_CHUNK_SIZE 2 static void search_path (XAppIconChooserDialog *dialog, const gchar *path_string, GtkListStore *icon_store) { XAppIconChooserDialogPrivate *priv; gchar *search_str = NULL; GFile *dir; GFileInfo *child_info = NULL;; gint chunk_count; priv = xapp_icon_chooser_dialog_get_instance_private (dialog); if (g_file_test (path_string, G_FILE_TEST_IS_DIR)) { dir = g_file_new_for_path (path_string); } else { GFile *file; file = g_file_new_for_path (path_string); dir = g_file_get_parent (file); search_str = g_file_get_basename (file); g_object_unref (file); } if (!g_file_query_exists (dir, NULL) || g_file_query_file_type (dir, G_FILE_QUERY_INFO_NONE, NULL) != G_FILE_TYPE_DIRECTORY) { g_free (search_str); g_object_unref (dir); return; } if (!priv->search_file_enumerator) { priv->search_file_enumerator = g_file_enumerate_children (dir, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE "," G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE "," G_FILE_ATTRIBUTE_STANDARD_SIZE "," G_FILE_ATTRIBUTE_STANDARD_NAME, G_FILE_QUERY_INFO_NONE, NULL, NULL); g_object_add_toggle_ref (G_OBJECT (priv->search_file_enumerator), (GToggleNotify) on_enumerator_toggle_ref_called, dialog); #if DEBUG_REFS g_object_weak_ref (G_OBJECT (priv->search_file_enumerator), (GWeakNotify) on_enumerator_finalize, dialog); #endif } chunk_count = 0; while (chunk_count < SEARCH_CHUNK_SIZE) { const gchar *child_name; gchar *child_path; GFile *child; GError *error = NULL; g_clear_object (&child_info); child_info = g_file_enumerator_next_file (priv->search_file_enumerator, NULL, NULL); if (!child_info) { break; } child_name = g_file_info_get_name (child_info); child = g_file_enumerator_get_child (priv->search_file_enumerator, child_info); child_path = g_file_get_path (child); if (search_str == NULL || g_str_has_prefix (child_name, search_str)) { priv->current_category = NULL; gchar *content_type; gboolean uncertain; content_type = g_content_type_guess (child_name, NULL, 0, &uncertain); if (content_type && g_str_has_prefix (content_type, "image") && !uncertain) { GFileInputStream *stream; stream = g_file_read (child, NULL, &error); if (stream != NULL) { FileIconInfoLoadCallbackInfo *callback_info; gint scale; callback_info = g_new0 (FileIconInfoLoadCallbackInfo, 1); callback_info->dialog = dialog; callback_info->model = icon_store; callback_info->cancellable = g_object_ref (priv->cancellable); callback_info->enumerator = g_object_ref (priv->search_file_enumerator); callback_info->short_name = g_strdup (child_name); callback_info->long_name = g_strdup (child_path); callback_info->chunk_end = (chunk_count == SEARCH_CHUNK_SIZE - 1); scale = gtk_widget_get_scale_factor (GTK_WIDGET (dialog)); gdk_pixbuf_new_from_stream_at_scale_async (G_INPUT_STREAM (stream), -1, priv->icon_size * scale, TRUE, NULL, (GAsyncReadyCallback) finish_pixbuf_load_from_file, callback_info); chunk_count ++; } else { if (error) { g_message ("%s\n", error->message); g_error_free (error); } } } g_free (content_type); } g_free (child_path); g_object_unref (child); } if (!child_info) { if (priv->search_file_enumerator) { g_object_unref (priv->search_file_enumerator); } gtk_widget_hide (priv->loading_bar); } else { g_clear_object (&child_info); } g_free (search_str); g_object_unref (dir); } static void search_icon_name (XAppIconChooserDialog *dialog, const gchar *name_string, GtkListStore *icon_store) { XAppIconChooserDialogPrivate *priv; GtkIconTheme *theme; GList *icons; gint chunk_count; gint scale; priv = xapp_icon_chooser_dialog_get_instance_private (dialog); theme = gtk_icon_theme_get_default (); scale = gtk_widget_get_scale_factor (GTK_WIDGET (dialog)); icons = priv->full_icon_list; chunk_count = 0; while (chunk_count < SEARCH_CHUNK_SIZE) { if (priv->search_iter == NULL) { priv->search_iter = icons; } else { priv->search_iter = priv->search_iter->next; } if (priv->search_iter) { priv->current_category = NULL; if (g_strrstr (priv->search_iter->data, name_string)) { NamedIconInfoLoadCallbackInfo *callback_info; cairo_surface_t *surface; const gchar *name = priv->search_iter->data; callback_info = g_new0 (NamedIconInfoLoadCallbackInfo, 1); callback_info->dialog = dialog; callback_info->model = priv->search_icon_store; callback_info->cancellable = g_object_ref (priv->cancellable); callback_info->category_info = NULL; callback_info->name = name; callback_info->chunk_end = (chunk_count == SEARCH_CHUNK_SIZE - 1); surface = g_hash_table_lookup (priv->surfaces_by_name, name); if (surface != NULL) { callback_info->surface = cairo_surface_reference (surface); g_idle_add ((GSourceFunc) add_named_entry_with_existing_surface, callback_info); } else { GtkIconInfo *info; GtkStyleContext *context; info = gtk_icon_theme_lookup_icon_for_scale (theme, name, priv->icon_size, scale, GTK_ICON_LOOKUP_FORCE_SIZE); context = gtk_widget_get_style_context (priv->icon_view); gtk_icon_info_load_symbolic_for_context_async (info, context, NULL, (GAsyncReadyCallback) (finish_pixbuf_load_from_name), callback_info); } chunk_count++; } } else { gtk_widget_hide (priv->loading_bar); break; // Quit the count early, we're out of data } } } static void on_search_text_changed (GtkSearchEntry *entry, XAppIconChooserDialog *dialog) { XAppIconChooserDialogPrivate *priv; const gchar *search_text; priv = xapp_icon_chooser_dialog_get_instance_private (dialog); /* The search cancellable is carried in search callback data. If the * text changes, we cancel it here, our load callbacks will check the * state, and react appropriately (like not adding results to the model). */ clear_search_state (dialog); gtk_list_box_select_row (GTK_LIST_BOX (priv->list_box), NULL); priv->cancellable = g_cancellable_new (); #if DEBUG_REFS g_object_weak_ref (G_OBJECT (priv->cancellable), (GWeakNotify) on_cancellable_finalize, dialog); #endif search_text = gtk_entry_get_text (GTK_ENTRY (entry)); if (g_strcmp0 (search_text, "") == 0) { g_clear_pointer (&priv->current_text, g_free); g_clear_pointer (&priv->icon_string, g_free); gtk_widget_hide (priv->loading_bar); gtk_list_store_clear (GTK_LIST_STORE (priv->search_icon_store)); } else if (strlen (search_text) < 2) { return; } else { g_free (priv->current_text); priv->current_text = g_strdup (search_text); gtk_widget_show (priv->loading_bar); gtk_list_store_clear (GTK_LIST_STORE (priv->search_icon_store)); gtk_icon_view_set_model (GTK_ICON_VIEW (priv->icon_view), GTK_TREE_MODEL (priv->search_icon_store)); if (g_strrstr (search_text, "/")) { if (priv->allow_paths) { search_path (dialog, search_text, priv->search_icon_store); } } else { search_icon_name (dialog, search_text, priv->search_icon_store); } } } static void on_icon_view_selection_changed (GtkIconView *icon_view, gpointer user_data) { XAppIconChooserDialogPrivate *priv; GList *selected_items; gchar *icon_string = NULL; priv = xapp_icon_chooser_dialog_get_instance_private (user_data); selected_items = gtk_icon_view_get_selected_items (icon_view); if (selected_items == NULL) { gtk_widget_set_sensitive (GTK_WIDGET (priv->select_button), FALSE); } else { GtkTreePath *tree_path; GtkTreeModel *model; GtkTreeIter iter; gtk_widget_set_sensitive (GTK_WIDGET (priv->select_button), TRUE); tree_path = selected_items->data; model = gtk_icon_view_get_model (icon_view); gtk_tree_model_get_iter (model, &iter, tree_path); gtk_tree_model_get (model, &iter, COLUMN_FULL_NAME, &icon_string, -1); } if (priv->icon_string != NULL) { g_free (priv->icon_string); } priv->icon_string = icon_string; g_list_free_full (selected_items, (GDestroyNotify) gtk_tree_path_free); } static void on_icon_store_icons_added (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter, gpointer user_data) { XAppIconChooserDialogPrivate *priv; GtkTreePath *new_path; priv = xapp_icon_chooser_dialog_get_instance_private (user_data); if (tree_model != gtk_icon_view_get_model (GTK_ICON_VIEW (priv->icon_view))) { return; } new_path = gtk_tree_path_new_first (); gtk_icon_view_select_path (GTK_ICON_VIEW (priv->icon_view), new_path); gtk_tree_path_free (new_path); } static void on_browse_button_clicked (GtkButton *button, gpointer user_data) { XAppIconChooserDialog *dialog = user_data; XAppIconChooserDialogPrivate *priv; GtkWidget *file_dialog; const gchar *search_text; GtkFileFilter *file_filter; gint response; priv = xapp_icon_chooser_dialog_get_instance_private (dialog); file_dialog = gtk_file_chooser_dialog_new (_("Select image file"), GTK_WINDOW (dialog), GTK_FILE_CHOOSER_ACTION_OPEN, _("Cancel"), GTK_RESPONSE_CANCEL, _("Open"), GTK_RESPONSE_ACCEPT, NULL); search_text = gtk_entry_get_text (GTK_ENTRY (priv->search_bar)); if (g_strrstr (search_text, "/")) { gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (file_dialog), search_text); } else { gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (file_dialog), "/usr/share/icons/"); } file_filter = gtk_file_filter_new (); gtk_file_filter_set_name (file_filter, _("Image")); gtk_file_filter_add_pixbuf_formats (file_filter); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_dialog), file_filter); response = gtk_dialog_run (GTK_DIALOG (file_dialog)); if (response == GTK_RESPONSE_ACCEPT) { gchar *filename; filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_dialog)); gtk_entry_set_text (GTK_ENTRY (priv->search_bar), filename); g_free (filename); } gtk_widget_destroy (file_dialog); } static void on_select_button_clicked (GtkButton *button, gpointer user_data) { xapp_icon_chooser_dialog_close (XAPP_ICON_CHOOSER_DIALOG (user_data), GTK_RESPONSE_OK); } static void on_cancel_button_clicked (GtkButton *button, gpointer user_data) { xapp_icon_chooser_dialog_close (XAPP_ICON_CHOOSER_DIALOG (user_data), GTK_RESPONSE_CANCEL); } static gboolean on_delete_event (GtkWidget *widget, GdkEventAny *event) { xapp_icon_chooser_dialog_close (XAPP_ICON_CHOOSER_DIALOG (widget), GTK_RESPONSE_CANCEL); return TRUE; } static void on_icon_view_item_activated (GtkIconView *iconview, GtkTreePath *path, gpointer user_data) { xapp_icon_chooser_dialog_close (XAPP_ICON_CHOOSER_DIALOG (user_data), GTK_RESPONSE_OK); } static gboolean on_search_bar_key_pressed (GtkWidget *widget, GdkEvent *event, gpointer user_data) { XAppIconChooserDialogPrivate *priv; guint keyval; priv = xapp_icon_chooser_dialog_get_instance_private (user_data); gdk_event_get_keyval (event, &keyval); switch (keyval) { case GDK_KEY_Escape: xapp_icon_chooser_dialog_close (XAPP_ICON_CHOOSER_DIALOG (user_data), GTK_RESPONSE_CANCEL); return TRUE; case GDK_KEY_Return: case GDK_KEY_KP_Enter: if (priv->icon_string != NULL) { xapp_icon_chooser_dialog_close (XAPP_ICON_CHOOSER_DIALOG (user_data), GTK_RESPONSE_OK); } return TRUE; } return FALSE; } static gboolean on_default_button_clicked (GtkButton *button, gpointer user_data) { XAppIconChooserDialogPrivate *priv; priv = xapp_icon_chooser_dialog_get_instance_private (user_data); gtk_entry_set_text (GTK_ENTRY (priv->search_bar), priv->default_icon); } xapps-1.6.10/libxapp/xapp-icon-chooser-dialog.h000066400000000000000000000045151360565754300213600ustar00rootroot00000000000000#ifndef _XAPP_ICON_CHOOSER_DIALOG_H_ #define _XAPP_ICON_CHOOSER_DIALOG_H_ #include #include #include "xapp-gtk-window.h" G_BEGIN_DECLS #define XAPP_TYPE_ICON_CHOOSER_DIALOG (xapp_icon_chooser_dialog_get_type ()) G_DECLARE_FINAL_TYPE (XAppIconChooserDialog, xapp_icon_chooser_dialog, XAPP, ICON_CHOOSER_DIALOG, XAppGtkWindow) typedef enum { XAPP_ICON_SIZE_16 = 16, XAPP_ICON_SIZE_22 = 22, XAPP_ICON_SIZE_24 = 24, XAPP_ICON_SIZE_32 = 32, XAPP_ICON_SIZE_48 = 48, XAPP_ICON_SIZE_96 = 96 } XAppIconSize; XAppIconChooserDialog * xapp_icon_chooser_dialog_new (void); gint xapp_icon_chooser_dialog_run (XAppIconChooserDialog *dialog); gint xapp_icon_chooser_dialog_run_with_icon (XAppIconChooserDialog *dialog, gchar *icon); gint xapp_icon_chooser_dialog_run_with_category (XAppIconChooserDialog *dialog, gchar *category); gchar * xapp_icon_chooser_dialog_get_icon_string (XAppIconChooserDialog *dialog); void xapp_icon_chooser_dialog_add_button (XAppIconChooserDialog *dialog, GtkWidget *button, GtkPackType packing, GtkResponseType response_id); gchar * xapp_icon_chooser_dialog_get_default_icon (XAppIconChooserDialog *dialog); void xapp_icon_chooser_dialog_set_default_icon (XAppIconChooserDialog *dialog, const gchar *icon); void xapp_icon_chooser_dialog_add_custom_category (XAppIconChooserDialog *dialog, const gchar *name, GList *icons); G_END_DECLS #endif /* _XAPP_ICON_CHOOSER_DIALOG_H_ */ xapps-1.6.10/libxapp/xapp-kbd-layout-controller.c000066400000000000000000000534501360565754300217640ustar00rootroot00000000000000 #include #include #include #include #include #include #include #include #include #include "xapp-kbd-layout-controller.h" /** * SECTION:xapp-kbd-layout-controller * @Short_description: Keyboard layout selection UI element provider. * @Title: XAppKbdLayoutController * * A GObject wrapper for Gkbd that provides additional UI element * support for keyboard layout flags and abbreviations, as well as * Wfacilities to distinguish regional and hardware-based variants * which might otherwise appear identical in a layout list. */ enum { PROP_0, PROP_ENABLED }; enum { KBD_LAYOUT_CHANGED, KBD_CONFIG_CHANGED, LAST_SIGNAL }; static guint signals[LAST_SIGNAL] = { 0, }; typedef struct { gchar *group_name; gchar *variant_name; gchar *group_label; gint group_dupe_id; gchar *variant_label; gint variant_dupe_id; } GroupData; #define GROUP_DATA(ptr, idx) ((GroupData *) g_ptr_array_index (ptr, idx)) static void group_data_free (GroupData *data) { g_clear_pointer (&data->group_name, g_free); g_clear_pointer (&data->group_label, g_free); g_clear_pointer (&data->variant_label, g_free); data->group_dupe_id = 0; data->variant_dupe_id = 0; g_slice_free (GroupData, data); } struct _XAppKbdLayoutControllerPrivate { GkbdConfiguration *config; guint num_groups; GPtrArray *group_data; gulong changed_id; gulong group_changed_id; guint idle_changed_id; gboolean enabled; }; G_DEFINE_TYPE (XAppKbdLayoutController, xapp_kbd_layout_controller, G_TYPE_OBJECT); static void clear_stores (XAppKbdLayoutController *controller) { XAppKbdLayoutControllerPrivate *priv = controller->priv; g_clear_pointer (&priv->group_data, g_ptr_array_unref); } static gchar * create_label (XAppKbdLayoutController *controller, const gchar *name, gint dupe_id) { if (g_utf8_validate (name, -1, NULL)) { gchar utf8[20]; gchar *utf8_cased = NULL; g_utf8_strncpy (utf8, name, 3); utf8_cased = g_utf8_strdown (utf8, -1); GString *string = g_string_new (utf8_cased); g_free (utf8_cased); if (dupe_id > 0) { string = g_string_append_unichar (string, 0x2080 + dupe_id); } return g_string_free (string, FALSE); } return NULL; } static void load_stores (XAppKbdLayoutController *controller) { XAppKbdLayoutControllerPrivate *priv = controller->priv; gchar **group_names = gkbd_configuration_get_group_names (priv->config); priv->num_groups = g_strv_length (group_names); /* We do nothing if there's only one keyboard layout enabled */ if (priv->num_groups == 1) { priv->enabled = FALSE; return; } priv->enabled = TRUE; /* Populate the GroupData pointer array */ gint group_dupe_id, variant_dupe_id; guint i, j; GPtrArray *list = g_ptr_array_new_with_free_func ((GDestroyNotify) group_data_free); for (i = 0; i < priv->num_groups; i++) { GroupData *data = g_slice_new0 (GroupData); /* Iterate through group names, figure out subscript values for duplicates */ gchar *group_name = gkbd_configuration_get_group_name (priv->config, i); group_dupe_id = 0; for (j = 0; j < list->len; j++) { GroupData *iter = g_ptr_array_index (list, j); if (g_strcmp0 (group_name, iter->group_name) == 0) { group_dupe_id++; iter->group_dupe_id = group_dupe_id; } } if (group_dupe_id > 0) { group_dupe_id++; } data->group_name = group_name; data->group_dupe_id = group_dupe_id; /* Iterate through layout/variant names, figure out subscript values for duplicates */ gchar *variant_name = gkbd_configuration_extract_layout_name (priv->config, i); variant_dupe_id = 0; for (j = 0; j < list->len; j++) { GroupData *iter = g_ptr_array_index (list, j); if (g_strcmp0 (variant_name, iter->variant_name) == 0) { variant_dupe_id++; iter->variant_dupe_id = variant_dupe_id; } } if (variant_dupe_id > 0) { variant_dupe_id++; } data->variant_name = variant_name; data->variant_dupe_id = variant_dupe_id; /* Finally, add the GroupData slice to the array */ g_ptr_array_add (list, data); } for (i = 0; i < priv->num_groups; i++) { GroupData *data = g_ptr_array_index (list, i); /* Now generate labels for group names and for variant names. This is done * in its own loop after the initial run, because previous dupe ids could have * changed later in the loop. */ data->group_label = create_label (controller, data->group_name, data->group_dupe_id); data->variant_label = create_label (controller, data->variant_name, data->variant_dupe_id); } priv->group_data = list; } static gboolean idle_config_changed (XAppKbdLayoutController *controller) { XAppKbdLayoutControllerPrivate *priv = controller->priv; clear_stores (controller); load_stores (controller); if (gkbd_configuration_get_current_group (priv->config) >= priv->num_groups) { xapp_kbd_layout_controller_set_current_group (controller, 0); } g_signal_emit (controller, signals[KBD_CONFIG_CHANGED], 0); priv->idle_changed_id = 0; return FALSE; } static void on_configuration_changed (GkbdConfiguration *config, XAppKbdLayoutController *controller) { XAppKbdLayoutControllerPrivate *priv = controller->priv; if (priv->idle_changed_id != 0) { g_source_remove (priv->idle_changed_id); priv->idle_changed_id = 0; } priv->idle_changed_id = g_idle_add ((GSourceFunc) idle_config_changed, controller); } static void on_configuration_group_changed (GkbdConfiguration *config, gint group, XAppKbdLayoutController *controller) { g_signal_emit (controller, signals[KBD_LAYOUT_CHANGED], 0, (guint) group); } static void xapp_kbd_layout_controller_init (XAppKbdLayoutController *controller) { controller->priv = G_TYPE_INSTANCE_GET_PRIVATE (controller, XAPP_TYPE_KBD_LAYOUT_CONTROLLER, XAppKbdLayoutControllerPrivate); XAppKbdLayoutControllerPrivate *priv = controller->priv; priv->config = gkbd_configuration_get (); priv->enabled = FALSE; priv->idle_changed_id = 0; priv->group_data = NULL; } static void xapp_kbd_layout_controller_constructed (GObject *object) { G_OBJECT_CLASS (xapp_kbd_layout_controller_parent_class)->constructed (object); XAppKbdLayoutController *controller = XAPP_KBD_LAYOUT_CONTROLLER (object); XAppKbdLayoutControllerPrivate *priv = controller->priv; gkbd_configuration_start_listen (priv->config); priv->changed_id = g_signal_connect_object (priv->config, "changed", G_CALLBACK (on_configuration_changed), controller, 0); priv->group_changed_id = g_signal_connect_object (priv->config, "group-changed", G_CALLBACK (on_configuration_group_changed), controller, 0); clear_stores (controller); load_stores (controller); } static void xapp_kbd_layout_controller_get_property (GObject *gobject, guint prop_id, GValue *value, GParamSpec *pspec) { XAppKbdLayoutController *controller = XAPP_KBD_LAYOUT_CONTROLLER (gobject); XAppKbdLayoutControllerPrivate *priv = controller->priv; switch (prop_id) { case PROP_ENABLED: g_value_set_boolean (value, priv->enabled); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; } } static void xapp_kbd_layout_controller_dispose (GObject *object) { XAppKbdLayoutController *controller = XAPP_KBD_LAYOUT_CONTROLLER (object); XAppKbdLayoutControllerPrivate *priv = controller->priv; gkbd_configuration_stop_listen (priv->config); clear_stores (controller); if (priv->changed_id > 0) { g_signal_handler_disconnect (priv->config, priv->changed_id); priv->changed_id = 0; } if (priv->group_changed_id > 0) { g_signal_handler_disconnect (priv->config, priv->group_changed_id); priv->group_changed_id = 0; } if (priv->idle_changed_id != 0) { g_source_remove (priv->idle_changed_id); priv->idle_changed_id = 0; } G_OBJECT_CLASS (xapp_kbd_layout_controller_parent_class)->dispose (object); } static void xapp_kbd_layout_controller_finalize (GObject *object) { XAppKbdLayoutController *controller = XAPP_KBD_LAYOUT_CONTROLLER (object); XAppKbdLayoutControllerPrivate *priv = controller->priv; g_clear_object (&priv->config); G_OBJECT_CLASS (xapp_kbd_layout_controller_parent_class)->finalize (object); } static void xapp_kbd_layout_controller_class_init (XAppKbdLayoutControllerClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->dispose = xapp_kbd_layout_controller_dispose; gobject_class->finalize = xapp_kbd_layout_controller_finalize; gobject_class->get_property = xapp_kbd_layout_controller_get_property; gobject_class->constructed = xapp_kbd_layout_controller_constructed; g_type_class_add_private (gobject_class, sizeof (XAppKbdLayoutControllerPrivate)); g_object_class_install_property (gobject_class, PROP_ENABLED, g_param_spec_boolean ("enabled", "Enabled", "Whether we're enabled (more than one keyboard layout is installed)", FALSE, G_PARAM_READABLE) ); signals[KBD_LAYOUT_CHANGED] = g_signal_new ("layout-changed", G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT); signals[KBD_CONFIG_CHANGED] = g_signal_new ("config-changed", G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0, G_TYPE_NONE); } /** * xapp_kbd_layout_controller_new * * Creates a new XAppKbdLayoutController instance. * * Returns: (transfer full): a new #XAppKbdLayoutController instance */ XAppKbdLayoutController * xapp_kbd_layout_controller_new (void) { return g_object_new (XAPP_TYPE_KBD_LAYOUT_CONTROLLER, NULL); } /** * xapp_kbd_layout_controller_get_enabled: * @controller: the #XAppKbdLayoutController * * Returns whether or not the layout controller is enabled */ gboolean xapp_kbd_layout_controller_get_enabled (XAppKbdLayoutController *controller) { return controller->priv->enabled; } /** * xapp_kbd_layout_controller_get_current_group: * @controller: the #XAppKbdLayoutController * * Selects the previous group in the group list. */ guint xapp_kbd_layout_controller_get_current_group (XAppKbdLayoutController *controller) { g_return_val_if_fail (controller->priv->enabled, 0); return gkbd_configuration_get_current_group (controller->priv->config); } /** * xapp_kbd_layout_controller_set_current_group * @controller: the #XAppKbdLayoutController * @group: the group number to make active * * Selects the given group number as active. */ void xapp_kbd_layout_controller_set_current_group (XAppKbdLayoutController *controller, guint group) { g_return_if_fail (controller->priv->enabled); g_return_if_fail (group <= controller->priv->num_groups); guint current = gkbd_configuration_get_current_group (controller->priv->config); if (current != group) { gkbd_configuration_lock_group (controller->priv->config, group); } } /** * xapp_kbd_layout_controller_next_group * @controller: the #XAppKbdLayoutController * * Selects the next group in the group list. */ void xapp_kbd_layout_controller_next_group (XAppKbdLayoutController *controller) { g_return_if_fail (controller->priv->enabled); gkbd_configuration_lock_next_group (controller->priv->config); } /** * xapp_kbd_layout_controller_previous_group * @controller: the #XAppKbdLayoutController * * Selects the previous group in the group list. */ void xapp_kbd_layout_controller_previous_group (XAppKbdLayoutController *controller) { g_return_if_fail (controller->priv->enabled); XAppKbdLayoutControllerPrivate *priv = controller->priv; gint current = gkbd_configuration_get_current_group (priv->config); if (current > 0) { current--; } else { current = priv->num_groups - 1; } gkbd_configuration_lock_group (controller->priv->config, current); } /** * xapp_kbd_layout_controller_get_current_name: * @controller: the #XAppKbdLayoutController * * Returns the full name of the current keyboard layout. * * Returns: (transfer full): the newly created string or NULL * if something went wrong. */ gchar * xapp_kbd_layout_controller_get_current_name (XAppKbdLayoutController *controller) { g_return_val_if_fail (controller->priv->enabled, NULL); return gkbd_configuration_get_current_tooltip (controller->priv->config); } /** * xapp_kbd_layout_controller_get_all_names: * @controller: the #XAppKbdLayoutController * * Returns an array of all full layout names * * Returns: (transfer none) (array zero-terminated=1): array of names */ gchar ** xapp_kbd_layout_controller_get_all_names (XAppKbdLayoutController *controller) { g_return_val_if_fail (controller->priv->enabled, NULL); return gkbd_configuration_get_group_names (controller->priv->config); } /** * xapp_kbd_layout_controller_get_current_icon_name: * @controller: the #XAppKbdLayoutController * * Returns the icon file name (no path or extension) to use for the current layout * * Returns: (transfer full): a new string with the icon name. */ gchar * xapp_kbd_layout_controller_get_current_icon_name (XAppKbdLayoutController *controller) { g_return_val_if_fail (controller->priv->enabled, NULL); XAppKbdLayoutControllerPrivate *priv = controller->priv; guint current = gkbd_configuration_get_current_group (priv->config); return g_strdup (GROUP_DATA (priv->group_data, current)->group_name); } /** * xapp_kbd_layout_controller_get_icon_name_for_group: * @controller: the #XAppKbdLayoutController * @group: a group number * * Returns the icon file name (no path or extension) to use for the specified layout. * * Returns: (transfer full): a new string with the icon name. */ gchar * xapp_kbd_layout_controller_get_icon_name_for_group (XAppKbdLayoutController *controller, guint group) { g_return_val_if_fail (controller->priv->enabled, NULL); g_return_val_if_fail (group <= controller->priv->num_groups, NULL); XAppKbdLayoutControllerPrivate *priv = controller->priv; return g_strdup (GROUP_DATA (priv->group_data, group)->group_name); } /** * xapp_kbd_layout_controller_get_current_flag_id: * @controller: the #XAppKbdLayoutController * * Returns the duplicate id for the current layout * * Returns: the id */ gint xapp_kbd_layout_controller_get_current_flag_id (XAppKbdLayoutController *controller) { g_return_val_if_fail (controller->priv->enabled, 0); XAppKbdLayoutControllerPrivate *priv = controller->priv; guint current = gkbd_configuration_get_current_group (priv->config); return GROUP_DATA (priv->group_data, current)->group_dupe_id; } /** * xapp_kbd_layout_controller_flag_id_for_group: * @controller: the #XAppKbdLayoutController * @group: a group number * * Returns the duplicate id for the specified layout * * Returns: the id */ gint xapp_kbd_layout_controller_get_flag_id_for_group (XAppKbdLayoutController *controller, guint group) { g_return_val_if_fail (controller->priv->enabled, 0); g_return_val_if_fail (group < controller->priv->num_groups, 0); XAppKbdLayoutControllerPrivate *priv = controller->priv; return GROUP_DATA (priv->group_data, group)->group_dupe_id; } /** * xapp_kbd_layout_controller_get_current_short_group_label: * @controller: the #XAppKbdLayoutController * * Returns the short group label (and subscript, if any) of the current layout * * Returns: (transfer full): a new string or NULL. */ gchar * xapp_kbd_layout_controller_get_current_short_group_label (XAppKbdLayoutController *controller) { g_return_val_if_fail (controller->priv->enabled, NULL); XAppKbdLayoutControllerPrivate *priv = controller->priv; guint current = gkbd_configuration_get_current_group (priv->config); return g_strdup (GROUP_DATA (priv->group_data, current)->group_label); } /** * xapp_kbd_layout_controller_get_short_group_label_for_group: * @controller: the #XAppKbdLayoutController * @group: a group number * * Returns the short group label and subscript of the specified layout. * * Returns: (transfer full): a new string or NULL. */ gchar * xapp_kbd_layout_controller_get_short_group_label_for_group (XAppKbdLayoutController *controller, guint group) { g_return_val_if_fail (controller->priv->enabled, NULL); g_return_val_if_fail (group < controller->priv->num_groups, NULL); XAppKbdLayoutControllerPrivate *priv = controller->priv; return g_strdup (GROUP_DATA (priv->group_data, group)->group_label); } /** * xapp_kbd_layout_controller_get_current_variant_label: * @controller: the #XAppKbdLayoutController * * Returns the variant label (and subscript, if any) of the current layout * * Returns: (transfer full): a new string or NULL. */ gchar * xapp_kbd_layout_controller_get_current_variant_label (XAppKbdLayoutController *controller) { g_return_val_if_fail (controller->priv->enabled, NULL); XAppKbdLayoutControllerPrivate *priv = controller->priv; guint current = gkbd_configuration_get_current_group (priv->config); return g_strdup (GROUP_DATA (priv->group_data, current)->variant_label); } /** * xapp_kbd_layout_controller_get_variant_label_for_group: * @controller: the #XAppKbdLayoutController * @group: a group number * * Returns the variant label and subscript of the specified layout. * * Returns: (transfer full): a new string or NULL. */ gchar * xapp_kbd_layout_controller_get_variant_label_for_group (XAppKbdLayoutController *controller, guint group) { g_return_val_if_fail (controller->priv->enabled, NULL); XAppKbdLayoutControllerPrivate *priv = controller->priv; g_return_val_if_fail (group < controller->priv->num_groups, NULL); return g_strdup (GROUP_DATA (priv->group_data, group)->variant_label); } /** * xapp_kbd_layout_controller_render_cairo_subscript: * @cr: a #cairo_t * @x: the x position of the drawing area * @y: the y position of the drawing area * @width: the width of the drawing area * @height: the height of the drawing area * @subscript: the number to render * * Renders a subscript number in the given work area. This should * be called from within a "draw" or "paint" widget/actor function, * where a valid cairo_t is provided to draw with. */ void xapp_kbd_layout_controller_render_cairo_subscript (cairo_t *cr, gdouble x, gdouble y, gdouble width, gdouble height, gint subscript) { if (subscript == 0) { return; } cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, .5); cairo_rectangle (cr, x, y, width, height); cairo_fill (cr); cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, .8); cairo_rectangle (cr, x + 1, y + 1, width - 2, height - 2); cairo_fill (cr); cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 1.0); gchar *num_string = g_strdup_printf ("%d", subscript); cairo_select_font_face (cr, "sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD); cairo_set_font_size (cr, height - 2.0); cairo_text_extents_t ext; cairo_text_extents (cr, num_string, &ext); cairo_move_to (cr, (x + (width / 2.0) - (ext.width / 2.0)), (y + (height / 2.0) + (ext.height / 2.0))); cairo_show_text (cr, num_string); g_free (num_string); } xapps-1.6.10/libxapp/xapp-kbd-layout-controller.h000066400000000000000000000111231360565754300217600ustar00rootroot00000000000000#ifndef __XAPP_KBD_LAYOUT_CONTROLLER_H__ #define __XAPP_KBD_LAYOUT_CONTROLLER_H__ #include #include #include #include G_BEGIN_DECLS #define XAPP_TYPE_KBD_LAYOUT_CONTROLLER (xapp_kbd_layout_controller_get_type ()) #define XAPP_KBD_LAYOUT_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), XAPP_TYPE_KBD_LAYOUT_CONTROLLER, XAppKbdLayoutController)) #define XAPP_KBD_LAYOUT_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), XAPP_TYPE_KBD_LAYOUT_CONTROLLER, XAppKbdLayoutControllerClass)) #define XAPP_IS_KBD_LAYOUT_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), XAPP_TYPE_KBD_LAYOUT_CONTROLLER)) #define XAPP_IS_KBD_LAYOUT_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), XAPP_TYPE_KBD_LAYOUT_CONTROLLER)) #define XAPP_KBD_LAYOUT_CONTROLLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), XAPP_TYPE_KBD_LAYOUT_CONTROLLER, XAppKbdLayoutControllerClass)) typedef struct _XAppKbdLayoutControllerPrivate XAppKbdLayoutControllerPrivate; typedef struct _XAppKbdLayoutController XAppKbdLayoutController; typedef struct _XAppKbdLayoutControllerClass XAppKbdLayoutControllerClass; struct _XAppKbdLayoutController { GObject parent_object; XAppKbdLayoutControllerPrivate *priv; }; struct _XAppKbdLayoutControllerClass { GObjectClass parent_class; }; GType xapp_kbd_layout_controller_get_type (void); XAppKbdLayoutController *xapp_kbd_layout_controller_new (void); gboolean xapp_kbd_layout_controller_get_enabled (XAppKbdLayoutController *controller); guint xapp_kbd_layout_controller_get_current_group (XAppKbdLayoutController *controller); void xapp_kbd_layout_controller_set_current_group (XAppKbdLayoutController *controller, guint group); void xapp_kbd_layout_controller_next_group (XAppKbdLayoutController *controller); void xapp_kbd_layout_controller_previous_group (XAppKbdLayoutController *controller); gchar *xapp_kbd_layout_controller_get_current_name (XAppKbdLayoutController *controller); gchar **xapp_kbd_layout_controller_get_all_names (XAppKbdLayoutController *controller); gchar *xapp_kbd_layout_controller_get_current_icon_name (XAppKbdLayoutController *controller); gchar *xapp_kbd_layout_controller_get_icon_name_for_group (XAppKbdLayoutController *controller, guint group); gint xapp_kbd_layout_controller_get_current_flag_id (XAppKbdLayoutController *controller); gint xapp_kbd_layout_controller_get_flag_id_for_group (XAppKbdLayoutController *controller, guint group); gchar *xapp_kbd_layout_controller_get_current_short_group_label (XAppKbdLayoutController *controller); gchar *xapp_kbd_layout_controller_get_short_group_label_for_group (XAppKbdLayoutController *controller, guint group); gchar *xapp_kbd_layout_controller_get_current_variant_label (XAppKbdLayoutController *controller); gchar *xapp_kbd_layout_controller_get_variant_label_for_group (XAppKbdLayoutController *controller, guint group); /* Class function */ void xapp_kbd_layout_controller_render_cairo_subscript (cairo_t *cr, gdouble x, gdouble y, gdouble width, gdouble height, gint subscript); G_END_DECLS #endif /* __XAPP_KBD_LAYOUT_CONTROLLER_H__ */ xapps-1.6.10/libxapp/xapp-monitor-blanker.c000066400000000000000000000122761360565754300206340ustar00rootroot00000000000000 #include #include #include #include #include #include #include #include "xapp-monitor-blanker.h" /** * SECTION:xapp-monitor-blanker * @Short_description: Blank and unblank unused monitors * @Title: XAppMonitorBlanker * * The XAppMonitorBlanker widget that creates one or more * POPUP type GtkWindows that are used to blank unused * monitors in multiple monitor setups. */ struct _XAppMonitorBlankerPrivate { int num_outputs; gboolean blanked; GtkWidget **windows; }; G_DEFINE_TYPE (XAppMonitorBlanker, xapp_monitor_blanker, G_TYPE_OBJECT); GtkWidget *create_blanking_window (GdkScreen *screen, int monitor); static void xapp_monitor_blanker_init (XAppMonitorBlanker *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, XAPP_TYPE_MONITOR_BLANKER, XAppMonitorBlankerPrivate); self->priv->num_outputs = 0; self->priv->blanked = FALSE; self->priv->windows = NULL; } static void xapp_monitor_blanker_finalize (GObject *object) { XAppMonitorBlanker *self = XAPP_MONITOR_BLANKER (object); if (self->priv->windows != NULL) { xapp_monitor_blanker_unblank_monitors (XAPP_MONITOR_BLANKER(self)); g_free (self->priv->windows); } G_OBJECT_CLASS (xapp_monitor_blanker_parent_class)->finalize (object); } static void xapp_monitor_blanker_class_init (XAppMonitorBlankerClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = xapp_monitor_blanker_finalize; g_type_class_add_private (gobject_class, sizeof (XAppMonitorBlankerPrivate)); } /** * xapp_monitor_blanker_new: * * Creates a new #XAppMonitorBlanker. * * Returns: a newly created #XAppMonitorBlanker */ XAppMonitorBlanker * xapp_monitor_blanker_new (void) { return g_object_new (XAPP_TYPE_MONITOR_BLANKER, NULL); } GtkWidget * create_blanking_window (GdkScreen *screen, int monitor) { GdkRectangle fullscreen; GtkWidget *window; GtkStyleContext *context; GtkCssProvider *provider; gdk_screen_get_monitor_geometry(screen, monitor, &fullscreen); window = gtk_window_new (GTK_WINDOW_POPUP); gtk_window_set_skip_taskbar_hint (GTK_WINDOW (window), TRUE); gtk_window_set_skip_pager_hint (GTK_WINDOW (window), TRUE); gtk_window_resize (GTK_WINDOW (window), fullscreen.width, fullscreen.height); gtk_window_move (GTK_WINDOW (window), fullscreen.x, fullscreen.y); gtk_widget_set_visible (window, TRUE); context = gtk_widget_get_style_context (GTK_WIDGET (window)); gtk_style_context_add_class (context, "xapp-blanking-window"); provider = gtk_css_provider_new (); gtk_css_provider_load_from_data (provider, ".xapp-blanking-window { background-color: rgb(0, 0, 0); }", -1, NULL); gtk_style_context_add_provider (context, GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); return window; } /** * xapp_monitor_blanker_blank_other_monitors: * @self: a #XAppMonitorBlanker * @window: a #GtkWindow * * Blanks monitors besides the one where the @window is. */ void xapp_monitor_blanker_blank_other_monitors (XAppMonitorBlanker *self, GtkWindow *window) { GdkScreen *screen; int active_monitor; int i; g_return_if_fail (XAPP_IS_MONITOR_BLANKER (self)); if (self->priv->windows != NULL) return; screen = gtk_window_get_screen (window); active_monitor = gdk_screen_get_monitor_at_window (screen, gtk_widget_get_window (GTK_WIDGET (window))); self->priv->num_outputs = gdk_screen_get_n_monitors (screen); self->priv->windows = g_new (GtkWidget *, self->priv->num_outputs); for (i = 0; i < self->priv->num_outputs; i++) { if (i != active_monitor) { self->priv->windows[i] = create_blanking_window (screen, i); } else { // initialize at NULL so it gets properly skipped when windows get destroyed self->priv->windows[i] = NULL; } } self->priv->blanked = TRUE; } /** * xapp_monitor_blanker_unblank_monitors: * @self: a #XAppMonitorBlanker * * Unblanks monitors that were blanked by * xapp_monitor_blanker_blank_other_monitors(); */ void xapp_monitor_blanker_unblank_monitors (XAppMonitorBlanker *self) { int i; g_return_if_fail (XAPP_IS_MONITOR_BLANKER (self)); if (self->priv->windows == NULL) return; for (i = 0; i < self->priv->num_outputs; i++) { if (self->priv->windows[i] != NULL) { gtk_widget_destroy (self->priv->windows[i]); self->priv->windows[i] = NULL; } } g_free (self->priv->windows); self->priv->windows = NULL; self->priv->blanked = FALSE; } /** * xapp_monitor_blanker_are_monitors_blanked: * @self: a #XAppMonitorBlanker * * Returns whether monitors are currently blanked. * See xapp_monitor_blanker_blank_other_monitors(). * * Returns: %TRUE if monitors are blanked. */ gboolean xapp_monitor_blanker_are_monitors_blanked (XAppMonitorBlanker *self) { return self->priv->blanked; } xapps-1.6.10/libxapp/xapp-monitor-blanker.h000066400000000000000000000032601360565754300206320ustar00rootroot00000000000000#ifndef __XAPP_MONITOR_BLANKER_H__ #define __XAPP_MONITOR_BLANKER_H__ #include #include #include G_BEGIN_DECLS #define XAPP_TYPE_MONITOR_BLANKER (xapp_monitor_blanker_get_type ()) #define XAPP_MONITOR_BLANKER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), XAPP_TYPE_MONITOR_BLANKER, XAppMonitorBlanker)) #define XAPP_MONITOR_BLANKER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), XAPP_TYPE_MONITOR_BLANKER, XAppMonitorBlankerClass)) #define XAPP_IS_MONITOR_BLANKER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), XAPP_TYPE_MONITOR_BLANKER)) #define XAPP_IS_MONITOR_BLANKER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), XAPP_TYPE_MONITOR_BLANKER)) #define XAPP_MONITOR_BLANKER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), XAPP_TYPE_MONITOR_BLANKER, XAppMonitorBlankerClass)) typedef struct _XAppMonitorBlankerPrivate XAppMonitorBlankerPrivate; typedef struct _XAppMonitorBlanker XAppMonitorBlanker; typedef struct _XAppMonitorBlankerClass XAppMonitorBlankerClass; struct _XAppMonitorBlanker { GObject parent_object; XAppMonitorBlankerPrivate *priv; }; struct _XAppMonitorBlankerClass { GObjectClass parent_class; }; GType xapp_monitor_blanker_get_type (void); XAppMonitorBlanker *xapp_monitor_blanker_new (void); void xapp_monitor_blanker_blank_other_monitors (XAppMonitorBlanker *self, GtkWindow *window); void xapp_monitor_blanker_unblank_monitors (XAppMonitorBlanker *self); gboolean xapp_monitor_blanker_are_monitors_blanked (XAppMonitorBlanker *self); G_END_DECLS #endif /* __XAPP_MONITOR_BLANKER_H__ */ xapps-1.6.10/libxapp/xapp-preferences-window.c000066400000000000000000000142271360565754300213350ustar00rootroot00000000000000#include #include "xapp-preferences-window.h" #include "xapp-stack-sidebar.h" /** * SECTION:xapp-preferences-window * @Short_description: A base preferences window * @Title: XAppPreferencesWindow * * The XAppPreferencesWindow sets up a simple dialog * window with a GtkStack, GtkSidebarSwitcher, and * GtkActionBar. The stack switcher and action bar only * show when needed. */ typedef struct { GtkWidget *stack; XAppStackSidebar *side_switcher; GtkWidget *button_area; gint num_pages; } XAppPreferencesWindowPrivate; enum { CLOSE, LAST_SIGNAL }; static guint signals[LAST_SIGNAL] = {0, }; G_DEFINE_TYPE_WITH_PRIVATE (XAppPreferencesWindow, xapp_preferences_window, GTK_TYPE_WINDOW) static void xapp_preferences_window_init (XAppPreferencesWindow *window) { XAppPreferencesWindowPrivate *priv = xapp_preferences_window_get_instance_private (window); GtkWidget *main_box; GtkWidget *secondary_box; GtkStyleContext *style_context; gtk_window_set_default_size (GTK_WINDOW (window), 600, 400); gtk_window_set_skip_taskbar_hint (GTK_WINDOW (window), TRUE); gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DIALOG); gtk_container_set_border_width (GTK_CONTAINER (window), 5); main_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_set_border_width (GTK_CONTAINER (main_box), 5); gtk_container_add (GTK_CONTAINER (window), main_box); secondary_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_set_border_width (GTK_CONTAINER (secondary_box), 5); gtk_box_pack_start (GTK_BOX (main_box), secondary_box, TRUE, TRUE, 0); style_context = gtk_widget_get_style_context (secondary_box); gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_FRAME); priv->side_switcher = xapp_stack_sidebar_new (); gtk_widget_set_size_request (GTK_WIDGET (priv->side_switcher), 100, -1); gtk_box_pack_start (GTK_BOX (secondary_box), GTK_WIDGET (priv->side_switcher), FALSE, FALSE, 0); gtk_widget_set_no_show_all (GTK_WIDGET (priv->side_switcher), TRUE); priv->stack = gtk_stack_new (); gtk_stack_set_transition_type (GTK_STACK (priv->stack), GTK_STACK_TRANSITION_TYPE_CROSSFADE); gtk_box_pack_start (GTK_BOX (secondary_box), priv->stack, TRUE, TRUE, 0); xapp_stack_sidebar_set_stack (priv->side_switcher, GTK_STACK (priv->stack)); style_context = gtk_widget_get_style_context (priv->stack); gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_VIEW); priv->button_area = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL); gtk_container_set_border_width (GTK_CONTAINER (priv->button_area), 5); gtk_box_pack_start (GTK_BOX (main_box), priv->button_area, FALSE, FALSE, 0); gtk_widget_set_no_show_all (priv->button_area, TRUE); /* Keep track of the number of pages so we can hide the stack switcher with < 2 */ priv->num_pages = 0; } static void xapp_preferences_window_close (XAppPreferencesWindow *window) { gtk_window_close (GTK_WINDOW (window)); } static void xapp_preferences_window_class_init (XAppPreferencesWindowClass *klass) { GtkBindingSet *binding_set; klass->close = xapp_preferences_window_close; signals[CLOSE] = g_signal_new ("close", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (XAppPreferencesWindowClass, close), NULL, NULL, NULL, G_TYPE_NONE, 0); binding_set = gtk_binding_set_by_class (klass); gtk_binding_entry_add_signal (binding_set, GDK_KEY_Escape, 0, "close", 0); } /** * xapp_preferences_window_new: * * Creates a new #XAppPreferencesWindow. * * Returns: a newly created #XAppPreferencesWindow */ XAppPreferencesWindow * xapp_preferences_window_new (void) { return g_object_new (XAPP_TYPE_PREFERENCES_WINDOW, NULL); } /** * xapp_preferences_window_add_page: * @window: a #XAppPreferencesWindow * @widget: a #GtkWidget to add * @name: the name for the page * @title: a human-readable title for the page * * Adds a page to the window. The page is identified by name. The * title will be used in the sidebar so should be short. The sidebar * will show automatically once at least two pages are added. */ void xapp_preferences_window_add_page (XAppPreferencesWindow *window, GtkWidget *widget, const gchar *name, const gchar *title) { XAppPreferencesWindowPrivate *priv = xapp_preferences_window_get_instance_private (window); g_return_if_fail (XAPP_IS_PREFERENCES_WINDOW (window)); gtk_stack_add_titled (GTK_STACK (priv->stack), widget, name, title); priv->num_pages++; if (priv->num_pages > 1) { gtk_widget_set_no_show_all (GTK_WIDGET (priv->side_switcher), FALSE); } } /** * xapp_preferences_window_add_button: * @window: a #XAppPreferencesWindow * @button: a #GtkWidget to add * @pack_type: a #GtkPackType to use * * Adds a button to the bottom action bar of the window. Where * the button is place will be determined by the #GtkPackType. The * action bar will show automatically once at least one button is * added. */ void xapp_preferences_window_add_button (XAppPreferencesWindow *window, GtkWidget *button, GtkPackType pack_type) { XAppPreferencesWindowPrivate *priv = xapp_preferences_window_get_instance_private (window); GtkStyleContext *style_context; g_return_if_fail (XAPP_IS_PREFERENCES_WINDOW (window)); g_return_if_fail (GTK_IS_WIDGET (button)); gtk_container_add (GTK_CONTAINER (priv->button_area), button); if (pack_type == GTK_PACK_END) { gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (priv->button_area), button, TRUE); } else if (pack_type != GTK_PACK_START) { return; } style_context = gtk_widget_get_style_context (button); gtk_style_context_add_class (style_context, "text-button"); gtk_widget_set_no_show_all (priv->button_area, FALSE); } xapps-1.6.10/libxapp/xapp-preferences-window.h000066400000000000000000000023211360565754300213320ustar00rootroot00000000000000#ifndef _XAPP_PREFERENCES_WINDOW_H_ #define _XAPP_PREFERENCES_WINDOW_H_ #include #include G_BEGIN_DECLS #define XAPP_TYPE_PREFERENCES_WINDOW (xapp_preferences_window_get_type ()) G_DECLARE_DERIVABLE_TYPE (XAppPreferencesWindow, xapp_preferences_window, XAPP, PREFERENCES_WINDOW, GtkWindow) struct _XAppPreferencesWindowClass { GtkWindowClass parent_class; /* Keybinding signals */ void (* close) (XAppPreferencesWindow *window); }; XAppPreferencesWindow *xapp_preferences_window_new (void); void xapp_preferences_window_add_page (XAppPreferencesWindow *window, GtkWidget *widget, const gchar *name, const gchar *title); void xapp_preferences_window_add_button (XAppPreferencesWindow *window, GtkWidget *button, GtkPackType pack_type); G_END_DECLS #endif /* _XAPP_PREFERENCES_WINDOW_H_ */xapps-1.6.10/libxapp/xapp-stack-sidebar.c000066400000000000000000000343641360565754300202470ustar00rootroot00000000000000/* Based on gtkstacksidebar.c */ #include "xapp-stack-sidebar.h" /** * SECTION:xapp-stack-sidebar * @Title: XAppStackSidebar * @Short_description: An automatic sidebar widget * * A XAppStackSidebar allows you to quickly and easily provide a * consistent "sidebar" object for your user interface * * In order to use a XAppStackSidebar, you simply use a GtkStack to * organize your UI flow, and add the sidebar to your sidebar area. You * can use xapp_stack_sidebar_set_stack() to connect the #XAppStackSidebar * to the #GtkStack. The #XAppStackSidebar is an extended version of the * the #GtkStackSidebar that allows showing an icon in addition to the text. * * # CSS nodes * * XAppStackSidebar has a single CSS node with the name stacksidebar and * style class .sidebar * * When circumstances require it, XAppStackSidebar adds the * .needs-attention style class to the widgets representing the stack * pages. */ struct _XAppStackSidebar { GtkBin parent_instance; GtkListBox *list; GtkStack *stack; GHashTable *rows; gboolean in_child_changed; }; enum { PROP_0, PROP_STACK, N_PROPERTIES }; static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; G_DEFINE_TYPE (XAppStackSidebar, xapp_stack_sidebar, GTK_TYPE_BIN) static void xapp_stack_sidebar_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_STACK: xapp_stack_sidebar_set_stack (XAPP_STACK_SIDEBAR (object), g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void xapp_stack_sidebar_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { XAppStackSidebar *sidebar = XAPP_STACK_SIDEBAR (object); switch (prop_id) { case PROP_STACK: g_value_set_object (value, sidebar->stack); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static gint sort_list (GtkListBoxRow *row1, GtkListBoxRow *row2, gpointer userdata) { XAppStackSidebar *sidebar = XAPP_STACK_SIDEBAR (userdata); GtkWidget *item; GtkWidget *widget; gint left = 0; gint right = 0; if (row1) { item = gtk_bin_get_child (GTK_BIN (row1)); widget = g_object_get_data (G_OBJECT (item), "stack-child"); gtk_container_child_get (GTK_CONTAINER (sidebar->stack), widget, "position", &left, NULL); } if (row2) { item = gtk_bin_get_child (GTK_BIN (row2)); widget = g_object_get_data (G_OBJECT (item), "stack-child"); gtk_container_child_get (GTK_CONTAINER (sidebar->stack), widget, "position", &right, NULL); } if (left < right) { return -1; } if (left == right) { return 0; } return 1; } static void xapp_stack_sidebar_row_selected (GtkListBox *box, GtkListBoxRow *row, gpointer user_data) { XAppStackSidebar *sidebar = XAPP_STACK_SIDEBAR (user_data); GtkWidget *item; GtkWidget *widget; if (sidebar->in_child_changed) { return; } if (!row) { return; } item = gtk_bin_get_child (GTK_BIN (row)); widget = g_object_get_data (G_OBJECT (item), "stack-child"); gtk_stack_set_visible_child (sidebar->stack, widget); } static void xapp_stack_sidebar_init (XAppStackSidebar *sidebar) { GtkStyleContext *style; GtkWidget *sw; sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_add (GTK_CONTAINER (sidebar), sw); sidebar->list = GTK_LIST_BOX (gtk_list_box_new ()); gtk_container_add (GTK_CONTAINER (sw), GTK_WIDGET (sidebar->list)); gtk_list_box_set_sort_func (sidebar->list, sort_list, sidebar, NULL); g_signal_connect (sidebar->list, "row-selected", G_CALLBACK (xapp_stack_sidebar_row_selected), sidebar); style = gtk_widget_get_style_context (GTK_WIDGET (sidebar)); gtk_style_context_add_class (style, "sidebar"); gtk_widget_show_all (GTK_WIDGET (sidebar)); sidebar->rows = g_hash_table_new (NULL, NULL); } static void update_row (XAppStackSidebar *sidebar, GtkWidget *widget, GtkWidget *row) { GList *children; GList *list; GtkWidget *item; gchar *title; gchar *icon_name; gboolean needs_attention; GtkStyleContext *context; gtk_container_child_get (GTK_CONTAINER (sidebar->stack), widget, "title", &title, "icon-name", &icon_name, "needs-attention", &needs_attention, NULL); item = gtk_bin_get_child (GTK_BIN (row)); children = gtk_container_get_children (GTK_CONTAINER (item)); for (list = children; list != NULL; list = list->next) { GtkWidget *child = list->data; if (GTK_IS_LABEL (child)) { gtk_label_set_text (GTK_LABEL (child), title); } else if (GTK_IS_IMAGE (child)) { gtk_image_set_from_icon_name (GTK_IMAGE (child), icon_name, GTK_ICON_SIZE_MENU); } } gtk_widget_set_visible (row, gtk_widget_get_visible (widget) && (title != NULL || icon_name != NULL)); context = gtk_widget_get_style_context (row); if (needs_attention) { gtk_style_context_add_class (context, GTK_STYLE_CLASS_NEEDS_ATTENTION); } else { gtk_style_context_remove_class (context, GTK_STYLE_CLASS_NEEDS_ATTENTION); } g_free (title); g_free (icon_name); g_list_free (children); } static void on_position_updated (GtkWidget *widget, GParamSpec *pspec, XAppStackSidebar *sidebar) { gtk_list_box_invalidate_sort (sidebar->list); } static void on_child_updated (GtkWidget *widget, GParamSpec *pspec, XAppStackSidebar *sidebar) { GtkWidget *row; row = g_hash_table_lookup (sidebar->rows, widget); update_row (sidebar, widget, row); } static void add_child (GtkWidget *widget, XAppStackSidebar *sidebar) { GtkWidget *item; GtkWidget *label; GtkWidget *icon; GtkWidget *row; /* Check we don't actually already know about this widget */ if (g_hash_table_lookup (sidebar->rows, widget)) { return; } /* Make a pretty item when we add children */ item = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_widget_set_margin_start (item, 6); gtk_widget_set_margin_end (item, 6); icon = gtk_image_new (); gtk_box_pack_start (GTK_BOX (item), icon, FALSE, FALSE, 0); label = gtk_label_new (""); gtk_box_pack_start (GTK_BOX (item), label, FALSE, FALSE, 0); row = gtk_list_box_row_new (); gtk_container_add (GTK_CONTAINER (row), item); gtk_widget_show_all (item); update_row (sidebar, widget, row); /* Hook up events */ g_signal_connect (widget, "child-notify::title", G_CALLBACK (on_child_updated), sidebar); g_signal_connect (widget, "child-notify::icon-name", G_CALLBACK (on_child_updated), sidebar); g_signal_connect (widget, "child-notify::needs-attention", G_CALLBACK (on_child_updated), sidebar); g_signal_connect (widget, "notify::visible", G_CALLBACK (on_child_updated), sidebar); g_signal_connect (widget, "child-notify::position", G_CALLBACK (on_position_updated), sidebar); g_object_set_data (G_OBJECT (item), "stack-child", widget); g_hash_table_insert (sidebar->rows, widget, row); gtk_container_add (GTK_CONTAINER (sidebar->list), row); } static void remove_child (GtkWidget *widget, XAppStackSidebar *sidebar) { GtkWidget *row; row = g_hash_table_lookup (sidebar->rows, widget); if (!row) { return; } g_signal_handlers_disconnect_by_func (widget, on_child_updated, sidebar); g_signal_handlers_disconnect_by_func (widget, on_position_updated, sidebar); gtk_container_remove (GTK_CONTAINER (sidebar->list), row); g_hash_table_remove (sidebar->rows, widget); } static void populate_sidebar (XAppStackSidebar *sidebar) { GtkWidget *widget; GtkWidget *row; gtk_container_foreach (GTK_CONTAINER (sidebar->stack), (GtkCallback)add_child, sidebar); widget = gtk_stack_get_visible_child (sidebar->stack); if (widget) { row = g_hash_table_lookup (sidebar->rows, widget); gtk_list_box_select_row (sidebar->list, GTK_LIST_BOX_ROW (row)); } } static void clear_sidebar (XAppStackSidebar *sidebar) { gtk_container_foreach (GTK_CONTAINER (sidebar->stack), (GtkCallback)remove_child, sidebar); } static void on_child_changed (GtkWidget *widget, GParamSpec *pspec, XAppStackSidebar *sidebar) { GtkWidget *child; GtkWidget *row; child = gtk_stack_get_visible_child (GTK_STACK (widget)); row = g_hash_table_lookup (sidebar->rows, child); if (row != NULL) { sidebar->in_child_changed = TRUE; gtk_list_box_select_row (sidebar->list, GTK_LIST_BOX_ROW (row)); sidebar->in_child_changed = FALSE; } } static void on_stack_child_added (GtkContainer *container, GtkWidget *widget, XAppStackSidebar *sidebar) { add_child (widget, sidebar); } static void on_stack_child_removed (GtkContainer *container, GtkWidget *widget, XAppStackSidebar *sidebar) { remove_child (widget, sidebar); } static void disconnect_stack_signals (XAppStackSidebar *sidebar) { g_signal_handlers_disconnect_by_func (sidebar->stack, on_stack_child_added, sidebar); g_signal_handlers_disconnect_by_func (sidebar->stack, on_stack_child_removed, sidebar); g_signal_handlers_disconnect_by_func (sidebar->stack, on_child_changed, sidebar); g_signal_handlers_disconnect_by_func (sidebar->stack, disconnect_stack_signals, sidebar); } static void connect_stack_signals (XAppStackSidebar *sidebar) { g_signal_connect_after (sidebar->stack, "add", G_CALLBACK (on_stack_child_added), sidebar); g_signal_connect_after (sidebar->stack, "remove", G_CALLBACK (on_stack_child_removed), sidebar); g_signal_connect (sidebar->stack, "notify::visible-child", G_CALLBACK (on_child_changed), sidebar); g_signal_connect_swapped (sidebar->stack, "destroy", G_CALLBACK (disconnect_stack_signals), sidebar); } static void xapp_stack_sidebar_dispose (GObject *object) { XAppStackSidebar *sidebar = XAPP_STACK_SIDEBAR (object); xapp_stack_sidebar_set_stack (sidebar, NULL); G_OBJECT_CLASS (xapp_stack_sidebar_parent_class)->dispose (object); } static void xapp_stack_sidebar_finalize (GObject *object) { XAppStackSidebar *sidebar = XAPP_STACK_SIDEBAR (object); g_hash_table_destroy (sidebar->rows); G_OBJECT_CLASS (xapp_stack_sidebar_parent_class)->finalize (object); } static void xapp_stack_sidebar_class_init (XAppStackSidebarClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = xapp_stack_sidebar_dispose; object_class->finalize = xapp_stack_sidebar_finalize; object_class->set_property = xapp_stack_sidebar_set_property; object_class->get_property = xapp_stack_sidebar_get_property; obj_properties[PROP_STACK] = g_param_spec_object ("stack", "Stack", "Associated stack for this XAppStackSidebar", GTK_TYPE_STACK, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, N_PROPERTIES, obj_properties); gtk_widget_class_set_css_name (widget_class, "stacksidebar"); } /** * xapp_stack_sidebar_new: * * Creates a new sidebar. * * Returns: the new #XAppStackSidebar */ XAppStackSidebar * xapp_stack_sidebar_new (void) { return g_object_new (XAPP_TYPE_STACK_SIDEBAR, NULL); } /** * xapp_stack_sidebar_set_stack: * @sidebar: a #XAppStackSidebar * @stack: a #GtkStack * * Set the #GtkStack associated with this #XAppStackSidebar. * * The sidebar widget will automatically update according to the order * (packing) and items within the given #GtkStack. */ void xapp_stack_sidebar_set_stack (XAppStackSidebar *sidebar, GtkStack *stack) { g_return_if_fail (XAPP_IS_STACK_SIDEBAR (sidebar)); g_return_if_fail (GTK_IS_STACK (stack) || stack == NULL); if (sidebar->stack == stack) { return; } if (sidebar->stack) { disconnect_stack_signals (sidebar); clear_sidebar (sidebar); g_clear_object (&sidebar->stack); } if (stack) { sidebar->stack = g_object_ref (stack); populate_sidebar (sidebar); connect_stack_signals (sidebar); } gtk_widget_queue_resize (GTK_WIDGET (sidebar)); g_object_notify (G_OBJECT (sidebar), "stack"); } /** * xapp_stack_sidebar_get_stack: * @sidebar: a #XAppStackSidebar * * Retrieves the stack. * See xapp_stack_sidebar_set_stack(). * * Returns: (nullable) (transfer none): the associated #GtkStack or * %NULL if none has been set explicitly */ GtkStack * xapp_stack_sidebar_get_stack (XAppStackSidebar *sidebar) { g_return_val_if_fail (XAPP_IS_STACK_SIDEBAR (sidebar), NULL); return GTK_STACK (sidebar->stack); } xapps-1.6.10/libxapp/xapp-stack-sidebar.h000066400000000000000000000010741360565754300202440ustar00rootroot00000000000000#ifndef _XAPP_STACK_SIDEBAR_H_ #define _XAPP_STACK_SIDEBAR_H_ #include #include G_BEGIN_DECLS #define XAPP_TYPE_STACK_SIDEBAR (xapp_stack_sidebar_get_type ()) G_DECLARE_FINAL_TYPE (XAppStackSidebar, xapp_stack_sidebar, XAPP, STACK_SIDEBAR, GtkBin) XAppStackSidebar *xapp_stack_sidebar_new (void); void xapp_stack_sidebar_set_stack (XAppStackSidebar *sidebar, GtkStack *stack); GtkStack *xapp_stack_sidebar_get_stack (XAppStackSidebar *sidebar); G_END_DECLS #endif /*_XAPP_STACK_SIDEBAR_H_ */ xapps-1.6.10/libxapp/xapp-status-icon-monitor.c000066400000000000000000000376771360565754300215030ustar00rootroot00000000000000 #include #include #include #include #include #include #include #include #include #include "xapp-status-icon.h" #include "xapp-status-icon-monitor.h" #include "xapp-statusicon-interface.h" #define MONITOR_PATH "/org/x/StatusIconMonitor" #define MONITOR_NAME "org.x.StatusIconMonitor" #define STATUS_ICON_MATCH "org.x.StatusIcon." #define STATUS_ICON_ID_FORMAT "org.x.StatusIcon.PID-%d-%d" #define STATUS_ICON_PATH_PREFIX "/org/x/StatusIcon/" enum { ICON_ADDED, ICON_REMOVED, LAST_SIGNAL }; static guint signals[LAST_SIGNAL] = {0, }; /** * SECTION:xapp-status-icon-monitor * @Short_description: Looks for XAppStatusIcons on DBUS and communicates * info to an applet to represent the icons. * @Title: XAppStatusIconMonitor * * The XAppStatusIconMonitor is intended to be utilized by some status applet * to display info about an app. * * The simplest way to use is to make a new instance of this monitor, and connect * to the #XAppStatusIconMonitor::icon-added and #XAppStatusIconMonitor::icon-removed signals. * The received object for both of these signals is an #XAppStatusIconInterfaceProxy. * It represents an application's #XAppStatusIcon, and has properties available for * describing the icon name, tooltip, label and visibility. * * The proxy also provides methods to handle clicks, which can be called by the applet, * to request that the app display its menu. */ typedef struct { GDBusConnection *connection; GHashTable *icons; gchar *name; guint owner_id; guint listener_id; } XAppStatusIconMonitorPrivate; struct _XAppStatusIconMonitor { GObject parent_instance; }; G_DEFINE_TYPE_WITH_PRIVATE (XAppStatusIconMonitor, xapp_status_icon_monitor, G_TYPE_OBJECT) static void remove_icon (XAppStatusIconMonitor *self, const gchar *name); static void on_proxy_name_owner_changed (GObject *object, GParamSpec *pspec, gpointer user_data) { XAppStatusIconMonitor *self = XAPP_STATUS_ICON_MONITOR (user_data); gchar *name_owner = NULL; gchar *proxy_name = NULL; g_object_get (object, "g-name-owner", &name_owner, "g-name", &proxy_name, NULL); g_debug("XAppStatusIconMonitor: proxy name owner changed - name owner '%s' is now '%s')", proxy_name, name_owner); if (name_owner == NULL) { remove_icon (self, proxy_name); } g_free (name_owner); g_free (proxy_name); } static void remove_icon (XAppStatusIconMonitor *self, const gchar *name) { XAppStatusIconMonitorPrivate *priv = xapp_status_icon_monitor_get_instance_private (self); XAppStatusIconInterface *proxy; proxy = g_hash_table_lookup (priv->icons, name); if (proxy) { g_object_ref (proxy); g_signal_handlers_disconnect_by_func (proxy, on_proxy_name_owner_changed, self); if (g_hash_table_remove (priv->icons, name)) { g_debug("XAppStatusIconMonitor: removing icon: '%s'", name); g_signal_emit (self, signals[ICON_REMOVED], 0, proxy); } else { g_assert_not_reached (); } g_object_unref (proxy); } } static void new_status_icon_proxy_complete (GObject *object, GAsyncResult *res, gpointer user_data) { XAppStatusIconMonitor *self = XAPP_STATUS_ICON_MONITOR (user_data); XAppStatusIconMonitorPrivate *priv = xapp_status_icon_monitor_get_instance_private (self); XAppStatusIconInterface *proxy; GError *error; gchar *g_name; error = NULL; proxy = xapp_status_icon_interface_proxy_new_finish (res, &error); if (error) { g_warning ("Couldn't add status icon: %s", error->message); g_error_free (error); return; } g_signal_connect_object (proxy, "notify::g-name-owner", G_CALLBACK (on_proxy_name_owner_changed), self, 0); g_object_get (proxy, "g-name", &g_name, NULL); g_hash_table_insert (priv->icons, g_name, proxy); g_signal_emit (self, signals[ICON_ADDED], 0, proxy); } static void add_icon (XAppStatusIconMonitor *self, const gchar *name) { XAppStatusIconMonitorPrivate *priv = xapp_status_icon_monitor_get_instance_private (self); gchar *unique_path; gint pid, id; if (sscanf (name, STATUS_ICON_ID_FORMAT, &pid, &id) == 2) { unique_path = g_strdup_printf (STATUS_ICON_PATH_PREFIX "%d", id); g_debug("XAppStatusIconMonitor: adding icon: '%s' with path '%s'", name, unique_path); xapp_status_icon_interface_proxy_new (priv->connection, G_DBUS_PROXY_FLAGS_NONE, name, unique_path, NULL, new_status_icon_proxy_complete, self); g_free (unique_path); } else { g_debug ("XAppStatusIconMonitor: adding icon failed, name '%s' is invalid", name); } } static void on_list_names_completed (GObject *source, GAsyncResult *res, gpointer user_data) { XAppStatusIconMonitor *self = XAPP_STATUS_ICON_MONITOR (user_data); GVariant *result; GVariantIter *iter; gchar *str; GError *error; error = NULL; result = g_dbus_connection_call_finish (G_DBUS_CONNECTION (source), res, &error); if (error != NULL) { g_critical ("XAppStatusIconMonitor: attempt to ListNames failed: %s\n", error->message); g_error_free (error); return; } g_variant_get (result, "(as)", &iter); while (g_variant_iter_loop (iter, "s", &str)) { /* the '.' at the end so we don't catch ourselves in this */ if (g_str_has_prefix (str, STATUS_ICON_MATCH)) { g_debug ("XAppStatusIconMonitor: found icon: %s", str); add_icon (self, str); } } g_variant_iter_free (iter); g_variant_unref (result); } static void find_and_add_icons (XAppStatusIconMonitor *self) { XAppStatusIconMonitorPrivate *priv = xapp_status_icon_monitor_get_instance_private (self); g_debug("XAppStatusIconMonitor: looking for status icons on the bus"); /* If there are no monitors (applets) already running when this is set up, * this won't find anything. The XAppStatusIcons will be in fallback mode, * and will only attempt to switch back after seeing this monitor appear * on the bus, which means they'll show up via our NameOwnerChanged handler. * Basically, this will never find anything if we're the first monitor to appear * on the bus. */ g_dbus_connection_call (priv->connection, "org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus", "ListNames", NULL, G_VARIANT_TYPE ("(as)"), G_DBUS_CALL_FLAGS_NONE, 3000, /* 3 secs */ NULL, on_list_names_completed, self); } static void status_icon_name_appeared (XAppStatusIconMonitor *self, const gchar *name, const gchar *owner) { XAppStatusIconMonitorPrivate *priv = xapp_status_icon_monitor_get_instance_private (self); if (!g_str_has_prefix (name, STATUS_ICON_MATCH)) { return; } if (g_hash_table_contains (priv->icons, name)) { return; } g_debug ("XAppStatusIconMonitor: new icon appeared: %s", name); add_icon (self, name); } static void status_icon_name_vanished (XAppStatusIconMonitor *self, const gchar *name) { if (!g_str_has_prefix (name, STATUS_ICON_MATCH)) { return; } g_debug ("XAppStatusIconMonitor: icon presence vanished: %s", name); remove_icon (self, name); } static void name_owner_changed (GDBusConnection *connection, const gchar *sender_name, const gchar *object_path, const gchar *interface_name, const gchar *signal_name, GVariant *parameters, gpointer user_data) { XAppStatusIconMonitor *self = XAPP_STATUS_ICON_MONITOR (user_data); const gchar *name; const gchar *old_owner; const gchar *new_owner; g_debug("XAppStatusIconMonitor: NameOwnerChanged signal received: %s)", sender_name); g_variant_get (parameters, "(&s&s&s)", &name, &old_owner, &new_owner); if (old_owner[0] != '\0') { status_icon_name_vanished (self, name); } if (new_owner[0] != '\0') { status_icon_name_appeared (self, name, new_owner); } } static void add_name_listener (XAppStatusIconMonitor *self) { XAppStatusIconMonitorPrivate *priv = xapp_status_icon_monitor_get_instance_private (self); g_debug ("XAppStatusIconMonitor: Adding NameOwnerChanged listener for status icons"); priv->listener_id = g_dbus_connection_signal_subscribe (priv->connection, "org.freedesktop.DBus", "org.freedesktop.DBus", "NameOwnerChanged", "/org/freedesktop/DBus", "org.x.StatusIcon", G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_NAMESPACE, name_owner_changed, self, NULL); } static void on_name_lost (GDBusConnection *connection, const gchar *name, gpointer user_data) { if (connection == NULL) { g_warning ("error acquiring session bus"); } } static void on_name_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { XAppStatusIconMonitor *self = XAPP_STATUS_ICON_MONITOR (user_data); g_debug ("XAppStatusIconMonitor: name acquired on dbus"); add_name_listener (self); find_and_add_icons (self); } static void on_bus_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { XAppStatusIconMonitor *self = XAPP_STATUS_ICON_MONITOR (user_data); XAppStatusIconMonitorPrivate *priv = xapp_status_icon_monitor_get_instance_private (self); g_debug ("XAppStatusIconMonitor: session bus connection acquired"); priv->connection = connection; } static void connect_to_bus (XAppStatusIconMonitor *self) { XAppStatusIconMonitorPrivate *priv = xapp_status_icon_monitor_get_instance_private (self); static gint unique_id = 0; char *owner_name = g_strdup_printf("%s.PID-%d-%d", MONITOR_NAME, getpid (), unique_id); unique_id++; g_debug ("XAppStatusIconMonitor: Attempting to acquire presence on dbus as %s", owner_name); priv->owner_id = g_bus_own_name (G_BUS_TYPE_SESSION, owner_name, G_DBUS_CONNECTION_FLAGS_NONE, on_bus_acquired, on_name_acquired, on_name_lost, self, NULL); g_free(owner_name); } static void xapp_status_icon_monitor_init (XAppStatusIconMonitor *self) { XAppStatusIconMonitorPrivate *priv = xapp_status_icon_monitor_get_instance_private (self); priv->name = g_strdup_printf("%s", g_get_application_name()); priv->icons = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); connect_to_bus (self); } static void xapp_status_icon_monitor_dispose (GObject *object) { XAppStatusIconMonitor *self = XAPP_STATUS_ICON_MONITOR (object); XAppStatusIconMonitorPrivate *priv = xapp_status_icon_monitor_get_instance_private (self); g_debug ("XAppStatusIconMonitor dispose (%p)", object); if (priv->connection != NULL) { if (priv->listener_id > 0) { g_dbus_connection_signal_unsubscribe (priv->connection, priv->listener_id); } if (priv->owner_id > 0) { g_bus_unown_name(priv->owner_id); } g_clear_object (&priv->connection); } g_free (priv->name); g_clear_pointer (&priv->icons, g_hash_table_unref); G_OBJECT_CLASS (xapp_status_icon_monitor_parent_class)->dispose (object); } static void xapp_status_icon_monitor_finalize (GObject *object) { g_debug ("XAppStatusIconMonitor finalize (%p)", object); G_OBJECT_CLASS (xapp_status_icon_monitor_parent_class)->dispose (object); } static void xapp_status_icon_monitor_class_init (XAppStatusIconMonitorClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->dispose = xapp_status_icon_monitor_dispose; gobject_class->finalize = xapp_status_icon_monitor_finalize; /** * XAppStatusIconMonitor::icon-added: * @monitor: the #XAppStatusIconMonitor * @proxy: the interface proxy for the #XAppStatusIcon that has been added. * * This signal is emitted by the monitor when it has discovered a new * #XAppStatusIcon on the bus. */ signals[ICON_ADDED] = g_signal_new ("icon-added", XAPP_TYPE_STATUS_ICON_MONITOR, G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, XAPP_TYPE_STATUS_ICON_INTERFACE_PROXY); /** * XAppStatusIconMonitor::icon-removed: * @monitor: the #XAppStatusIconMonitor * @proxy: the #XAppStatusIcon proxy that has been removed. * * This signal is emitted by the monitor when an #XAppStatusIcon has disappeared * from the bus. */ signals[ICON_REMOVED] = g_signal_new ("icon-removed", XAPP_TYPE_STATUS_ICON_MONITOR, G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, XAPP_TYPE_STATUS_ICON_INTERFACE_PROXY); } /** * xapp_status_icon_monitor_list_icons: * @monitor: a #XAppStatusIconMonitor * * List known icon proxies. * * Returns: (element-type XAppStatusIconMonitor) (transfer container): a #GList of icons * * Since: 1.6 */ GList * xapp_status_icon_monitor_list_icons (XAppStatusIconMonitor *monitor) { g_return_val_if_fail (XAPP_IS_STATUS_ICON_MONITOR (monitor), NULL); XAppStatusIconMonitorPrivate *priv = xapp_status_icon_monitor_get_instance_private (monitor); return g_hash_table_get_values (priv->icons); } /** * xapp_status_icon_monitor_new: * * Creates a new monitor. * * Returns: (transfer full): a new #XAppStatusIconMonitor. Use g_object_unref when finished. * * Since: 1.6 */ XAppStatusIconMonitor * xapp_status_icon_monitor_new (void) { return g_object_new (XAPP_TYPE_STATUS_ICON_MONITOR, NULL); } xapps-1.6.10/libxapp/xapp-status-icon-monitor.h000066400000000000000000000010701360565754300214620ustar00rootroot00000000000000#ifndef __XAPP_STATUS_ICON_MONITOR_H__ #define __XAPP_STATUS_ICON_MONITOR_H__ #include #include #include G_BEGIN_DECLS #define XAPP_TYPE_STATUS_ICON_MONITOR (xapp_status_icon_monitor_get_type ()) G_DECLARE_FINAL_TYPE (XAppStatusIconMonitor, xapp_status_icon_monitor, XAPP, STATUS_ICON_MONITOR, GObject) XAppStatusIconMonitor *xapp_status_icon_monitor_new (void); GList *xapp_status_icon_monitor_list_icons (XAppStatusIconMonitor *monitor); G_END_DECLS #endif /* __XAPP_STATUS_ICON_MONITOR_H__ */ xapps-1.6.10/libxapp/xapp-status-icon.c000066400000000000000000001372611360565754300200040ustar00rootroot00000000000000 #include #include #include #include #include #include #include #include #include #include "xapp-status-icon.h" #include "xapp-statusicon-interface.h" #include "xapp-enums.h" #define FDO_DBUS_NAME "org.freedesktop.DBus" #define FDO_DBUS_PATH "/org/freedesktop/DBus" #define ICON_PATH "/org/x/StatusIcon" #define ICON_NAME "org.x.StatusIcon" #define STATUS_ICON_MONITOR_MATCH "org.x.StatusIconMonitor" #define MAX_NAME_FAILS 3 static gint unique_id = 0; enum { BUTTON_PRESS, BUTTON_RELEASE, ACTIVATE, STATE_CHANGED, LAST_SIGNAL }; static guint signals[LAST_SIGNAL] = {0, }; enum { PROP_0, PROP_PRIMARY_MENU, PROP_SECONDARY_MENU, N_PROPERTIES }; /** * SECTION:xapp-status-icon * @Short_description: Broadcasts status information over DBUS * @Title: XAppStatusIcon * * The XAppStatusIcon allows applications to share status info * about themselves. It replaces the obsolete and very similar * Gtk.StatusIcon widget. * * If used in an environment where no applet is handling XAppStatusIcons, * the XAppStatusIcon delegates its calls to a Gtk.StatusIcon. */ typedef struct { XAppStatusIconInterface *skeleton; GDBusConnection *connection; GCancellable *cancellable; GtkStatusIcon *gtk_status_icon; GtkWidget *primary_menu; GtkWidget *secondary_menu; XAppStatusIconState state; gchar *name; gchar *icon_name; gchar *tooltip_text; gchar *label; gboolean visible; guint owner_id; guint listener_id; gint fail_counter; gboolean have_button_press; } XAppStatusIconPrivate; struct _XAppStatusIcon { GObject parent_instance; XAppStatusIconPrivate *priv; }; G_DEFINE_TYPE_WITH_PRIVATE (XAppStatusIcon, xapp_status_icon, G_TYPE_OBJECT) static void refresh_icon (XAppStatusIcon *self); static void use_gtk_status_icon (XAppStatusIcon *self); static void tear_down_dbus (XAppStatusIcon *self); static void cancellable_reset (XAppStatusIcon *self) { if (self->priv->cancellable) { g_cancellable_cancel (self->priv->cancellable); g_object_unref (self->priv->cancellable); } self->priv->cancellable = g_cancellable_new (); } static const gchar * panel_position_to_str (GtkPositionType type) { switch (type) { case GTK_POS_LEFT: return "Left"; case GTK_POS_RIGHT: return "Right"; case GTK_POS_TOP: return "Top"; case GTK_POS_BOTTOM: default: return "Bottom"; } } static const gchar * button_to_str (guint button) { switch (button) { case GDK_BUTTON_PRIMARY: return "Left"; case GDK_BUTTON_SECONDARY: return "Right"; case GDK_BUTTON_MIDDLE: return "Middle"; default: return "Unknown"; } } static const gchar * state_to_str (XAppStatusIconState state) { switch (state) { case XAPP_STATUS_ICON_STATE_NATIVE: return "Native"; case XAPP_STATUS_ICON_STATE_FALLBACK: return "Fallback"; case XAPP_STATUS_ICON_STATE_NO_SUPPORT: return "NoSupport"; default: return "Unknown"; } } static gint adjust_y_for_monitor_bounds (gint init_x, gint init_y, gint menu_height) { GdkDisplay *display = gdk_display_get_default (); GdkMonitor *monitor; GdkRectangle mrect; gint bottom_edge_y; gint ret_y; ret_y = init_y; monitor = gdk_display_get_monitor_at_point (display, init_x, init_y); gdk_monitor_get_workarea (monitor, &mrect); bottom_edge_y = mrect.y + mrect.height; if ((init_y + menu_height) > bottom_edge_y) { ret_y = bottom_edge_y - menu_height; } return ret_y; } typedef struct { gint x; gint y; gint position; guint32 t; } PositionData; static void position_menu_cb (GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer user_data) { GtkAllocation alloc; PositionData *position_data = (PositionData *) user_data; *x = position_data->x; *y = position_data->y; gtk_widget_get_allocation (GTK_WIDGET (menu), &alloc); switch (position_data->position) { case GTK_POS_BOTTOM: *y = *y - alloc.height; break; case GTK_POS_RIGHT: *x = *x - alloc.width; *y = adjust_y_for_monitor_bounds (position_data->x, position_data->y, alloc.height); break; case GTK_POS_LEFT: *y = adjust_y_for_monitor_bounds (position_data->x, position_data->y, alloc.height); break; } *push_in = TRUE; } static void popup_menu (XAppStatusIcon *self, GtkMenu *menu, gint x, gint y, guint button, guint _time, gint panel_position) { GdkDisplay *display; GdkDevice *pointer; g_debug ("XAppStatusIcon: Popup menu on behalf of application"); PositionData position_data = { x, y, panel_position, _time }; display = gdk_display_get_default (); pointer = gdk_device_manager_get_client_pointer (gdk_display_get_device_manager (display)); gtk_menu_popup_for_device (menu, pointer, NULL, NULL, position_menu_cb, &position_data, NULL, button, _time); } static gboolean should_send_activate (XAppStatusIcon *icon, guint button) { gboolean do_activate = TRUE; switch (button) { case GDK_BUTTON_PRIMARY: if (icon->priv->primary_menu) { do_activate = FALSE; } break; case GDK_BUTTON_SECONDARY: if (icon->priv->secondary_menu) { do_activate = FALSE; } break; default: break; } return do_activate; } static gboolean appindicator_can_activate (XAppStatusIcon *icon) { gpointer ptr; gboolean has_activate = FALSE; ptr = g_object_get_data (G_OBJECT (icon), "app-indicator-has-secondary-activate"); if (ptr && GPOINTER_TO_INT (ptr)) { has_activate = TRUE; } return has_activate; } static gboolean handle_appindicator_button_press (XAppStatusIcon *icon, guint button, guint _time) { if (g_object_get_data (G_OBJECT (icon), "app-indicator")) { if (button == GDK_BUTTON_MIDDLE || (button == GDK_BUTTON_PRIMARY && appindicator_can_activate (icon))) { g_debug ("XAppStatusIcon: sending activate for left- or middle-click event (libappindicator)"); g_signal_emit (icon, signals[ACTIVATE], 0, button, _time); } else { g_debug ("XAppStatusIcon: GtkStatusIcon (app-indicator) ignoring %s button press.", button_to_str (button)); } return TRUE; } return FALSE; } static GtkWidget * get_menu_to_use (XAppStatusIcon *icon, guint button) { GtkWidget *menu_to_use = NULL; switch (button) { case GDK_BUTTON_PRIMARY: if (g_object_get_data (G_OBJECT (icon), "app-indicator")) { if (!appindicator_can_activate (icon)) { menu_to_use = icon->priv->secondary_menu; break; } } menu_to_use = icon->priv->primary_menu; break; case GDK_BUTTON_SECONDARY: menu_to_use = icon->priv->secondary_menu; break; } return menu_to_use; } static gboolean handle_click_method (XAppStatusIconInterface *skeleton, GDBusMethodInvocation *invocation, gint x, gint y, guint button, guint _time, gint panel_position, XAppStatusIcon *icon) { const gchar *name = g_dbus_method_invocation_get_method_name (invocation); if (g_strcmp0 (name, "ButtonPress") == 0) { g_debug ("XAppStatusIcon: received ButtonPress from monitor %s: " "pos:%d,%d , button: %s , time: %u , orientation: %s", g_dbus_method_invocation_get_sender (invocation), x, y, button_to_str (button), _time, panel_position_to_str (panel_position)); if (!handle_appindicator_button_press (icon, button, _time)) { if (should_send_activate (icon, button)) { g_debug ("XAppStatusIcon: native sending 'activate' for %s button", button_to_str (button)); g_signal_emit (icon, signals[ACTIVATE], 0, button, _time); } } icon->priv->have_button_press = TRUE; g_signal_emit (icon, signals[BUTTON_PRESS], 0, x, y, button, _time, panel_position); xapp_status_icon_interface_complete_button_press (skeleton, invocation); } else if (g_strcmp0 (name, "ButtonRelease") == 0) { g_debug ("XAppStatusIcon: received ButtonRelease from monitor %s: " "pos:%d,%d , button: %s , time: %u , orientation: %s", g_dbus_method_invocation_get_sender (invocation), x, y, button_to_str (button), _time, panel_position_to_str (panel_position)); if (icon->priv->have_button_press) { GtkWidget *menu_to_use = get_menu_to_use (icon, button); if (menu_to_use) { popup_menu (icon, GTK_MENU (menu_to_use), x, y, button, _time, panel_position); } g_signal_emit (icon, signals[BUTTON_RELEASE], 0, x, y, button, _time, panel_position); } icon->priv->have_button_press = FALSE; xapp_status_icon_interface_complete_button_release (skeleton, invocation); } return TRUE; } static void popup_gtk_status_icon_with_menu (XAppStatusIcon *icon, GtkMenu *menu, GtkStatusIcon *gtk_status_icon, guint button, guint activate_time) { gtk_menu_popup (menu, NULL, NULL, gtk_status_icon_position_menu, gtk_status_icon, button, activate_time); } static void calculate_gtk_status_icon_position_and_orientation (XAppStatusIcon *icon, GtkStatusIcon *status_icon, gint *x, gint *y, gint *orientation) { GdkScreen *screen; GdkRectangle irect; GtkOrientation iorientation; gint final_x, final_y, final_o; final_x = 0; final_y = 0; final_o = 0; if (gtk_status_icon_get_geometry (status_icon, &screen, &irect, &iorientation)) { GdkDisplay *display = gdk_screen_get_display (screen); GdkMonitor *monitor; GdkRectangle mrect; monitor = gdk_display_get_monitor_at_point (display, irect.x + (irect.width / 2), irect.y + (irect.height / 2)); gdk_monitor_get_workarea (monitor, &mrect); switch (iorientation) { case GTK_ORIENTATION_HORIZONTAL: final_x = irect.x; if (irect.y + irect.height + 100 < mrect.y + mrect.height) { final_y = irect.y + irect.height; final_o = GTK_POS_TOP; } else { final_y = irect.y; final_o = GTK_POS_BOTTOM; } break; case GTK_ORIENTATION_VERTICAL: final_y = irect.y; if (irect.x + irect.width + 100 < mrect.x + mrect.width) { final_x = irect.x + irect.width; final_o = GTK_POS_LEFT; } else { final_x = irect.x; final_o = GTK_POS_RIGHT; } } } *x = final_x; *y = final_y; *orientation = final_o; } static gboolean on_gtk_status_icon_button_press (GtkStatusIcon *status_icon, GdkEvent *event, gpointer user_data) { XAppStatusIcon *icon = user_data; guint _time; guint button; gint x, y, orientation; button = event->button.button; _time = event->button.time; /* Button press equates to activate when there's no menu, * but for appindicator, left click and right click will always * bring up the same menu, and only a middle click should activate. */ g_debug ("XAppStatusIcon: GtkStatusIcon button-press-event with %s button", button_to_str (button)); if (!handle_appindicator_button_press (icon, button, _time)) { /* We always send 'activate' for a button that has no corresponding menu, * and for middle clicks. */ if (should_send_activate (icon, button)) { g_debug ("XAppStatusIcon: GtkStatusIcon activated by %s button", button_to_str (button)); g_signal_emit (icon, signals[ACTIVATE], 0, button, _time); } } calculate_gtk_status_icon_position_and_orientation (icon, status_icon, &x, &y, &orientation); icon->priv->have_button_press = TRUE; g_signal_emit (icon, signals[BUTTON_PRESS], 0, x, y, button, _time, orientation); } static void on_gtk_status_icon_button_release (GtkStatusIcon *status_icon, GdkEvent *event, gpointer user_data) { XAppStatusIcon *icon = user_data; guint _time; guint button; gint x, y, orientation; button = event->button.button; _time = event->button.time; g_debug ("XAppStatusIcon: GtkStatusIcon button-release-event with %s button", button_to_str (button)); /* Icons originated in app-indicator have only a single menu, which displays on either * right or left-click. */ if (g_object_get_data (G_OBJECT (status_icon), "app-indicator")) { if (button == GDK_BUTTON_PRIMARY || button == GDK_BUTTON_SECONDARY) { popup_gtk_status_icon_with_menu (icon, GTK_MENU (icon->priv->primary_menu), status_icon, button, _time); } } else { /* Native icons can have two menus, so we must determine which to use based * on the gtk icon event's button. */ GtkWidget *menu_to_use; menu_to_use = get_menu_to_use (icon, button); if (menu_to_use) { g_debug ("XAppStatusIcon: GtkStatusIcon popup menu for %s button", button_to_str (button)); popup_gtk_status_icon_with_menu (icon, GTK_MENU (menu_to_use), status_icon, button, _time); } } calculate_gtk_status_icon_position_and_orientation (icon, status_icon, &x, &y, &orientation); icon->priv->have_button_press = FALSE; g_signal_emit (icon, signals[BUTTON_RELEASE], 0, x, y, button, _time, orientation); } static void name_owner_changed (GDBusConnection *connection, const gchar *sender_name, const gchar *object_path, const gchar *interface_name, const gchar *signal_name, GVariant *parameters, gpointer user_data) { XAppStatusIcon *self = XAPP_STATUS_ICON (user_data); g_debug("XAppStatusIcon: NameOwnerChanged signal received, refreshing icon"); refresh_icon (self); } static void add_name_listener (XAppStatusIcon *self) { g_debug ("XAppStatusIcon: Adding NameOwnerChanged listener for status monitors"); self->priv->listener_id = g_dbus_connection_signal_subscribe (self->priv->connection, FDO_DBUS_NAME, FDO_DBUS_NAME, "NameOwnerChanged", FDO_DBUS_PATH, STATUS_ICON_MONITOR_MATCH, G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_NAMESPACE, name_owner_changed, self, NULL); } static void on_name_lost (GDBusConnection *connection, const gchar *name, gpointer user_data) { XAppStatusIcon *self = XAPP_STATUS_ICON (user_data); g_warning ("XAppStatusIcon: lost or could not acquire presence on dbus. Refreshing."); self->priv->fail_counter++; refresh_icon (self); } static void sync_skeleton (XAppStatusIcon *self) { XAppStatusIconPrivate *priv = self->priv; priv->fail_counter = 0; g_clear_object (&self->priv->gtk_status_icon); g_object_set (G_OBJECT (priv->skeleton), "name", priv->name, "label", priv->label, "icon-name", priv->icon_name, "tooltip-text", priv->tooltip_text, "visible", priv->visible, NULL); g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (priv->skeleton)); } static void on_name_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { XAppStatusIcon *self = XAPP_STATUS_ICON (user_data); self->priv->state = XAPP_STATUS_ICON_STATE_NATIVE; sync_skeleton (self); g_debug ("XAppStatusIcon: name acquired on dbus, syncing icon properties. State is now: %s", state_to_str (self->priv->state)); g_signal_emit (self, signals[STATE_CHANGED], 0, self->priv->state); } typedef struct { const gchar *signal_name; gpointer callback; } SkeletonSignal; static SkeletonSignal skeleton_signals[] = { // signal name callback { "handle-button-press", handle_click_method }, { "handle-button-release", handle_click_method } }; static gboolean export_icon_interface (XAppStatusIcon *self) { GError *error = NULL; gint i; gchar *unique_path; if (self->priv->skeleton) { return TRUE; } self->priv->skeleton = xapp_status_icon_interface_skeleton_new (); unique_path = g_strdup_printf (ICON_PATH "/%d", unique_id); g_debug ("XAppStatusIcon: exporting StatusIcon dbus interface to %s", unique_path); g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (self->priv->skeleton), self->priv->connection, unique_path, &error); g_free (unique_path); if (error != NULL) { g_critical ("XAppStatusIcon: could not export StatusIcon interface: %s", error->message); g_error_free (error); return FALSE; } for (i = 0; i < G_N_ELEMENTS (skeleton_signals); i++) { SkeletonSignal sig = skeleton_signals[i]; g_signal_connect (self->priv->skeleton, sig.signal_name, G_CALLBACK (sig.callback), self); } return TRUE; } static void connect_with_status_applet (XAppStatusIcon *self) { char *owner_name = g_strdup_printf("%s.PID-%d-%d", ICON_NAME, getpid (), unique_id); unique_id++; g_debug ("XAppStatusIcon: Attempting to acquire presence on dbus as %s", owner_name); self->priv->owner_id = g_bus_own_name_on_connection (self->priv->connection, owner_name, G_DBUS_CONNECTION_FLAGS_NONE, on_name_acquired, on_name_lost, self, NULL); g_free(owner_name); } static void update_fallback_icon (XAppStatusIcon *self) { XAppStatusIconPrivate *priv = self->priv; if (!priv->gtk_status_icon) { return; } gtk_status_icon_set_tooltip_text (priv->gtk_status_icon, priv->tooltip_text); gtk_status_icon_set_name (priv->gtk_status_icon, priv->name); if (priv->icon_name) { gtk_status_icon_set_visible (priv->gtk_status_icon, priv->visible); if (g_path_is_absolute (priv->icon_name)) { gtk_status_icon_set_from_file (priv->gtk_status_icon, priv->icon_name); } else { gtk_status_icon_set_from_icon_name (priv->gtk_status_icon, priv->icon_name); } } else { gtk_status_icon_set_visible (priv->gtk_status_icon, FALSE); } } static void on_gtk_status_icon_embedded_changed (GtkStatusIcon *icon, GParamSpec *pspec, gpointer user_data) { g_return_if_fail (GTK_IS_STATUS_ICON (icon)); XAppStatusIcon *self = XAPP_STATUS_ICON (user_data); XAppStatusIconPrivate *priv = self->priv; if (gtk_status_icon_is_embedded (icon)) { priv->state = XAPP_STATUS_ICON_STATE_FALLBACK; } else { priv->state = XAPP_STATUS_ICON_STATE_NO_SUPPORT; } g_debug ("XAppStatusIcon fallback icon embedded_changed. State is now %s", state_to_str (priv->state)); g_signal_emit (self, signals[STATE_CHANGED], 0, priv->state); } static void use_gtk_status_icon (XAppStatusIcon *self) { XAppStatusIconPrivate *priv = self->priv; g_debug ("XAppStatusIcon: falling back to GtkStatusIcon"); tear_down_dbus (self); // Make sure there wasn't already one g_clear_object (&self->priv->gtk_status_icon); self->priv->gtk_status_icon = gtk_status_icon_new (); g_signal_connect (priv->gtk_status_icon, "button-press-event", G_CALLBACK (on_gtk_status_icon_button_press), self); g_signal_connect (priv->gtk_status_icon, "button-release-event", G_CALLBACK (on_gtk_status_icon_button_release), self); g_signal_connect (priv->gtk_status_icon, "notify::embedded", G_CALLBACK (on_gtk_status_icon_embedded_changed), self); update_fallback_icon (self); } static void on_list_names_completed (GObject *source, GAsyncResult *res, gpointer user_data) { XAppStatusIcon *self = XAPP_STATUS_ICON(user_data); GVariant *result; GVariantIter *iter; gchar *str; GError *error; gboolean found; error = NULL; result = g_dbus_connection_call_finish (G_DBUS_CONNECTION (source), res, &error); if (error != NULL) { if (error->code != G_IO_ERROR_CANCELLED) { g_critical ("XAppStatusIcon: attempt to ListNames failed: %s\n", error->message); use_gtk_status_icon (self); } else { g_debug ("XAppStatusIcon: attempt to ListNames cancelled"); } g_error_free (error); return; } g_variant_get (result, "(as)", &iter); found = FALSE; while (g_variant_iter_loop (iter, "s", &str)) { if (g_str_has_prefix (str, STATUS_ICON_MONITOR_MATCH)) { g_debug ("XAppStatusIcon: Discovered active status monitor (%s)", str); found = TRUE; } } g_variant_iter_free (iter); g_variant_unref (result); if (found && export_icon_interface (self)) { if (self->priv->owner_id > 0) { g_debug ("XAppStatusIcon: We already exist on the bus, syncing icon properties"); sync_skeleton (self); } else { connect_with_status_applet (self); return; } } else { use_gtk_status_icon (self); } } static void look_for_status_applet (XAppStatusIcon *self) { // Check that there is at least one applet on DBUS g_debug("XAppStatusIcon: Looking for status monitors"); cancellable_reset (self); g_dbus_connection_call (self->priv->connection, FDO_DBUS_NAME, FDO_DBUS_PATH, FDO_DBUS_NAME, "ListNames", NULL, G_VARIANT_TYPE ("(as)"), G_DBUS_CALL_FLAGS_NONE, 3000, /* 3 secs */ self->priv->cancellable, on_list_names_completed, self); } static void complete_icon_setup (XAppStatusIcon *self) { if (self->priv->listener_id == 0) { add_name_listener (self); } /* There is a potential loop in the g_bus_own_name sequence - * if we fail to acquire a name, we refresh again and potentially * fail again. If we fail more than MAX_NAME_FAILS, then quit trying * and just use the fallback icon It's pretty unlikely for*/ if (self->priv->fail_counter == MAX_NAME_FAILS) { use_gtk_status_icon (self); return; } look_for_status_applet (self); } static void on_session_bus_connected (GObject *source, GAsyncResult *res, gpointer user_data) { XAppStatusIcon *self = XAPP_STATUS_ICON (user_data); GError *error; error = NULL; self->priv->connection = g_bus_get_finish (res, &error); if (error != NULL) { if (error->code != G_IO_ERROR_CANCELLED) { g_critical ("XAppStatusIcon: Unable to acquire session bus: %s", error->message); /* If we never get a connection, we use the Gtk icon exclusively, and will never * re-try. FIXME? this is unlikely to happen, so I don't see the point in trying * later, as there are probably bigger problems in this case. */ use_gtk_status_icon (self); } else { g_debug ("XAppStatusIcon: Cancelled session bus acquire"); } g_error_free (error); return; } if (self->priv->connection) { complete_icon_setup (self); return; } use_gtk_status_icon (self); } static void refresh_icon (XAppStatusIcon *self) { if (!self->priv->connection) { g_debug ("XAppStatusIcon: Trying to acquire session bus connection"); cancellable_reset (self); g_bus_get (G_BUS_TYPE_SESSION, self->priv->cancellable, on_session_bus_connected, self); } else { complete_icon_setup (self); } } static void xapp_status_icon_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_PRIMARY_MENU: xapp_status_icon_set_primary_menu (XAPP_STATUS_ICON (object), g_value_get_object (value)); break; case PROP_SECONDARY_MENU: xapp_status_icon_set_secondary_menu (XAPP_STATUS_ICON (object), g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void xapp_status_icon_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { XAppStatusIcon *icon = XAPP_STATUS_ICON (object); switch (prop_id) { case PROP_PRIMARY_MENU: g_value_set_object (value, icon->priv->primary_menu); break; case PROP_SECONDARY_MENU: g_value_set_object (value, icon->priv->secondary_menu); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void xapp_status_icon_init (XAppStatusIcon *self) { self->priv = xapp_status_icon_get_instance_private (self); self->priv->name = g_strdup_printf("%s", g_get_application_name()); self->priv->state = XAPP_STATUS_ICON_STATE_NO_SUPPORT; g_debug ("XAppStatusIcon: init: application name: '%s'", self->priv->name); // Default to visible (the same behavior as GtkStatusIcon) self->priv->visible = TRUE; refresh_icon (self); } static void tear_down_dbus (XAppStatusIcon *self) { g_return_if_fail (XAPP_IS_STATUS_ICON (self)); if (self->priv->owner_id > 0) { g_debug ("XAppStatusIcon: removing dbus presence (%p)", self); g_bus_unown_name(self->priv->owner_id); self->priv->owner_id = 0; } if (self->priv->skeleton) { g_debug ("XAppStatusIcon: removing dbus interface (%p)", self); g_dbus_interface_skeleton_unexport (G_DBUS_INTERFACE_SKELETON (self->priv->skeleton)); g_object_unref (self->priv->skeleton); self->priv->skeleton = NULL; } } static void xapp_status_icon_dispose (GObject *object) { XAppStatusIcon *self = XAPP_STATUS_ICON (object); g_debug ("XAppStatusIcon dispose (%p)", object); g_free (self->priv->name); g_free (self->priv->icon_name); g_free (self->priv->tooltip_text); g_free (self->priv->label); g_clear_object (&self->priv->cancellable); g_clear_object (&self->priv->primary_menu); g_clear_object (&self->priv->secondary_menu); g_signal_handlers_disconnect_by_func (self->priv->gtk_status_icon, on_gtk_status_icon_button_press, self); g_signal_handlers_disconnect_by_func (self->priv->gtk_status_icon, on_gtk_status_icon_button_release, self); g_clear_object (&self->priv->gtk_status_icon); tear_down_dbus (self); if (self->priv->listener_id > 0) { g_dbus_connection_signal_unsubscribe (self->priv->connection, self->priv->listener_id); } g_clear_object (&self->priv->connection); G_OBJECT_CLASS (xapp_status_icon_parent_class)->dispose (object); } static void xapp_status_icon_finalize (GObject *object) { g_debug ("XAppStatusIcon finalize (%p)", object); g_clear_object (&XAPP_STATUS_ICON (object)->priv->cancellable); G_OBJECT_CLASS (xapp_status_icon_parent_class)->finalize (object); } static void xapp_status_icon_class_init (XAppStatusIconClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->dispose = xapp_status_icon_dispose; gobject_class->finalize = xapp_status_icon_finalize; gobject_class->set_property = xapp_status_icon_set_property; gobject_class->get_property = xapp_status_icon_get_property; /** * XAppStatusIcon:primary-menu: * * A #GtkMenu to use when requested by the remote monitor via a left (or primary) click. * * When this property is not %NULL, the menu will be automatically positioned and * displayed during a primary button release. * * When this property IS %NULL, the #XAppStatusIcon::activate will be sent for primary * button presses. * * In both cases, the #XAppStatusIcon::button-press-event and #XAppStatusIcon::button-release-events * will be fired like normal. * * Setting this will remove any floating reference to the menu and assume ownership. * As a result, it is not necessary to maintain a reference to it in the parent * application (or unref it when finished with it - if you wish to replace the menu, * simply call this method again with a new menu. * * The same #GtkMenu widget can be set as both the primary and secondary. */ g_object_class_install_property (gobject_class, PROP_PRIMARY_MENU, g_param_spec_object ("primary-menu", "Status icon primary (left-click) menu", "A menu to bring up when the status icon is left-clicked", GTK_TYPE_WIDGET, G_PARAM_READWRITE)); /** * XAppStatusIcon:secondary-menu: * * A #GtkMenu to use when requested by the remote monitor via a right (or secondary) click. * * When this property is not %NULL, the menu will be automatically positioned and * displayed during a secondary button release. * * When this property IS %NULL, the #XAppStatusIcon::activate will be sent for secondary * button presses. * * In both cases, the #XAppStatusIcon::button-press-event and #XAppStatusIcon::button-release-events * will be fired like normal. * * Setting this will remove any floating reference to the menu and assume ownership. * As a result, it is not necessary to maintain a reference to it in the parent * application (or unref it when finished with it - if you wish to replace the menu, * simply call this method again with a new menu. * * The same #GtkMenu widget can be set as both the primary and secondary. */ g_object_class_install_property (gobject_class, PROP_SECONDARY_MENU, g_param_spec_object ("secondary-menu", "Status icon secondary (right-click) menu", "A menu to bring up when the status icon is right-clicked", GTK_TYPE_WIDGET, G_PARAM_READWRITE)); /** * XAppStatusIcon::button-press-event: * @icon: The #XAppStatusIcon * @x: The absolute x position to use for menu positioning * @y: The absolute y position to use for menu positioning * @button: The button that was pressed * @time: The time supplied by the event, or 0 * @panel_position: The #GtkPositionType to use for menu positioning * * Gets emitted when there is a button press received from an applet */ signals[BUTTON_PRESS] = g_signal_new ("button-press-event", XAPP_TYPE_STATUS_ICON, G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, 0, NULL, NULL, NULL, G_TYPE_NONE, 5, G_TYPE_INT, G_TYPE_INT, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_INT); /** * XAppStatusIcon::button-release-event: * @icon: The #XAppStatusIcon * @x: The absolute x position to use for menu positioning * @y: The absolute y position to use for menu positioning * @button: The button that was released * @time: The time supplied by the event, or 0 * @panel_position: The #GtkPositionType to use for menu positioning * * Gets emitted when there is a button release received from an applet */ signals[BUTTON_RELEASE] = g_signal_new ("button-release-event", XAPP_TYPE_STATUS_ICON, G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, 0, NULL, NULL, NULL, G_TYPE_NONE, 5, G_TYPE_INT, G_TYPE_INT, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_INT); /** * XAppStatusIcon::activate: * @icon: The #XAppStatusIcon * @button: The button that was pressed * @time: The time supplied by the event, or 0 * * Gets emitted when the user activates the status icon. If the XAppStatusIcon:primary-menu or * XAppStatusIcon:secondary-menu is not %NULL, this signal is skipped for the respective button * presses. A middle button click will always send this signal when pressed. */ signals [ACTIVATE] = g_signal_new ("activate", XAPP_TYPE_STATUS_ICON, G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, 0, NULL, NULL, NULL, G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT); /** * XAppStatusIcon::state-changed: * @icon: The #XAppStatusIcon * @new_state: The new #XAppStatusIconState of the icon * * Gets emitted when the state of the icon changes. If you wish * to react to changes in how the status icon is being handled * (perhaps to alter the menu or other click behavior), you should * connect to this - see #XAppStatusIconState for more details. */ signals [STATE_CHANGED] = g_signal_new ("state-changed", XAPP_TYPE_STATUS_ICON, G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, XAPP_TYPE_STATUS_ICON_STATE); } /** * xapp_status_icon_set_name: * @icon: a #XAppStatusIcon * @name: a name (this defaults to the name of the application, if not set) * * Sets the status icon name. This is not shown to users. * * Since: 1.6 */ void xapp_status_icon_set_name (XAppStatusIcon *icon, const gchar *name) { g_return_if_fail (XAPP_IS_STATUS_ICON (icon)); g_clear_pointer (&icon->priv->name, g_free); icon->priv->name = g_strdup (name); g_debug ("XAppStatusIcon set_name: %s", name); if (icon->priv->skeleton) { xapp_status_icon_interface_set_name (icon->priv->skeleton, name); } update_fallback_icon (icon); } /** * xapp_status_icon_set_icon_name: * @icon: a #XAppStatusIcon * @icon_name: An icon name or absolute path to an icon. * * Sets the icon name or local path to use. * * Since: 1.6 */ void xapp_status_icon_set_icon_name (XAppStatusIcon *icon, const gchar *icon_name) { g_return_if_fail (XAPP_IS_STATUS_ICON (icon)); g_clear_pointer (&icon->priv->icon_name, g_free); icon->priv->icon_name = g_strdup (icon_name); g_debug ("XAppStatusIcon set_icon_name: %s", icon_name); if (icon->priv->skeleton) { xapp_status_icon_interface_set_icon_name (icon->priv->skeleton, icon_name); } update_fallback_icon (icon); } /** * xapp_status_icon_set_tooltip_text: * @icon: a #XAppStatusIcon * @tooltip_text: the text to show in the tooltip * * Sets the tooltip text * * Since: 1.6 */ void xapp_status_icon_set_tooltip_text (XAppStatusIcon *icon, const gchar *tooltip_text) { g_return_if_fail (XAPP_IS_STATUS_ICON (icon)); g_clear_pointer (&icon->priv->tooltip_text, g_free); icon->priv->tooltip_text = g_strdup (tooltip_text); g_debug ("XAppStatusIcon set_tooltip_text: %s", tooltip_text); if (icon->priv->skeleton) { xapp_status_icon_interface_set_tooltip_text (icon->priv->skeleton, tooltip_text); } update_fallback_icon (icon); } /** * xapp_status_icon_set_label: * @icon: a #XAppStatusIcon * @label: some text * * Sets a label, shown beside the icon * * Since: 1.6 */ void xapp_status_icon_set_label (XAppStatusIcon *icon, const gchar *label) { g_return_if_fail (XAPP_IS_STATUS_ICON (icon)); g_clear_pointer (&icon->priv->label, g_free); icon->priv->label = g_strdup (label); g_debug ("XAppStatusIcon set_label: '%s'", label); if (icon->priv->skeleton) { xapp_status_icon_interface_set_label (icon->priv->skeleton, label); } } /** * xapp_status_icon_set_visible: * @icon: a #XAppStatusIcon * @visible: whether or not the status icon should be visible * * Sets the visibility of the status icon * * Since: 1.6 */ void xapp_status_icon_set_visible (XAppStatusIcon *icon, const gboolean visible) { g_return_if_fail (XAPP_IS_STATUS_ICON (icon)); icon->priv->visible = visible; g_debug ("XAppStatusIcon set_visible: %s", visible ? "TRUE" : "FALSE"); if (icon->priv->skeleton) { xapp_status_icon_interface_set_visible (icon->priv->skeleton, visible); } update_fallback_icon (icon); } /** * xapp_status_icon_set_primary_menu: * @icon: an #XAppStatusIcon * @menu: (nullable): A #GtkMenu to display when the primary mouse button is released. * * See the #XAppStatusIcon:primary-menu property for details * * Since: 1.6 */ void xapp_status_icon_set_primary_menu (XAppStatusIcon *icon, GtkMenu *menu) { g_return_if_fail (XAPP_IS_STATUS_ICON (icon)); g_clear_object (&icon->priv->primary_menu); g_debug ("XAppStatusIcon set_primary_menu: %p", menu); if (menu) { icon->priv->primary_menu = GTK_WIDGET (g_object_ref_sink (menu)); } } /** * xapp_status_icon_get_primary_menu: * @icon: an #XAppStatusIcon * * Returns a pointer to a #GtkMenu that was set previously for the * primary mouse button. If no menu was set, this returns %NULL. * * Returns: (transfer none): the #GtkMenu or %NULL if none was set. * Since: 1.6 */ GtkWidget * xapp_status_icon_get_primary_menu (XAppStatusIcon *icon) { g_return_val_if_fail (XAPP_IS_STATUS_ICON (icon), NULL); g_debug ("XAppStatusIcon get_menu: %p", icon->priv->primary_menu); return icon->priv->primary_menu; } /** * xapp_status_icon_set_secondary_menu: * @icon: an #XAppStatusIcon * @menu: (nullable): A #GtkMenu to display when the primary mouse button is released. * * See the #XAppStatusIcon:secondary-menu property for details * * Since: 1.6 */ void xapp_status_icon_set_secondary_menu (XAppStatusIcon *icon, GtkMenu *menu) { g_return_if_fail (XAPP_IS_STATUS_ICON (icon)); g_clear_object (&icon->priv->secondary_menu); g_debug ("XAppStatusIcon set_secondary_menu: %p", menu); if (menu) { icon->priv->secondary_menu = GTK_WIDGET (g_object_ref_sink (menu)); } } /** * xapp_status_icon_get_secondary_menu: * @icon: an #XAppStatusIcon * * Returns a pointer to a #GtkMenu that was set previously for the * secondary mouse button. If no menu was set, this returns %NULL. * * Returns: (transfer none): the #GtkMenu or %NULL if none was set. * Since: 1.6 */ GtkWidget * xapp_status_icon_get_secondary_menu (XAppStatusIcon *icon) { g_return_val_if_fail (XAPP_IS_STATUS_ICON (icon), NULL); g_debug ("XAppStatusIcon get_menu: %p", icon->priv->secondary_menu); return icon->priv->secondary_menu; } /** * xapp_status_icon_new: * * Creates a new #XAppStatusIcon instance * * Returns: (transfer full): a new #XAppStatusIcon. Use g_object_unref when finished. * * Since: 1.6 */ XAppStatusIcon * xapp_status_icon_new (void) { return g_object_new (XAPP_TYPE_STATUS_ICON, NULL); } /** * xapp_status_icon_get_state: * @icon: an #XAppStatusIcon * * Gets the current #XAppStatusIconState of icon. The state is determined by whether * the icon is being displayed by an #XAppStatusMonitor client, a fallback tray icon, * or not being displayed at all. * * See #XAppStatusIconState for more details. * * Returns: the icon's state. * * Since: 1.6 */ XAppStatusIconState xapp_status_icon_get_state (XAppStatusIcon *icon) { g_return_val_if_fail (XAPP_IS_STATUS_ICON (icon), XAPP_STATUS_ICON_STATE_NO_SUPPORT); g_debug ("XAppStatusIcon get_state: %s", state_to_str (icon->priv->state)); return icon->priv->state; } /** * xapp_status_icon_any_monitors: * * Looks for the existence of any active #XAppStatusIconMonitors on the bus. * * Returns: %TRUE if at least one monitor was found. * * Since: 1.6 */ gboolean xapp_status_icon_any_monitors (void) { GDBusConnection *connection; GError *error; gboolean found; g_debug("XAppStatusIcon: any_monitors: Looking for status monitors"); error = NULL; found = FALSE; connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); if (connection) { GVariant *result; result = g_dbus_connection_call_sync (connection, FDO_DBUS_NAME, FDO_DBUS_PATH, FDO_DBUS_NAME, "ListNames", NULL, G_VARIANT_TYPE ("(as)"), G_DBUS_CALL_FLAGS_NONE, /* 10 seconds */ 10 * 1000, NULL, &error); if (result) { GVariantIter *iter; gchar *str; g_variant_get (result, "(as)", &iter); found = FALSE; while (g_variant_iter_loop (iter, "s", &str)) { if (g_str_has_prefix (str, STATUS_ICON_MONITOR_MATCH)) { g_debug ("XAppStatusIcon: any_monitors: discovered active status monitor (%s)", str); found = TRUE; g_free (str); break; } } g_variant_iter_free (iter); g_variant_unref (result); } g_object_unref (connection); } if (error) { g_warning ("XAppStatusIcon: any_monitors: Unable to check for monitors: %s", error->message); g_error_free (error); } g_debug ("XAppStatusIcon: any_monitors: %s", found ? "TRUE" : "FALSE"); return found; } xapps-1.6.10/libxapp/xapp-status-icon.h000066400000000000000000000037131360565754300200030ustar00rootroot00000000000000#ifndef __XAPP_STATUS_ICON_H__ #define __XAPP_STATUS_ICON_H__ #include #include #include G_BEGIN_DECLS #define XAPP_TYPE_STATUS_ICON (xapp_status_icon_get_type ()) G_DECLARE_FINAL_TYPE (XAppStatusIcon, xapp_status_icon, XAPP, STATUS_ICON, GObject) /** * XAppStatusIconState: * @XAPP_STATUS_ICON_STATE_NATIVE: The #XAppStatusIcon is currently being handled * by an #XAppStatusIconMonitor (usually in an applet). * @XAPP_STATUS_ICON_STATE_FALLBACK: The #XAppStatusIcon is currently being handled * by a legacy system tray implementation (using GtkStatusIcon). * @XAPP_STATUS_ICON_STATE_NO_SUPPORT: The #XAppStatusIcon is not currently being handled by any * kind of status icon implementation. */ typedef enum { XAPP_STATUS_ICON_STATE_NATIVE, XAPP_STATUS_ICON_STATE_FALLBACK, XAPP_STATUS_ICON_STATE_NO_SUPPORT } XAppStatusIconState; XAppStatusIcon *xapp_status_icon_new (void); void xapp_status_icon_set_name (XAppStatusIcon *icon, const gchar *name); void xapp_status_icon_set_icon_name (XAppStatusIcon *icon, const gchar *icon_name); void xapp_status_icon_set_tooltip_text (XAppStatusIcon *icon, const gchar *tooltip_text); void xapp_status_icon_set_label (XAppStatusIcon *icon, const gchar *label); void xapp_status_icon_set_visible (XAppStatusIcon *icon, const gboolean visible); void xapp_status_icon_set_primary_menu (XAppStatusIcon *icon, GtkMenu *menu); GtkWidget *xapp_status_icon_get_primary_menu (XAppStatusIcon *icon); void xapp_status_icon_set_secondary_menu (XAppStatusIcon *icon, GtkMenu *menu); GtkWidget *xapp_status_icon_get_secondary_menu (XAppStatusIcon *icon); XAppStatusIconState xapp_status_icon_get_state (XAppStatusIcon *icon); /* static */ gboolean xapp_status_icon_any_monitors (void); G_END_DECLS #endif /* __XAPP_STATUS_ICON_H__ */ xapps-1.6.10/makedoc000077500000000000000000000007201360565754300143000ustar00rootroot00000000000000#!/usr/bin/python3 # This script is used to update the docs in docs/reference # which are served at http://developer.linuxmint.com/xapps/reference/index.html. import os import sys SRC="debian/tmp/usr/share/gtk-doc/html/libxapp/" if not os.path.exists(SRC): print("Build first, with dpkg-buildpackage") sys.exit(1) os.system("rm -rf docs/reference/*") os.system("cp -R %s/* docs/reference/" % SRC) print ("Docs updated, you can now commit and push.") xapps-1.6.10/makepot000077500000000000000000000006151360565754300143400ustar00rootroot00000000000000#!/bin/bash rm -f xapp.pot touch xapp.pot xgettext --language=C --add-comments --keyword=_ --keyword=N_ --output=xapp.pot libxapp/*.c xgettext --language=Python --add-comments --keyword=_ --join-existing --output=xapp.pot status-applets/*/*.py xgettext --language=Desktop --join-existing --add-comments \ -k --keyword=Name --keyword=Description --output=xapp.pot status-applets/*/*.in xapps-1.6.10/meson.build000066400000000000000000000013751360565754300151200ustar00rootroot00000000000000project('xapp', 'c', version : '1.6.10' ) gnome = import('gnome') pkg = import('pkgconfig') i18n = import('i18n') cdata = configuration_data() cdata.set('GETTEXT_PACKAGE', '"xapp"') add_global_arguments([ '-Wunused', '-Wimplicit-function-declaration' ], language: 'c' ) if not get_option('deprecated_warnings') add_global_arguments([ '-Wno-deprecated-declarations', '-Wno-deprecated', '-Wno-declaration-after-statement', ], language: 'c', ) endif c = configure_file(output : 'config.h', configuration : cdata ) top_inc = include_directories('.') subdir('libxapp') subdir('po') subdir('pygobject') subdir('files') subdir('schemas') subdir('status-applets') if get_option('docs') subdir('docs') endif xapps-1.6.10/meson_options.txt000066400000000000000000000003701360565754300164050ustar00rootroot00000000000000option('docs', type: 'boolean', value: false, description: 'Build the API references (requires gtk-doc)' ) option('deprecated_warnings', type : 'boolean', value : false, description: 'Show build warnings for deprecations' ) xapps-1.6.10/po/000077500000000000000000000000001360565754300133665ustar00rootroot00000000000000xapps-1.6.10/po/LINGUAS000066400000000000000000000002511360565754300144110ustar00rootroot00000000000000am ar az bg bn ca ca@valencia cs cy da de en_GB el eo es et eu fi fr hi hr hu ia id ie is it ja kab kk ko ku lt ms nl pl pt pt_BR ro ru sk sl sr sv tr uk uz zh_CN zh_TW xapps-1.6.10/po/am.po000066400000000000000000000100721360565754300143230ustar00rootroot00000000000000# Amharic translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-12-01 17:01+0000\n" "Last-Translator: samson \n" "Language-Team: Amharic \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "የ ምልክት መጠን" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "የ ተመረጠው የ ምልክት መጠን" #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "ምልክት" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "ምልክቱን የሚወክለው ሀረግ" #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "ምድብ" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "ነባር ምድብ" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "ተግባሮች" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "መተግበሪያ" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "ምድቦች" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "አካላቶች" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "አርማዎች" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "ኢሞጂ" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "የ Mime አይነቶች" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "ቦታዎች" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "ሁኔታው" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "ሌሎች" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "ምልክት ይምረጡ" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "መፈለጊያ" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "መቃኛ" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "በ መጫን ላይ..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "ነባር" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "ይምረጡ" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "መሰረዣ" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "መንገድ መፍቀጃ" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "መንገዱ ይፈቀድ እንደሆን" #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "ነባር ምልክቶች" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "የ ምስል ፋይል ይምረጡ" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "መክፈቻ" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "ምስል" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "ስለ" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/po/ar.po000066400000000000000000000073171360565754300143400ustar00rootroot00000000000000# Arabic translation for linuxmint # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-03-16 22:57+0000\n" "Last-Translator: Ibrahim Saed \n" "Language-Team: Arabic \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "حجم الأيقونة" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "حجم الأيقونة المفضل" #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "الأيقونة" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "" #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "الإجراءات" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "التطبيقات" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "التصنيفات" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "الأجهزة" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "الرموز التعبيرية" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/po/az.po000066400000000000000000000075411360565754300143470ustar00rootroot00000000000000# Azerbaijani translation for linuxmint # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-05-15 17:29+0000\n" "Last-Translator: Nasimi Taghizade \n" "Language-Team: Azerbaijani \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Icon ölçüsü" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Tərcih edilən ikon ölçüsü." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "İkon" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "İkonu təmsil edən sətir." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Tədbirlər" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Programlar" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Kateqoriyalar" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Qurğular" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Emblemlər" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emojilər" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Mime növləri" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Yerlər" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Status" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Digər" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "İkona seçin" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Axtarış" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Axtar" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Yuklənmə gedir" #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Seç" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "İmtina" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Axtarış yoluna icazə ver" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Axtarış yoluna icazə verilsinmi." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "İmaj faylını sec" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Açın" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "İmaj" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/po/bg.po000066400000000000000000000107271360565754300143250ustar00rootroot00000000000000# Bulgarian translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-15 11:16+0000\n" "Last-Translator: spacy01 \n" "Language-Team: Bulgarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Размер на иконите" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Предпочитан размер на иконките." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Иконка" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Реда представящ иконката." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Категория" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Категория по подразбиране." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Действия" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Приложения" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Категории" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Устройства" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Емблеми" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Емоджи" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Mime типове" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Места" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Състояние" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Други" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Избор на иконка" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Търсене" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Преглед" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Зареждане..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Подразбиране" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Избери" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Отказ" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Разреши път" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Дали да се резреши път." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Икона по подразбиране" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Иконка която ще се използва по подразбиране" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Избор на файл с изображение" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Отвори" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Образ" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Относно" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Зона където Xapp иконката за състояние ще се показва" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "Съставяне на Xapp аплет на състоянието" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "Xapp аплет на състоянието" xapps-1.6.10/po/bn.po000066400000000000000000000105431360565754300143300ustar00rootroot00000000000000# Bengali translation for linuxmint # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-05-12 19:03+0000\n" "Last-Translator: Soham Sen \n" "Language-Team: Bengali \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "আইকনের আয়তন" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "পছন্দসই আইকন আকার" #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "আইকন" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "স্ট্রিং আইকন প্রতিনিধিত্ব করে" #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "ক্রিয়াকলাপ" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "অ্যাপ্লিকেশনসমূহ" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "বিভাগ" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "ডিভাইসসমূহ" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "প্রতীকচিহ্ন" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "ইমোজি" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "মাইম টাইপ" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "স্থান সমূহ" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "অবস্থা" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "অন্য" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "একটি আইকন নির্বাচন করুন" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "অনুসন্ধান করুন" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "ব্রাউজ করুন" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "লোড হচ্ছে..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "নির্বাচন করুন" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "বাতিল করুন" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "পাথ অনুমতি দিন" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "পাথ অনুমতি দিতে হবে কিনা" #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "ইমেজ ফাইল নির্বাচন করুন" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "খুলুন" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "চিত্র" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/po/ca.po000066400000000000000000000100311360565754300143040ustar00rootroot00000000000000# Catalan translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-12 12:47+0000\n" "Last-Translator: Isidro Pisa \n" "Language-Team: Catalan \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Mida de la icona" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "La mida preferida de la icona." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Icona" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "La cadena que representa la icona." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Categoria" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "La categoria predeterminada." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Accions" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Aplicacions" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Categories" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Dispositius" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Emblemes" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Tipus MIME" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Llocs" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Estat" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Altres" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Seleccioneu una icona" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Cerca" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Navega" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "S'està carregant..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Predeterminada" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Selecciona" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Cancel·la" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Permet camins" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Si es permeten camins o no." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Icona predeterminada" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "La icona usada per defecte" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Selecciona el fitxer d'imatge" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Obre" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Imatge" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Quant a" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Àrea on es mostren les icones d'estat de XApp" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "XApp Status Applet Factory" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "XApp Status Applet" xapps-1.6.10/po/ca@valencia.po000066400000000000000000000071031360565754300161150ustar00rootroot00000000000000# Catalan (Valencian) translation for linuxmint # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-02-15 19:18+0000\n" "Last-Translator: Juan Hidalgo-Saavedra \n" "Language-Team: Catalan (Valencian) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "" #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Icona" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "" #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/po/cs.po000066400000000000000000000077521360565754300143460ustar00rootroot00000000000000# Czech translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-25 10:21+0000\n" "Last-Translator: Pavel Borecki \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Velikost ikony" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Upřednostňovaná velikost ikony." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Ikona" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Řetězec představující ikonu" #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Kategorie" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Výchozí kategorie." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Akce" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Aplikace" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Kategorie" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Zařízení" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Symbolické obrázky" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Smajlíky" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "MIME typy" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Místa" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Stav" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Ostatní" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Zvolte ikonu" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Hledat" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Procházet" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Načítání…" #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Výchozí" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Vybrat" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Storno" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Umožnit popisy umístění" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Zda umožnit popisy umístění." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Výchozí ikona" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Ikonu kterou použít jako výchozí" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Vyberte soubor s obrázkem" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Otevřít" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Obrázek" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "O aplikaci" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Oblast ve které XApp stavová ikona objeví" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/po/cy.po000066400000000000000000000100151360565754300143360ustar00rootroot00000000000000# Welsh translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-12-12 15:29+0000\n" "Last-Translator: Rhoslyn Prys \n" "Language-Team: Welsh \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" "Language: cy\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Maint eicon" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Y maint eicon dewisol." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Eicon" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Y llinyn sy'n cynrychioli'r eicon." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Categori" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Y categori rhagosodedig" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Gweithredoedd" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Rhaglenni" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Categorïau" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Dyfeisiau" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Arwyddluniau" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Mathau mime" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Mannau" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Statws" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Arall" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Dewis eicon" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Chwilio" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Pori" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Llwytho..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Rhagosodedig" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Dewis" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Diddymu" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Caniatáu Llwybrau" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "P'un ai i ganiatáu llwybrau." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Eicon rhaqgosodedig" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Yr eicon i'w ddefnyddio drwy rhagosodiad" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Dewis ffeil delwedd" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Agor" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Delwedd" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Ynghylch" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Yr ardal lle mae'r eiconau statws XApp yn ymddangos" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "Ffactori Apled XApp Status" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "Apled XApp Status" xapps-1.6.10/po/da.po000066400000000000000000000077561360565754300143310ustar00rootroot00000000000000# Danish translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-14 19:06+0000\n" "Last-Translator: Alan Mortensen \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Ikonstørrelse" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Den foretrukne ikonstørrelse." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Ikon" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Strengen som repræsenterer ikonet." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Kategori" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Standardkategorien." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Handlinger" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Programmer" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Kategorier" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Enheder" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Emblemer" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Mimetyper" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Steder" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Status" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Andet" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Vælg et ikon" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Søg" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Gennemse" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Indlæser …" #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Standard" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Vælg" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Annullér" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Tillad stier" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Hvorvidt stier skal tillades." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Standardikon" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Det ikon som skal bruges som standard." #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Vælg billedfil" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Åbn" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Billede" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Om" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Område hvor XApp-statusikoner vises" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "XApp status-panelprogramfabrik" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "XApp status-panelprogram" xapps-1.6.10/po/de.po000066400000000000000000000100211360565754300143100ustar00rootroot00000000000000# German translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-12 18:01+0000\n" "Last-Translator: Tobias Bannert \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Symbolgröße" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Die bevorzugte Symbolgröße." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Symbol" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Die Zeichenfolge stellt das Symbol dar." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Kategorie" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Die Vorgabekategorie" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Aktionen" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Anwendungen" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Kategorien" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Geräte" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Embleme" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Mime-Typen" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Orte" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Zustand" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Andere" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Ein Symbol auswählen" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Suchen" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Durchsuchen" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Wird geladen …" #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Vorgabe" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Auswählen" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Abbrechen" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Pfade erlauben" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Ob Pfade erlaubt sind." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Vorgabesymbol" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Das Symbol, welches als Vorgabe verwendet wird" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Bilddatei auswählen" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Öffnen" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Bild" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Über" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Bereich, in dem XApp-Statussymbole angezeigt werden." #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "XApp-Status-Applet-Fabrik" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "XApp-Status-Applet" xapps-1.6.10/po/el.po000066400000000000000000000104551360565754300143330ustar00rootroot00000000000000# Greek translation for linuxmint # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-12-08 08:12+0000\n" "Last-Translator: Vasilis Thomopoulos \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Μέγεθος εικονιδίων" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Το προτιμώμενο μέγεθος εικονιδίου." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Εικονίδιο" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Το κείμενο που αντιπροσωπεύει το εικονίδιο." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Κατηγορία" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Η προεπιλεγμένη κατηγορία." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Ενέργειες" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Εφαρμογές" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Κατηγορίες" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Συσκευές" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Εμβλήματα" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Τύποι Mime" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Τοποθεσίες" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Κατάσταση" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Άλλα" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Επιλογή εικονιδίου" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Aναζήτηση" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Περιήγηση" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Φόρτωση..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Προεπιλεγμένη" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Επιλέξτε" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Ακύρωση" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Αποδοχή διαδρομών" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Επιλέξτε αν θα επιτρέπονται διαδρομές." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Προεπιλεγμένο Εικονίδιο" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Επιλογή αρχείου εικόνας" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Άνοιγμα" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Εικόνα" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Περί" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/po/en_GB.po000066400000000000000000000077501360565754300147110ustar00rootroot00000000000000# English (United Kingdom) translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-22 18:23+0000\n" "Last-Translator: Stephan Woidowski \n" "Language-Team: English (United Kingdom) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Icon size" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "The preferred icon size." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Icon" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "The string representing the icon." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Category" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "The default category." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Actions" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Applications" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Categories" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Devices" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Emblems" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Mime types" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Places" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Status" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Other" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Choose an icon" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Search" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Browse" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Loading..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Default" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Select" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Cancel" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Allow Paths" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Whether to allow paths." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Default Icon" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "The icon to use by default" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Select image file" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Open" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Image" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "About" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Area where XApp status icons appear" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "XApp Status Applet Factory" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "XApp Status Applet" xapps-1.6.10/po/eo.po000066400000000000000000000100201360565754300143220ustar00rootroot00000000000000# Esperanto translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-24 11:23+0000\n" "Last-Translator: Piet Coppens \n" "Language-Team: Esperanto \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Piktograma grando" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "La preferita piktograma grando." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Piktogramo" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "La ĉeno, kiu prezentas la piktogramon." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Kategorio" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "La defaŭlta kategorio." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Agoj" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Aplikaĵoj" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Kategorioj" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Aparatoj" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Emblemoj" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoĝio" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "MIME-tipoj" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Lokoj" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Stato" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Alia" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Elektu piktogramon" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Serĉi" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Foliumi" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Ŝargado..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Defaŭlto" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Elektu" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Nuligi" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Permesi Dosierindikojn" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Ĉu permesi dosierindikojn." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Defaŭlta piktogramo" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "La piktogramo uzita defaŭlte" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Elektu bildodosieron" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Malfermi" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Bildo" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Pri" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Areo, kie aperas piktogramoj pri XApa stato" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "Fabriko por aplikaĵeto pri XApa stato" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "Aplikaĵeto pri XApa stato" xapps-1.6.10/po/es.po000066400000000000000000000100411360565754300143310ustar00rootroot00000000000000# Spanish translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-12 21:28+0000\n" "Last-Translator: Toni Estevez \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Tamaño de Icono" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Tamaño preferido de Icono." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Icono" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "La cadena que representa un icono." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Categoría" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "La categoría predeterminada." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Acciones" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Aplicaciones" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Categorías" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Dispositivos" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Emblemas" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Tipos MIME" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Lugares" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Estado" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Otros" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Elija un icono" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Buscar" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Examinar" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Cargando..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Predeterminada" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Seleccionar" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Cancelar" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Permitir rutas" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Si se permiten rutas o no." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Icono predeterminado" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "El icono usado por defecto" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Seleccionar un archivo de imagen" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Abrir" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Imagen" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Acerca de" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Área donde aparecen los iconos de estado de XApp" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "XApp Status Applet Factory" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "XApp Status Applet" xapps-1.6.10/po/et.po000066400000000000000000000074441360565754300143470ustar00rootroot00000000000000# Estonian translation for linuxmint # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-04-13 15:49+0000\n" "Last-Translator: mahfiaz \n" "Language-Team: Estonian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Ikooni suurus" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Eelistatud ikooni suurus." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Ikoon" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Sõne, mis viitab ikoonile." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Tegevused" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Rakendused" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Kategooriad" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Seadmed" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Embleemid" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emotikonid" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "MIME-tüübid" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Asukohad" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Olek" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Muud" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Ikooni valimine" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Otsing" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Lehitse" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Laadimine..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Vali" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Loobu" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Asukohtade lubamine" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Kas asukohad lubada." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Vali pildi fail" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Ava" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Pilt" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/po/eu.po000066400000000000000000000100021360565754300143300ustar00rootroot00000000000000# Basque translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-17 15:06+0000\n" "Last-Translator: Asier Iturralde Sarasola \n" "Language-Team: Basque \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Ikonoaren tamaina" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Hobetsitako ikono tamaina" #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Ikonoa" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Ikonoa adierazten duen katea." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Kategoria" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Kategoria lehenetsia" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Ekintzak" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Aplikazioak" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Kategoriak" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Gailuak" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Ikurrak" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emojiak" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Mime motak" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Lekuak" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Egoera" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Bestelakoak" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Aukeratu ikono bat" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Bilatu" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Arakatu" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Kargatzen..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Lehenetsia" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Hautatu" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Utzi" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Onartu bideak" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Bideak onartu behar diren ala ez." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Ikono lehenetsia" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Modu lehenetsian erabiliko den ikonoa" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Hautatu irudi-fitxategia" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Ireki" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Irudia" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Honi buruz" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "XApp egoera ikonoak agertuko diren tokia" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "XApp Egoera applet faktoria" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "XApp Egoera applet-a" xapps-1.6.10/po/fi.po000066400000000000000000000076711360565754300143370ustar00rootroot00000000000000# Finnish translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-28 17:58+0000\n" "Last-Translator: Kimmo Kujansuu \n" "Language-Team: Finnish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Kuvakkeen koko" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Haluttu kuvakkeen koko." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Kuvake" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Kuvaketta kuvaava merkkijono." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Luokka" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Oletus luokka." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Toiminnot" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Sovellukset" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Luokat" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Laitteet" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Tunnukset" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Mime–tyypit" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Sijainnit" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Tila" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Muut" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Valitse kuvake" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Etsi" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Selaa" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Ladataan..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Oletus" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Valitse" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Peruuta" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Salli polut" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Tuleeko polut sallia." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Oletuskuvake" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Oletuksena käytettävä kuvake" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Valitse kuvatiedosto" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Avaa" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Kuva" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Tietoja" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Alue, jolla XApp -tilakuvakkeet näkyvät" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "XApp-tilan sovelmatehdas" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "XApp -tilan appletti" xapps-1.6.10/po/fr.po000066400000000000000000000100661360565754300143400ustar00rootroot00000000000000# French translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-13 09:29+0000\n" "Last-Translator: Sylvain Kamdem \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Taille de l'icône" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "La taille d'icône préférée." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Icône" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "La chaîne représentant l'icône." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Catégorie" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "La catégorie par défaut" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Actions" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Applications" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Catégories" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Appareils" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Emblèmes" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Types MIME" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Lieux" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Statut" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Autre" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Choisissez une icone" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Rechercher" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Parcourir" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Chargement..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Par Défaut" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Sélectionner" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Annuler" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Autoriser les chemins d'accès" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Autoriser ou non les chemins d'accès." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Icône Par Défaut" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "L'icône utilisée par défaut" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Sélectionner une image" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Ouvrir" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Image" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "À propos" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Zone où les icônes de statut XApp apparaissent" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "Fabrique d'Applet de Statut XApp" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "Applet de Statut XApp" xapps-1.6.10/po/hi.po000066400000000000000000000113231360565754300143260ustar00rootroot00000000000000# Hindi translation for linuxmint # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-19 06:31+0000\n" "Last-Translator: Panwar \n" "Language-Team: Hindi \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "आइकन का आकार" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "आइकन का पसंदीदा आकार" #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "आइकन" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "आइकन को वर्णित करने वाला स्ट्रिंग।" #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "श्रेणी" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "डिफ़ॉल्ट श्रेणी।" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "क्रियाएँ" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "अनुप्रयोग" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "श्रेणियाँ" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "डिवाइस" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "प्रतीक" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "इमोजी" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "MIME के प्रकार" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "स्थान" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "स्थिति" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "अन्य" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "आइकन चुनें" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "खोजें" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "ब्राउज़ करें" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "लोड हो रहा है..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "डिफ़ॉल्ट रूप" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "चुनें" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "रद्द करें" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "पथों को अनुमति दें" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "पथों को अनुमति दें या नहीं।" #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "डिफ़ॉल्ट आइकन" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "डिफ़ॉल्ट रूप से उपयोग हेतु आइकन" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "चित्र फाइल चुनें" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "खोलें" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "चित्र" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "के बारे में" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "क्षेत्र जहाँ XApp की स्थिति हेतु आइकन प्रदर्शित होंगे" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "XApp स्थिति एप्लेट फैक्ट्री" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "XApp स्थिति एप्लेट" xapps-1.6.10/po/hr.po000066400000000000000000000077521360565754300143520ustar00rootroot00000000000000# Croatian translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-13 14:05+0000\n" "Last-Translator: gogo \n" "Language-Team: Croatian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Veličina ikona" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Željena veličina ikona." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Ikona" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Unos koji predstavlja ikonu." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Kategorija" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Zadana kategorija." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Radnje" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Aplikacije" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Kategorije" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Uređaji" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Obilježja" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Smajliji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Mime vrste" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Lokacije" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Stanje" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Ostalo" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Odaberi ikonu" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Pretraži" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Pregledaj" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Učitavanje..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Zadano" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Odaberi" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Odustani" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Dopusti putanje" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Treba li dopustiti putanje." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Zadana ikona" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Ikona koja se koristi po zadanome" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Odaberi datoteku slike" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Otvori" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Slika" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "O programu" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Područje gdje nastaje XApp ikona stanja" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "Tvornica XApp apleta stanja" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "XApp aplet stanja" xapps-1.6.10/po/hu.po000066400000000000000000000075111360565754300143460ustar00rootroot00000000000000msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-22 19:13+0000\n" "Last-Translator: KAMI \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" "Language: hu\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Ikonméret" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Az ikon mérete." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Ikon" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Az ikon megnevezése." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Kategória" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Alapértelmezett kategória" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Műveletek" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Alkalmazások" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Kategóriák" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Eszközök" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Emblémák" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emodzsi" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "MIME-típusok" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Helyek" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Állapot" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Egyéb" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Válasszon ikont" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Keresés" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Tallózás" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Betöltés…" #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Alapértelmezett" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Kiválasztás" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Mégse" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Megengedett elérési útvonalak" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Engedélyezze a további elérési útvonalakat." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Alapértelmezett ikon" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Az alapértelmezetten használt ikon" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Válasszon képfájlt" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Megnyitás" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Kép" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Névjegy" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Terület, ahol az XApp állapot ikonok megjelennek" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "XApp Állapot kisalkalmazás terület" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "XApp Állapot kisalkalmazás" xapps-1.6.10/po/ia.po000066400000000000000000000075521360565754300143300ustar00rootroot00000000000000# Interlingua translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2018-11-16 20:27+0000\n" "Last-Translator: karm \n" "Language-Team: Interlingua \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Dimensiones del Icone" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Le dimension preferite del icone." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Icone" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Le catena de characteres que representa le icone." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Actiones" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Applicationes" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Categorias" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Dispositivos" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Emblemas" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Typos de mime" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Locos" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Stato" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Altere" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Elige un icone" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Cercar" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Navigar" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Cargamento..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Seliger" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Cancellar" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Consentir le percursos" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Si consentir le percursos." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Eliger le file de imagine" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Aperir" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Imagine" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/po/id.po000066400000000000000000000073131360565754300143260ustar00rootroot00000000000000# Indonesian translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-09-06 09:40+0000\n" "Last-Translator: Abdul Munif Hanafi \n" "Language-Team: Indonesian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Ukuran ikon" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "" #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Ikon" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "" #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Aksi" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Aplikasi" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Kategori" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Perangkat" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Emblem" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Tipe mime" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Status" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Lainnya" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Pilih ikon" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Cari" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Telusur" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Memuat..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Pilih" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Batal" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Ijinkan Path" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Pilih berkas citra" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Buka" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Citra" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/po/ie.po000066400000000000000000000075061360565754300143330ustar00rootroot00000000000000# Interlingue translation for linuxmint # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-05-07 11:39+0000\n" "Last-Translator: Silvara \n" "Language-Team: Interlingue \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" "Language: ie\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Dimension de icon" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Li preferet dimension de icone." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Icone" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Li catene representante li icone" #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Actiones" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Applicationes" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Categories" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Aparates" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Emblemas" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "MIME-tipes" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Locs" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Statu" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Altri" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Selecte un icone" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Serchar" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Trovar" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Cargante..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Selecter" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Anullar" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Permisser rutes" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Ca permisser rutes." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Selecte un file de image" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Aperter" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Image" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/po/is.po000066400000000000000000000075311360565754300143470ustar00rootroot00000000000000# Icelandic translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2018-12-05 17:38+0000\n" "Last-Translator: Sveinn í Felli \n" "Language-Team: Icelandic \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Táknmyndastærð" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Kjörstærð táknmyndar." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Táknmynd" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Textastrengurinn sem stendur fyrir táknmyndina." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Aðgerðir" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Forrit" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Flokkar" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Tæki" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Merkimiðar" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Tjáningartákn - emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "MIME tegundir" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Staðir" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Staða" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Annað" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Veldu táknmynd" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Leita" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Flakka" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Hleð inn..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Velja" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Hætta við" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Leyfa slóðir" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Hvort leyfa eigi slóðir." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Veldu myndskrá" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Opna" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Mynd" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/po/it.po000066400000000000000000000100431360565754300143400ustar00rootroot00000000000000# Italian translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-12-07 16:36+0000\n" "Last-Translator: lang-it \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Dimensioni icona" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "La dimensione preferita per le icone" #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Icona" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "La stringa che rappresenta l'icona" #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Categoria" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "La categoria predefinita." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Azioni" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Applicazioni" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Categorie" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Dispositivi" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Simboli" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Tipi Mime" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Risorse" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Stato" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Altro" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Scegli un'icona" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Cerca" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Sfoglia" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Caricamento..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Predefinita" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Seleziona" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Annulla" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Consenti percorsi" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Se consentire i percorsi" #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Icona predefinita" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "L'icona da usare come predefinita" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Seleziona un file di immagine" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Apri" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Immagine" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Informazioni su..." #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Area in cui vengono visualizzate le icone di stato delle XApp" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "Fabbrica di Applet di Stato XApp" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "Applet di Stato XApp" xapps-1.6.10/po/ja.po000066400000000000000000000076571360565754300143370ustar00rootroot00000000000000# Japanese translation for linuxmint # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-08-20 05:45+0000\n" "Last-Translator: ichro furuya \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "アイコンサイズ" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "推奨アイコンサイズ。" #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "アイコン" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "アイコンを表す文字列。" #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "アクション" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "アプリケーション" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "カテゴリ" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "デバイス" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "エンブレム" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "絵文字" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "MIMEタイプ" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "場所" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "ステータス" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "その他" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "アイコンを選択してください" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "検索" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "ブラウズ" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "ロード中..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "選択" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "キャンセル" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "パスを許可" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "パスを許可するかどうか。" #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "画像ファイルを選択" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "開く" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "画像" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/po/kab.po000066400000000000000000000077621360565754300144770ustar00rootroot00000000000000# Kabyle translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-12-21 14:23+0000\n" "Last-Translator: Yacine Bouklif \n" "Language-Team: Kabyle \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Tiddi n tignit" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Tiddi tanuraft n tignit." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Tignit" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Azrar ara yesenkden tignit." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Taggayt" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Taggayt n lexṣas" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Tigawin" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Isnasen" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Taggayin" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Ibenkan" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Izamulen" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Tignit n uḥulfu" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Anawen mime" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Isunen" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Addad" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Wayeḍ" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Fren tagnit" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Nadi" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Snirem" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Tulya..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Lexṣas" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Fren" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Sefsex" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Sireg iberdan" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Ma yella ad tsirgeḍ iberdan." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Tignit n lexṣas" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Tignit ara tesqedceḍ s lexṣas" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Fren afaylu n tugna" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Ldi" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Tugna" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Ɣef" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Tamnaḍt anida ara d-banent tignitin n uẓayer XApp" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "Taneɣraft n yisnasen n waddad XApp" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "Asnas n uẓayer XApp" xapps-1.6.10/po/kk.po000066400000000000000000000075531360565754300143450ustar00rootroot00000000000000# Kazakh translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2018-12-22 01:17+0000\n" "Last-Translator: Murat Káribaı \n" "Language-Team: Kazakh \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Таңбаша өлшемі" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "" #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Таңбаша" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "" #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Әрекеттер" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Қолданбалар" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Санаттар" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Құрылғылар" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Эмблемалар" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Эмоджи" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "MIME түрлері" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Орындар" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Қалып-күйі" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Басқа" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Таңбашаны таңдаңыз" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Іздеу" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Қарап шығу" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Жүктеу..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Таңдау" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Бас тарту" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Ашу" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Сурет" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/po/ko.po000066400000000000000000000075711360565754300143510ustar00rootroot00000000000000# Korean translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2018-11-15 14:19+0000\n" "Last-Translator: Jung-Kyu Park \n" "Language-Team: Korean \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "아이콘 크기" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "좋아하는 아이콘 크기입니다." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "아이콘" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "아이콘을 표시하는 문자열입니다." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "동작" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "애플리케이션" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "카테고리" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "장치" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "엠블럼" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "이모지" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Mime 형식" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "위치" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "상태" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "기타" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "아이콘 선택" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "검색" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "탐색" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "불러오고 있습니다..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "선택" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "취소" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "경로 허용" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "경로 허용 여부 결정." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "이미지 파일 선택" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "열기" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "이미지" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/po/ku.po000066400000000000000000000073471360565754300143600ustar00rootroot00000000000000# Kurdish translation for linuxmint # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-12-04 11:30+0000\n" "Last-Translator: Rokar ✌ \n" "Language-Team: Kurdish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Mezinahiya îkonê" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "" #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Îkon" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "" #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Kategorî" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Tevger" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Bername" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Beş" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Cîhaz" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Nîşan" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Cureyên Mime" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Cîh" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Rewş" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Wekî Din" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Lê bigere" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Gerîn" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Tê barkirin..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Wekî heyî" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Hilbijêre" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Betal bike" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Îkona Standard" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Dosiya wêneyê hilbijêre" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Veke" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Wêne" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Der barê" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/po/lt.po000066400000000000000000000100651360565754300143470ustar00rootroot00000000000000# Lithuanian translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-28 14:12+0000\n" "Last-Translator: Moo \n" "Language-Team: Lithuanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Piktogramų dydis" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Pageidaujamas piktogramų dydis." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Piktograma" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Eilutė, atvaizduojanti piktogramą." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Kategorija" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Numatytoji kategorija" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Veiksmai" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Programos" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Kategorijos" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Įrenginiai" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Emblemos" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Šypsenėlės" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Mime tipai" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Vietos" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Būsena" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Kita" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Pasirinkite piktogramą" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Ieškoti" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Naršyti" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Įkeliama..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Numatytoji" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Pasirinkti" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Atsisakyti" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Leisti kelius" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Ar leisti kelius." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Numatytoji piktograma" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Piktograma, kurią naudoti pagal numatymą" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Pasirinkti paveikslo failą" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Atverti" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Paveikslas" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Apie" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Sritis, kurioje atsiras XApp būsenos piktogramos" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "XApp būsenos įskiepio gamykla" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "XApp būsenos įskiepis" xapps-1.6.10/po/meson.build000066400000000000000000000000511360565754300155240ustar00rootroot00000000000000i18n.gettext('xapp', preset: 'glib' )xapps-1.6.10/po/ms.po000066400000000000000000000074151360565754300143540ustar00rootroot00000000000000# Malay translation for linuxmint # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-09-30 03:27+0000\n" "Last-Translator: abuyop \n" "Language-Team: Malay \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Saiz ikon" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Saiz ikon dikehendaki" #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Ikon" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Rentetan yang mewakili ikon." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Tindakan" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Aplikasi" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Kategori" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Peranti" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Lambang" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Jenis Mime" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Tempat" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Status" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Lain-lain" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Pilih satu ikon" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Gelintar" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Layar" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Memuatkan..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Pilih" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Batal" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Benarkan Laluan" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Sama ada hendak membenarkan laluan." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Pilih fail imej" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Buka" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Imej" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/po/nl.po000066400000000000000000000101411360565754300143340ustar00rootroot00000000000000# Dutch translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-12 23:41+0000\n" "Last-Translator: Pjotr12345 \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Pictogramgrootte" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "De voorkeursgrootte van de pictogrammen." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Pictogram" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "De tekenreeks die het pictogram vertegenwoordigt." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Categorie" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "De standaardcategorie." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Acties" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Toepassingen" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Categorieën" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Apparaten" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Emblemen" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emotiepictogrammen" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Bestandssoorten" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Locaties" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Status" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Overige" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Kies een pictogram" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Zoeken" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Bladeren" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Bezig met laden…" #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Standaard" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Kiezen" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Afbreken" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Paden toestaan" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Of paden al dan niet moeten worden toegestaan." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Standaardpictogram" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Het standaard te gebruiken pictogram" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Kies afbeeldingsbestand" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Openen" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Afbeelding" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Over" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Gebied waar XApp-statuspictogrammen verschijnen" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "Fabriek van status-werkbalkhulpje van XApp" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "Status-werkbalkhulpje van XApp" xapps-1.6.10/po/pl.po000066400000000000000000000077141360565754300143520ustar00rootroot00000000000000# Polish translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-12-07 07:53+0000\n" "Last-Translator: Paweł Pańczyk \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Rozmiar ikon" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Preferowana wielkość ikon." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Ikona" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Ciąg znaków reprezentujący ikonę." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Kategoria" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Kategoria domyślna." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Akcje" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Programy" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Kategorie" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Urządzenia" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Symbole" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Typy Mime" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Miejsca" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Status" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Inne" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Wybór ikony" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Wyszukaj" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Przeglądaj" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Wczytywanie…" #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Wybierz" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Anuluj" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Zezwól ścieżki" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Czy zezwalać na ścieżki." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Domyślna ikona" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Domyślnie używana ikona" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Wybierz plik graficzny" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Otwórz" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Obraz" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Obszar, w którym pokazują się ikony stanu XApp" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "Aplet stanu XApp" xapps-1.6.10/po/pt.po000066400000000000000000000100611360565754300143470ustar00rootroot00000000000000# Portuguese translation for linuxmint # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2020-01-05 23:46+0000\n" "Last-Translator: Sérgio Marques \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Tamanho do ícone" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "O tamanho preferido do ícone" #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Ícone" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "A linha representando o ícone." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Categoria" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "A categoria padrão." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Ações" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Aplicações" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Categorias" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Dispositivos" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Emblemas" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Tipos MIME" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Locais" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Estado" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Outro" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Escolha um ícone" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Pesquisar" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Explorar" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "A carregar..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Padrão" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Selecionar" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Cancelar" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Permitir caminhos" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Opção para permitir caminhos." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Ícone padrão" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "O ícone a utilizar por predefinição" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Selecione o ficheiro de imagem" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Abrir" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Imagem" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Acerca" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Área onde aparecem os ícones de estado XApp" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "Fábrica de mini-aplicações de estado XApp" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "Mini-aplicação de estado XApp" xapps-1.6.10/po/pt_BR.po000066400000000000000000000100531360565754300147330ustar00rootroot00000000000000# Brazilian Portuguese translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-21 17:17+0000\n" "Last-Translator: Alberlan Lopes \n" "Language-Team: Brazilian Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Tamanho do ícone" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "O tamanho do ícone preferido" #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Ícone" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "O texto representando o ícone." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Categoria" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "A categoria padrão." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Ações" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Aplicativos" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Categorias" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Dispositivos" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Emblemas" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Tipos MIME" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Locais" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Status" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Outros" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Escolha um ícone" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Pesquisar" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Navegar" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Carregando…" #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Padrão" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Selecionar" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Cancelar" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Caminhos Permitidos" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Que seja para permitir caminhos." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Ícone padrão" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "O ícone para uso padrão" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Selecionar arquivo da imagem" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Abrir" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Imagem" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Sobre" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "A área onde o ícone do XApp status aparecerá" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "Fábrica do Applet XApp Status" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "Applet XApp Status" xapps-1.6.10/po/ro.po000066400000000000000000000100631360565754300143460ustar00rootroot00000000000000# Romanian translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-14 20:18+0000\n" "Last-Translator: Flaviu \n" "Language-Team: Romanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Mărime pictogramă" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Dimensiunea preferată a pictogramei." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Pictogramă" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Șirul reprezentând pictograma." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Categorie" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Categoria implicită." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Acțiuni" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Aplicații" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Categorii" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Dispozitive" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Embleme" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Tipuri MIME" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Locații" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Stare" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Alte" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Alege o pictogramă" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Căutare" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Navigare" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Se încarcă..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Implicit(ă)" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Selectare" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Anulare" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Permite căi" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Fie pentru a permite căi." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Pictogramă implicită" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Pictograma pentru a fi folosită implicit" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Selectare fişier imagine" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Deschide" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Imagine" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Despre" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Zona în care apar pictogramele de stare XApp" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "Zona în care apar pictogramele de stare XApp" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "XApp Status Applet" xapps-1.6.10/po/ru.po000066400000000000000000000106611360565754300143600ustar00rootroot00000000000000# Russian translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-26 11:58+0000\n" "Last-Translator: Saveliy Daurcev \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "Апплет статуса XApp" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Размер значка" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Предпочтительный размер значка." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Значок" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Строка, соответствующая значку." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Категория" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Категория по умолчанию." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Действия" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Приложения" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Категории" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Устройства" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Эмблемы" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Эмодзи" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Типы MIME" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Места" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Статус" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Другое" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Выберите значок" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Поиск" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Обзор" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Загрузка…" #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "По умолчанию" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Выбрать" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Отмена" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Разрешать пути" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Разрешать ли пути." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Значок по умолчанию" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Значок, используемый по умолчанию" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Выберите файл изображения" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Открыть" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Изображение" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "О программе" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Область, где появляется значок статуса XApp" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "Заводские настройки апплета статуса XApp" xapps-1.6.10/po/sk.po000066400000000000000000000075261360565754300143550ustar00rootroot00000000000000# Slovak translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2018-12-16 00:20+0000\n" "Last-Translator: Dusan Kazik \n" "Language-Team: Slovak \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" "Language: sk\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Veľkosť ikony" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Preferovaná veľkosť ikony." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Ikona" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Reťazec reprezentujúci ikonu." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Akcie" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Aplikácie" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Kategórie" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Zariadenia" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Emblémy" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emotikony" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Mime typy" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Miesta" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Status" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Ostatné" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Výber ikony" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Hľadať" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Prehliadať" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Načítava sa…" #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Vybrať" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Zrušiť" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Povoliť cesty" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Či povoliť cesty." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Vybrať súbor obrázku" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Otvoriť" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Obrázok" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/po/sl.po000066400000000000000000000076651360565754300143620ustar00rootroot00000000000000# Slovenian translation for linuxmint # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2020-01-02 20:41+0000\n" "Last-Translator: Andrej Čop \n" "Language-Team: Slovenian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Velikost ikon" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Željena velikost ikon." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Ikona" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Niz ki predstavlja ikono." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Kategorija" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Privzeta kategorija" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Dejanja" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Aplikacije" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Kategorije" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Naprave" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Emblemi" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Čustveni simboli" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Vrste MIME" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Mesta" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Status" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Drugo" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Izberi ikono" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Iskanje" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Brskaj" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Nalaganje ..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Privzeto" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Izberi" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Prekliči" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Dovoli Poti" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Ali želite dovoliti poti." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Privzeta ikona" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Ikona, ki se bo uporabila privzeto" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Izberi slikovno datoteko" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Odpri" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Slika" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "O Programu" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Prostor, kjer se pojavi statusna ikona XApp" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/po/sr.po000066400000000000000000000106471360565754300143620ustar00rootroot00000000000000# Serbian translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-15 00:09+0000\n" "Last-Translator: Knez \n" "Language-Team: Serbian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Величина иконе" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Жељена величина иконе." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Икона" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Унос који представља икону." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Категорија" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Подразумевана категорија." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Радње" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Апликације" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Категорије" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Уређаји" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Обележја" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Смајлији" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Миме врсте" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Локације" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Стање" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Остало" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Изаберите икону" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Претрага" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Погледај" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Учитавање..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Подразумевано" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Изаберите" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Одустани" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Дозволите путању" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Требало би дозволити путању." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Подразумевана икона" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Икона која се користи по подразумевано" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Изаберите датотеку слике" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Отвори" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Слика" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "О програму" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Подручје одакле потиче XApp икона стања" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "XApp програмче стања фабрички" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "XApp програмче стања" xapps-1.6.10/po/sv.po000066400000000000000000000077441360565754300143720ustar00rootroot00000000000000# Swedish translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-12 19:52+0000\n" "Last-Translator: Jan-Olof Svensson \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Ikonstorlek" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Föredragen ikonstorlek." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Ikon" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Strängen som representerar ikonen." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Kategori" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Förvald kategori" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Åtgärder" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Program" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Kategorier" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Enheter" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Emblem" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emojier" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Mimetyper" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Platser" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Status" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Annan" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Välj en ikon" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Sök" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Bläddra" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Hämtar..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Standardvärde" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Välj" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Avbryt" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Tillåt sökvägar" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Om du vill tillåta sökvägar." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Förvald ikon" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Den ikon som används som standard" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Välj bildfil" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Öppna" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Bild" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Om" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Det område där XApp visar status-ikoner" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "Verktyg för status-appen XApp" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "Status-appen XApp" xapps-1.6.10/po/tr.po000066400000000000000000000077771360565754300143750ustar00rootroot00000000000000# Turkish translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-13 01:38+0000\n" "Last-Translator: Butterfly \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Simge boyutu" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Tercih edilen simge boyutu." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Simge" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Simgeyi temsil eden dize." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Kategori" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Varsayılan kategori." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Eylemler" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Uygulamalar" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Kategoriler" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Aygıtlar" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Amblemler" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "İfade" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Mime türleri" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Yerler" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Durum" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Diğer" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Bir simge seçin" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Arama" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Gözat" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Yükleniyor..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Varsayılan" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Seç" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "İptal" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Yollara İzin Ver" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Yollara izin verilip verilmeyeceği." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Varsayılan simge" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Varsayılan olarak kullanılacak simge" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Resim dosyası seç" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Aç" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Resim" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Hakkında" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "XApp durum simgelerinin göründüğü alan" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "XApp Durum Uygulamacığı Üreticisi" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "XApp Durum Uygulamacığı" xapps-1.6.10/po/uk.po000066400000000000000000000106001360565754300143420ustar00rootroot00000000000000# Ukrainian translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-20 14:24+0000\n" "Last-Translator: Jon900 \n" "Language-Team: Ukrainian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Розмір іконки" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Бажаний розмір іконки." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Іконка" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Рядок, який представляє іконку." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Категорія" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Типова категорія." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Дії" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Додатки" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Категорії" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Пристрої" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Емблеми" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Емодзі" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "Типи MIME" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Місця" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Стан" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Інше" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Виберіть піктограму" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Пошук" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Перегляд" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Завантаження..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Типово" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Вибрати" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Скасувати" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Дозволяти шляхи" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Чи дозволяти шляхи." #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Типова піктограма" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Піктограма, яка використовується усталено" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Вибрати файл зображення" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Відкрити" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Зображення" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Про" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "Ділянка, де з'являється піктограма статусу XApp" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "Фабрика аплета статусу XApp" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "Аплет статусу XApp" xapps-1.6.10/po/uz.po000066400000000000000000000100321360565754300143600ustar00rootroot00000000000000# Uzbek translation for linuxmint # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-12-31 17:18+0000\n" "Last-Translator: Saidazim Nazirov \n" "Language-Team: Uzbek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "Nishoncha oʻlchami" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "Afzal ko'rilgan nishoncha o'lchami." #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "Nishoncha" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "Belgini ifodalovchi satr." #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "Kategoriya" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "Standart kategoriya." #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "Amallar" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "Ilovalar" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "Kategoriyalar" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "Qurilmalar" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "Emblemalar" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Kulgichlar" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "MIME turlari" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "Joylar" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "Xolat" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "Boshqa" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "Nishonchani tanlash" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "Izlash" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "Ko'rish" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "Yuklanmoqda..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "Standart" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "Tanlash" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "Bekor qilish" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "Ruxsat berilgan joylar" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "Joylarga ruxsat berilsinmi" #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "Standart nishoncha" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "Nishonchani ishlatish" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "Rasm faylini tanlash" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "Ochish" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "Rasm" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "Haqida ma’lumot" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "XApp holat nishonchasi paydo bo'ladigan maydon" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "XApp holat appletining boshlang'ich holati" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "XApp holat appleti" xapps-1.6.10/po/zh_CN.po000066400000000000000000000077171360565754300147430ustar00rootroot00000000000000# Chinese (Simplified) translation for linuxmint # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-11-14 23:24+0000\n" "Last-Translator: AlephAlpha \n" "Language-Team: Chinese (Simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "图标大小" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "首选图标大小。" #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "图标" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "代表图标的字符串。" #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "分类" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "默认分类。" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "动作" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "应用程序" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "分类" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "设备" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "徽标" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "Emoji" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "MIME 类型" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "位置" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "状态" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "其他" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "选择一个图标" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "搜索" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "浏览" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "正在加载..." #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "默认" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "选择" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "取消" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "允许路径" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "是否允许路径。" #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "默认图标" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "默认使用的图标" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "选择图像文件" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "打开" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "图像" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "关于" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "XApp 状态图标出现的区域" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "XApp 状态小应用工厂" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "XApp 状态小应用" xapps-1.6.10/po/zh_TW.po000066400000000000000000000070661360565754300147720ustar00rootroot00000000000000# Chinese (Traditional) translation for linuxmint # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the linuxmint package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: linuxmint\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2019-11-12 11:04+0100\n" "PO-Revision-Date: 2019-04-02 03:56+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Chinese (Traditional) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-06 10:08+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "" #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "" #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr "" xapps-1.6.10/pygobject/000077500000000000000000000000001360565754300147365ustar00rootroot00000000000000xapps-1.6.10/pygobject/XApp.py000066400000000000000000000016101360565754300161560ustar00rootroot00000000000000from gi.overrides import override from gi.importer import modules """ The only purpose of this file is to ensure the XApp widget GType is registered at the time of import. Otherwise any user of XApp.GtkWindow would have to create a dummy widget prior to using a GtkBuilder to parse a ui file containing an XAppGtkWindow. The gi import machinery sweeps usr/lib/python*/dist-packages/gi/overrides for file matching the module name at the time of execution. This file needs to be in both python2 and python3 overrides locations. """ XApp = modules['XApp']._introspection_module __all__ = [] class GtkWindow(XApp.GtkWindow): pass class GtkButton(XApp.IconChooserButton): pass class GtkBin(XApp.StackSidebar): pass GtkWindow = override(GtkWindow) GtkButton = override(GtkButton) GtkBin = override(GtkBin) __all__.append('GtkWindow') __all__.append('GtkButton') __all__.append('GtkBin') xapps-1.6.10/pygobject/meson.build000066400000000000000000000005601360565754300171010ustar00rootroot00000000000000pygobject = dependency('pygobject-3.0', version: '>=2.9.0', required: true, ) foreach exec : ['python2', 'python3'] r = run_command(exec, '-c', 'import gi;print(gi._overridesdir)') if r.returncode() == 0 override_dir = r.stdout().strip() install_data(['XApp.py'], install_dir: override_dir ) endif endforeach xapps-1.6.10/schemas/000077500000000000000000000000001360565754300143735ustar00rootroot00000000000000xapps-1.6.10/schemas/meson.build000066400000000000000000000002511360565754300165330ustar00rootroot00000000000000install_data('org.x.apps.gschema.xml', install_dir: join_paths(get_option('datadir'), 'glib-2.0', 'schemas') ) meson.add_install_script('meson_install_schemas.py') xapps-1.6.10/schemas/meson_install_schemas.py000066400000000000000000000004261360565754300213210ustar00rootroot00000000000000#!/usr/bin/python3 import os import subprocess schemadir = os.path.join(os.environ['MESON_INSTALL_PREFIX'], 'share', 'glib-2.0', 'schemas') if not os.environ.get('DESTDIR'): print('Compiling gsettings schemas...') subprocess.call(['glib-compile-schemas', schemadir]) xapps-1.6.10/schemas/org.x.apps.gschema.xml000066400000000000000000000001611360565754300205200ustar00rootroot00000000000000 xapps-1.6.10/status-applets/000077500000000000000000000000001360565754300157415ustar00rootroot00000000000000xapps-1.6.10/status-applets/mate/000077500000000000000000000000001360565754300166675ustar00rootroot00000000000000xapps-1.6.10/status-applets/mate/applet_constants.py.in000066400000000000000000000000621360565754300232250ustar00rootroot00000000000000LOCALEDIR = "@locale@" PKGVERSION = "@pkgversion@"xapps-1.6.10/status-applets/mate/mate-xapp-status-applet.py000077500000000000000000000324141360565754300237500ustar00rootroot00000000000000#!/usr/bin/python3 import locale import gettext import os import sys import setproctitle import gi gi.require_version("Gtk", "3.0") gi.require_version("XApp", "1.0") gi.require_version('MatePanelApplet', '4.0') from gi.repository import Gtk, GdkPixbuf, Gdk, GObject, Gio, XApp, GLib, MatePanelApplet import applet_constants # Rename the process setproctitle.setproctitle('mate-xapp-status-applet') # i18n gettext.install("xapp", applet_constants.LOCALEDIR) locale.bindtextdomain("xapp", applet_constants.LOCALEDIR) locale.textdomain("xapp") ICON_SIZE_REDUCTION = 2 VISIBLE_LABEL_MARGIN = 5 # When an icon has a label, add a margin between icon and label SYMBOLIC_ICON_SIZE = 22 statusicon_css_string = """ .statuswidget-horizontal { border: none; padding-top: 0; padding-left: 2px; padding-bottom: 0; padding-right: 2px; } .statuswidget-vertical { border: none; padding-top: 2px; padding-left: 0; padding-bottom: 2px; padding-right: 0; } """ def translate_applet_orientation_to_xapp(mate_applet_orientation): # wtf...mate panel's orientation is.. the direction to center of monitor? if mate_applet_orientation == MatePanelApplet.AppletOrient.UP: return Gtk.PositionType.BOTTOM elif mate_applet_orientation == MatePanelApplet.AppletOrient.DOWN: return Gtk.PositionType.TOP elif mate_applet_orientation == MatePanelApplet.AppletOrient.LEFT: return Gtk.PositionType.RIGHT elif mate_applet_orientation == MatePanelApplet.AppletOrient.RIGHT: return Gtk.PositionType.LEFT class StatusWidget(Gtk.ToggleButton): def __init__(self, icon, orientation, size): super(Gtk.Button, self).__init__() self.theme = Gtk.IconTheme.get_default() self.orientation = orientation self.size = size self.proxy = icon # this is the bus owned name self.name = self.proxy.get_name() # this is (usually) the name of the remote process self.proc_name = self.proxy.props.name self.box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) self.image = Gtk.Image(hexpand=True) self.label = Gtk.Label(no_show_all=True) self.box.pack_start(self.image, True, False, 0) self.box.pack_start(self.label, False, False, 0) self.add(self.box) self.set_can_default(False) self.set_can_focus(False) self.set_relief(Gtk.ReliefStyle.NONE) self.set_focus_on_click(False) self.show_all() flags = GObject.BindingFlags.DEFAULT | GObject.BindingFlags.SYNC_CREATE self.proxy.bind_property("label", self.label, "label", flags) self.proxy.bind_property("tooltip-text", self, "tooltip-text", flags) self.proxy.bind_property("visible", self, "visible", flags) self.proxy.connect("notify::icon-name", self._on_icon_name_changed) self.in_widget = False self.plain_surface = None self.saturated_surface = None self.connect("button-press-event", self.on_button_press) self.connect("button-release-event", self.on_button_release) self.connect("enter-notify-event", self.on_enter_notify) self.connect("leave-notify-event", self.on_leave_notify) self.update_orientation() self.update_icon() def _on_icon_name_changed(self, proxy, gparamspec, data=None): self.update_icon() def update_icon(self): string = self.proxy.props.icon_name self.set_icon(string) def update_style(self, orientation): ctx = self.get_style_context() if orientation == Gtk.Orientation.HORIZONTAL: ctx.remove_class("statuswidget-vertical") ctx.add_class("statuswidget-horizontal") else: ctx.remove_class("statuswidget-horizontal") ctx.add_class("statuswidget-vertical") def update_orientation(self): if self.orientation in (MatePanelApplet.AppletOrient.UP, MatePanelApplet.AppletOrient.DOWN): box_orientation = Gtk.Orientation.HORIZONTAL else: box_orientation = Gtk.Orientation.VERTICAL self.update_style(box_orientation) self.box.set_orientation(box_orientation) if len(self.label.props.label) > 0 and box_orientation == Gtk.Orientation.HORIZONTAL: self.label.set_visible(True) self.label.set_margin_start(VISIBLE_LABEL_MARGIN) else: self.label.set_visible(False) self.label.set_margin_start(0) def set_icon(self, string): if "symbolic" in string: size = SYMBOLIC_ICON_SIZE else: size = self.size - ICON_SIZE_REDUCTION self.image.set_pixel_size(size) fallback = True if string: try: if os.path.exists(string): icon_file = Gio.File.new_for_path(string) icon = Gio.FileIcon.new(icon_file) self.image.set_from_gicon(icon, Gtk.IconSize.MENU) else: if self.theme.has_icon(string): icon = Gio.ThemedIcon.new(string) self.image.set_from_gicon(icon, Gtk.IconSize.MENU) fallback = False except GLib.Error as e: print("MateXAppStatusApplet: Could not load icon '%s' for '%s': %s" % (string, self.proc_name, e.message)) except TypeError as e: print("MateXAppStatusApplet: Could not load icon '%s' for '%s': %s" % (string, self.proc_name, str(e))) #fallback if fallback: self.image.set_from_icon_name("image-missing", Gtk.IconSize.MENU) # TODO? def on_enter_notify(self, widget, event): self.in_widget = True return Gdk.EVENT_PROPAGATE def on_leave_notify(self, widget, event): self.in_widget = False return Gdk.EVENT_PROPAGATE # /TODO def after_release_idle(self, data=None): self.set_active(False) return GLib.SOURCE_REMOVE def on_button_press(self, widget, event): # If the user does ctrl->right-click, open the applet's about menu # instead of sending to the app. if event.state & Gdk.ModifierType.CONTROL_MASK and event.button == Gdk.BUTTON_SECONDARY: return Gdk.EVENT_PROPAGATE orientation = translate_applet_orientation_to_xapp(self.orientation) x, y = self.calc_menu_origin(widget, orientation) self.proxy.call_button_press(x, y, event.button, event.time, orientation, None, None) if event.button != Gdk.BUTTON_PRIMARY: self.set_active(True) if event.button in (Gdk.BUTTON_MIDDLE, Gdk.BUTTON_SECONDARY): # Block the 'remove from panel' menu, and the middle-click drag. # They can still accomplish these things along the edges of the applet return Gdk.EVENT_STOP return Gdk.EVENT_PROPAGATE def on_button_release(self, widget, event): orientation = translate_applet_orientation_to_xapp(self.orientation) x, y = self.calc_menu_origin(widget, orientation) self.proxy.call_button_release(x, y, event.button, event.time, orientation, None, None) GObject.timeout_add(200, self.after_release_idle) return Gdk.EVENT_PROPAGATE def calc_menu_origin(self, widget, orientation): alloc = widget.get_allocation() ignore, x, y = widget.get_window().get_origin() rx = 0 ry = 0 if orientation == Gtk.PositionType.TOP: rx = x + alloc.x ry = y + alloc.y + alloc.height elif orientation == Gtk.PositionType.BOTTOM: rx = x + alloc.x ry = y + alloc.y elif orientation == Gtk.PositionType.LEFT: rx = x + alloc.x + alloc.width ry = y + alloc.y elif orientation == Gtk.PositionType.RIGHT: rx = x + alloc.x ry = y + alloc.y else: rx = x ry = y return rx, ry class MateXAppStatusApplet(object): def __init__(self, applet, iid): self.applet = applet self.applet.set_flags(MatePanelApplet.AppletFlags.EXPAND_MINOR) self.applet.set_can_focus(False) self.applet.set_background_widget(self.applet) self.add_about() button_css = Gtk.CssProvider() if button_css.load_from_data(statusicon_css_string.encode()): Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), button_css, 600) self.applet.connect("realize", self.on_applet_realized) self.applet.connect("destroy", self.on_applet_destroy) self.indicators = {} self.monitor = None def add_about(self): group = Gtk.ActionGroup(name="xapp-status-applet-group") group.set_translation_domain("xapp") about_action = Gtk.Action(name="ShowAbout", icon_name="info", label=_("About"), visible=True) about_action.connect("activate", self.show_about) group.add_action(about_action) xml = '\ \ ' self.applet.setup_menu(xml, group) def show_about(self, action, data=None): dialog = Gtk.AboutDialog.new() dialog.set_program_name("XApp Status Applet") dialog.set_version(applet_constants.PKGVERSION) dialog.set_license_type(Gtk.License.GPL_3_0) dialog.set_website("https://github.com/linuxmint/xapps") dialog.set_logo_icon_name("panel-applets") dialog.set_comments(_("Area where XApp status icons appear")) dialog.run() dialog.destroy() def on_applet_realized(self, widget, data=None): self.indicator_box = Gtk.Box(visible=True) self.applet.add(self.indicator_box) self.applet.connect("change-size", self.on_applet_size_changed) self.applet.connect("change-orient", self.on_applet_orientation_changed) self.update_orientation() if not self.monitor: self.setup_monitor() def on_applet_destroy(self, widget, data=None): self.destroy_monitor() Gtk.main_quit() def setup_monitor (self): self.monitor = XApp.StatusIconMonitor() self.monitor.connect("icon-added", self.on_icon_added) self.monitor.connect("icon-removed", self.on_icon_removed) def destroy_monitor (self): for key in self.indicators.keys(): self.indicator_box.remove(self.indicators[key]) self.monitor = None self.indicators = {} def on_icon_added(self, monitor, proxy): name = proxy.get_name() self.indicators[name] = StatusWidget(proxy, self.applet.get_orient(), self.applet.get_size()) self.indicator_box.add(self.indicators[name]) self.sort_icons() def on_icon_removed(self, monitor, proxy): name = proxy.get_name() self.indicator_box.remove(self.indicators[name]) del(self.indicators[name]) self.sort_icons() def update_orientation(self): self.on_applet_orientation_changed(self, self.applet.get_orient()) def on_applet_size_changed(self, applet, size, data=None): for key in self.indicators.keys(): indicator = self.indicators[key] indicator.size = applet.get_size() indicator.update_icon() self.applet.queue_resize() def on_applet_orientation_changed(self, applet, applet_orient, data=None): orient = self.applet.get_orient() for key in self.indicators.keys(): indicator = self.indicators[key] indicator.orientation = orient indicator.update_orientation() if orient in (MatePanelApplet.AppletOrient.LEFT, MatePanelApplet.AppletOrient.RIGHT): self.indicator_box.set_orientation(Gtk.Orientation.VERTICAL) self.indicator_box.props.margin_start = 0 self.indicator_box.props.margin_end = 0 self.indicator_box.props.margin_top = 2 self.indicator_box.props.margin_bottom = 2 else: self.indicator_box.set_orientation(Gtk.Orientation.HORIZONTAL) self.indicator_box.props.margin_start = 2 self.indicator_box.props.margin_end = 2 self.indicator_box.props.margin_top = 0 self.indicator_box.props.margin_bottom = 0 self.indicator_box.queue_resize() def sort_icons(self): icon_list = list(self.indicators.values()) # for i in icon_list: # print("before: ", i.proxy.props.icon_name, i.proxy.props.name.lower()) icon_list.sort(key=lambda icon: icon.proxy.props.name.lower()) icon_list.sort(key=lambda icon: icon.proxy.props.icon_name.lower().endswith("symbolic")) # for i in icon_list: # print("after: ", i.proxy.props.icon_name, i.proxy.props.name.lower()) icon_list.reverse() for icon in icon_list: self.indicator_box.reorder_child(icon, 0) def applet_factory(applet, iid, data): MateXAppStatusApplet(applet, iid) applet.show() return True def quit_all(widget): Gtk.main_quit() sys.exit(0) MatePanelApplet.Applet.factory_main("MateXAppStatusAppletFactory", True, MatePanelApplet.Applet.__gtype__, applet_factory, None) xapps-1.6.10/status-applets/mate/meson.build000066400000000000000000000032771360565754300210420ustar00rootroot00000000000000## Applet file conf = configuration_data() conf.set('locale', join_paths(get_option('prefix'), get_option('localedir'))) conf.set('pkgversion', meson.project_version()) # Put replacements in a separate file, and import the file into the applet. # This is mainly to make testing/dev easier - if you put the conf replacement # strings inside the applet itself, you have to build each time to get a valid # file (with all replacements made). With this, you can just copy from source, # and your replacements are already there in this file. constants_file = configure_file( input : 'applet_constants.py.in', output: 'applet_constants.py', configuration: conf, ) libexec_files = [ constants_file, 'mate-xapp-status-applet.py' ] install_data(libexec_files, install_dir: join_paths(get_option('libexecdir'), 'xapps') ) ## DBus service file conf = configuration_data() conf.set('libexec', join_paths(get_option('prefix'), get_option('libexecdir'))) service_file = configure_file( input : 'org.mate.panel.applet.MateXAppStatusAppletFactory.service.in', output: 'org.mate.panel.applet.MateXAppStatusAppletFactory.service', configuration: conf, ) install_data(service_file, install_dir: join_paths(get_option('datadir'), 'dbus-1', 'services') ) ## Applet definition file def_file = configure_file( input: 'org.x.MateXAppStatusApplet.mate-panel-applet.in.in', output: 'org.x.MateXAppStatusApplet.mate-panel-applet.in', configuration: conf, ) i18n.merge_file( input: def_file, output: 'org.x.MateXAppStatusApplet.mate-panel-applet', type: 'desktop', po_dir: join_paths(meson.source_root(), 'po'), install: true, install_dir: join_paths(get_option('datadir'), 'mate-panel', 'applets') ) xapps-1.6.10/status-applets/mate/org.mate.panel.applet.MateXAppStatusAppletFactory.service.in000066400000000000000000000001671360565754300323400ustar00rootroot00000000000000[D-BUS Service] Name=org.mate.panel.applet.MateXAppStatusAppletFactory Exec=@libexec@/xapps/mate-xapp-status-applet.py xapps-1.6.10/status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in.in000066400000000000000000000005521360565754300302200ustar00rootroot00000000000000[Applet Factory] Id=MateXAppStatusAppletFactory InProcess=false Location=@libexec@/xapps/mate-xapp-status-applet.py Name=XApp Status Applet Factory Description=Area where XApp status icons appear [MateXAppStatusApplet] Name=XApp Status Applet Description=Area where XApp status icons appear Icon=panel-applets MateComponentId=OAFIID:MATE_MateXAppStatusApplet; xapps-1.6.10/status-applets/meson.build000066400000000000000000000000171360565754300201010ustar00rootroot00000000000000subdir('mate') xapps-1.6.10/test-scripts/000077500000000000000000000000001360565754300154145ustar00rootroot00000000000000xapps-1.6.10/test-scripts/xapp-gtk-window000077500000000000000000000106751360565754300204130ustar00rootroot00000000000000#! /usr/bin/python3 """ A demo/test script for the XAppAppGtkWindow class """ import sys, os import signal import gettext import time import gi gi.require_version('Gtk', '3.0') gi.require_version('XApp', '1.0') from gi.repository import GLib, Gtk, XApp, GObject signal.signal(signal.SIGINT, signal.SIG_DFL) class Main: def __init__(self): self.win = XApp.GtkWindow() self._animate_progress = 0 self.win.set_default_size(320, 200) frame = Gtk.Frame() frame.set_margin_start(2) frame.set_margin_end(2) frame.set_margin_top(2) frame.set_margin_bottom(2) self.win.add(frame) box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) box.set_margin_start(2) box.set_margin_end(2) box.set_margin_top(2) box.set_margin_bottom(2) frame.add(box) heading = Gtk.Label() heading.set_markup("Use 'xprop -spy' to monitor changes") box.pack_start(heading, True, True, 4) hbox = Gtk.HBox() self.icon_name_entry = Gtk.Entry() self.icon_name_setter = Gtk.Button("Set icon name") self.icon_name_setter.connect("clicked", self.on_icon_name_setter_clicked) hbox.pack_start(self.icon_name_entry, True, True, 4) hbox.pack_start(self.icon_name_setter, False, False, 4) box.pack_start(hbox, True, True, 4) hbox = Gtk.HBox() self.icon_path_entry = Gtk.Entry() self.icon_path_setter = Gtk.Button("Set icon path") self.icon_path_setter.connect("clicked", self.on_icon_path_setter_clicked) hbox.pack_start(self.icon_path_entry, True, True, 4) hbox.pack_start(self.icon_path_setter, False, False, 4) box.pack_start(hbox, True, True, 4) hbox = Gtk.HBox() self.progress_label = Gtk.Label("Progress:") self.progress = Gtk.Scale() self.progress.connect("value-changed", self.on_progress_value_changed) self.progress.set_draw_value(True) self.progress.set_digits(0) self.progress.set_range(0, 100) hbox.pack_start(self.progress_label, False, False, 4) hbox.pack_start(self.progress, True, True, 4) box.pack_start(hbox, True, True, 4) hbox = Gtk.HBox() self.pulse_label = Gtk.Label("Progress pulse:") self.pulse_switch = Gtk.Switch() self.pulse_switch.set_halign(Gtk.Align.CENTER) self.pulse_switch.connect("notify::active", self.on_pulse_switch_changed) hbox.pack_start(self.pulse_label, False, False, 4) hbox.pack_start(self.pulse_switch, True, True, 4) box.pack_start(hbox, True, True, 4) hbox = Gtk.HBox() self.animate_button = Gtk.Button("Simulate progress over time") self.animate_button.connect("clicked", self.on_animate_progress_clicked) hbox.pack_start(self.animate_button, True, True, 4) box.pack_start(hbox, True, True, 4) frame.show_all() self.win.connect("delete-event", lambda w, e: Gtk.main_quit()) self.win.present() Gtk.main() def on_animate_progress_clicked(self, button, data=None): self.progress.set_sensitive(False) self.pulse_switch.set_sensitive(False) self._animate_progress = 0 self.win.set_progress(0) GObject.timeout_add(500, self.on_progress_tick) def on_progress_tick(self): self.win.set_progress(self._animate_progress) if self._animate_progress == 100: self.on_animate_complete() return False else: self._animate_progress += 1 return True def on_animate_complete(self): self.progress.set_sensitive(True) self.pulse_switch.set_sensitive(True) self.progress.set_value(100) def on_icon_name_setter_clicked(self, button, data=None): self.win.set_icon_name(self.icon_name_entry.get_text()) def on_icon_path_setter_clicked(self, button, data=None): try: self.win.set_icon_from_file(self.icon_path_entry.get_text()) except GLib.Error as e: print(e.message) def on_progress_value_changed(self, range, data=None): self.win.set_progress(int(self.progress.get_value())) self.pulse_switch.set_active(False) def on_pulse_switch_changed(self, switch, pspec, data=None): self.win.set_progress_pulse(self.pulse_switch.get_active()) if __name__ == "__main__": main = Main() xapps-1.6.10/test-scripts/xapp-icon-chooser-dialog000077500000000000000000000040061360565754300221350ustar00rootroot00000000000000#!/usr/bin/python3 import gi gi.require_version('Gtk', '3.0') gi.require_version('XApp', '1.0') from gi.repository import Gtk, XApp, Gdk import argparse import signal signal.signal(signal.SIGINT, signal.SIG_DFL) if __name__ == '__main__': parser = argparse.ArgumentParser() group = parser.add_mutually_exclusive_group() # if there are no arguments supplied, we should create a new launcher in the default location (usually ~/.local/share/applications/) group.add_argument('-c', '--category', dest='category', metavar='CATEGORY', help='The category to select when the dialog is opened.') group.add_argument('-i', '--icon-string', dest='icon', metavar='ICON_STRING', help='The icon to select when the dialog is opened. This can be an icon name or a path. ' 'If the icon doesn\'t exist, it will not cause an error, but there may not be an icon ' 'selected.') parser.add_argument('-b', '--clipboard', dest='clipboard', action='store_true', help='If this option is supplied, the result will be copied to the clipboard when an icon is ' 'selected and the dialog closed.') parser.add_argument('-p', '--disallow-paths', dest='paths', action='store_false', help='causes the path.') args = parser.parse_args() dialog = XApp.IconChooserDialog(allow_paths=args.paths, default_icon='folder') dialog.set_skip_taskbar_hint(False) if args.category: response = dialog.run_with_category(args.category) elif args.icon: response = dialog.run_with_icon(args.icon) else: response = dialog.run() if response == Gtk.ResponseType.OK: string = dialog.get_icon_string() print(string) if args.clipboard: clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) clipboard.set_text(string, -1) clipboard.store() else: print('Dialog canceled') xapps-1.6.10/test-scripts/xapp-kbd-layout-controller000077500000000000000000000127351360565754300225540ustar00rootroot00000000000000#! /usr/bin/python3 """ A demo/test script for the XAppKbdLayoutController class """ import sys, os import signal import gettext import gi gi.require_version('Gtk', '3.0') gi.require_version('XApp', '1.0') from gi.repository import Gtk, XApp, GObject import cairo signal.signal(signal.SIGINT, signal.SIG_DFL) class Main: def __init__(self): win = Gtk.Window() win.set_default_size(320, 200) frame = Gtk.Frame() frame.set_margin_start(2) frame.set_margin_end(2) frame.set_margin_top(2) frame.set_margin_bottom(2) win.add(frame) box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) box.set_margin_start(2) box.set_margin_end(2) box.set_margin_top(2) box.set_margin_bottom(2) frame.add(box) self.use_caps = False self.controller = XApp.KbdLayoutController() self.controller.connect("layout-changed", self.on_layout_changed) self.controller.connect("config-changed", self.on_config_changed) self.label = Gtk.Label() self.label.set_text(self.controller.get_current_name()) box.pack_start(self.label, True, True, 4) hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) box.pack_start(hbox, True, True, 4) self.flag_button = Gtk.Button() hbox.pack_start(self.flag_button, True, True, 4) self.flag_button.connect("clicked", self.on_button_clicked) self.group_button = Gtk.Button() hbox.pack_start(self.group_button, True, True, 4) self.group_button.connect("clicked", self.on_button_clicked) self.variant_button = Gtk.Button() hbox.pack_start(self.variant_button, True, True, 4) self.variant_button.connect("clicked", self.on_button_clicked) check = Gtk.CheckButton.new_with_label("Use caps") check.connect("toggled", self.on_caps_toggled) box.pack_start(check, True, True, 4) frame.show_all() win.connect("delete-event", lambda w, e: Gtk.main_quit()) self.on_layout_changed(self.controller) win.present() Gtk.main() def on_caps_toggled(self, widget): self.use_caps = widget.get_active() self.on_layout_changed(self.controller) def on_button_clicked(self, widget, data=None): self.controller.next_group() def on_layout_changed(self, controller, group=None): handled = False name = self.controller.get_current_icon_name() if name != None: filename = "/usr/share/iso-flag-png/%s.png" % name if os.path.exists(filename): valid, width, height = Gtk.IconSize.lookup(Gtk.IconSize.LARGE_TOOLBAR) surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height) flag_surface = cairo.ImageSurface.create_from_png(filename) cr = cairo.Context(surface) cr.save() factor = width / flag_surface.get_width() true_width = flag_surface.get_width() * factor true_height = flag_surface.get_height() * factor x_offset = y_offset = 0 if flag_surface.get_width() >= flag_surface.get_height(): x_offset = 0 y_offset = ((height * (1 / factor)) - flag_surface.get_height()) / 2 else: x_offset = ((width * (1 / factor)) - flag_surface.get_width()) / 2 y_offset = 0 true_x_offset = (width - true_width) / 2; true_y_offset = (height - true_height) / 2; cr.scale(factor, factor); cr.set_source_surface(flag_surface, x_offset, y_offset); cr.get_source().set_filter(cairo.FILTER_BEST); cr.set_operator(cairo.OPERATOR_SOURCE); cr.paint(); cr.restore() XApp.KbdLayoutController.render_cairo_subscript(cr, true_x_offset + (true_width / 2), true_y_offset + (true_height / 2), true_width / 2, true_height / 2, self.controller.get_current_flag_id()) image = Gtk.Image.new_from_surface(cr.get_target()) self.flag_button.set_image(image) handled = True else: print("Missing /usr/share/iso-flag-png flag image - text only") if not handled: name = self.controller.get_current_short_group_label() if self.use_caps: self.flag_button.set_label(name.upper()) else: self.flag_button.set_label(name) self.flag_button.set_image(None) self.label.set_text(self.controller.get_current_name()) group_label = self.controller.get_current_short_group_label() variant_label = self.controller.get_current_variant_label() if self.use_caps: group_label = group_label.upper() variant_label = variant_label.upper() self.group_button.set_label(group_label) self.variant_button.set_label(variant_label) def on_config_changed(self, controller): GObject.idle_add(self.on_layout_changed, controller) if __name__ == "__main__": main = Main() xapps-1.6.10/test-scripts/xapp-status-applet000077500000000000000000000125411360565754300211210ustar00rootroot00000000000000#!/usr/bin/python3 import gi gi.require_version('Gtk', '3.0') gi.require_version('XApp', '1.0') from gi.repository import Gio, GLib, GObject, Gtk, XApp import os import sys DBUS_NAME = "org.x.StatusIcon" DBUS_PATH = "/org/x/StatusIcon" class StatusWidget(Gtk.Button): def __init__(self, icon): super(Gtk.Button, self).__init__() self.proxy = icon self.name = self.proxy.get_name() box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) self.image = Gtk.Image() self.label = Gtk.Label() box.pack_start(self.image, False, False, 6) box.add(self.label) self.add(box) flags = GObject.BindingFlags.DEFAULT | GObject.BindingFlags.SYNC_CREATE self.image.props.icon_size = Gtk.IconSize.DIALOG self.set_icon(self.proxy.props.icon_name) self.show_all() self.proxy.bind_property("label", self.label, "label", flags) self.proxy.bind_property("tooltip-text", self, "tooltip-text", flags) self.proxy.bind_property("visible", self, "visible", flags) self.proxy.connect("notify::icon-name", self.on_icon_name_changed) self.connect("button-press-event", self.on_button_press) self.connect("button-release-event", self.on_button_release) def on_icon_name_changed(self, proxy, gparamspec, data=None): string = self.proxy.props.icon_name self.set_icon(string) def set_icon(self, string): if string: if string and os.path.exists(string): self.image.set_from_file(string) else: self.image.set_from_icon_name(string, Gtk.IconSize.DIALOG) else: self.image.set_from_icon_name("image-missing", Gtk.IconSize.DIALOG) def on_button_press(self, widget, event): # We're simulating a top panel here alloc = widget.get_allocation() ignore, x, y = widget.get_window().get_origin() x += alloc.x y += alloc.y + alloc.height time = event.time print ("Button press : %d:%d" % (x, y)) self.proxy.call_button_press_sync(x, y, event.button, event.time, Gtk.PositionType.TOP, None) def on_button_release(self, widget, event): # We're simulating a top panel here alloc = widget.get_allocation() ignore, x, y = widget.get_window().get_origin() x += alloc.x y += alloc.y + alloc.height time = event.time print ("Button release : %d:%d" % (x, y)) self.proxy.call_button_release_sync(x, y, event.button, event.time, Gtk.PositionType.TOP, None) class StatusApplet(GObject.Object): def __init__(self): super(StatusApplet, self).__init__() self.window = Gtk.Window() self.window.set_accept_focus (False) self.window.connect("destroy", self.on_window_destroy) self.main_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, margin=6, spacing=6) self.window.add(self.main_box) self.disco_button = Gtk.Button() self.main_box.pack_start(self.disco_button, False, False, 0) self.disco_button.connect("clicked", self.on_disco_button_clicked) self.indicator_box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=6) self.main_box.pack_start(self.indicator_box, False, False, 0) self.indicators = {} self.monitor = None self.setup_monitor() self.window.show_all() def on_window_destroy(self, widget, data=None): self.destroy_monitor() Gtk.main_quit() def on_disco_button_clicked(self, widget, data=None): if self.monitor == None: self.setup_monitor () else: self.destroy_monitor() def setup_monitor (self): self.monitor = XApp.StatusIconMonitor() self.monitor.connect("icon-added", self.on_icon_added) self.monitor.connect("icon-removed", self.on_icon_removed) self.disco_button.set_label("Disconnect monitor") def destroy_monitor (self): for key in self.indicators.keys(): self.indicator_box.remove(self.indicators[key]) self.monitor = None self.indicators = {} self.disco_button.set_label("Connect monitor") def on_icon_added(self, monitor, proxy): name = proxy.get_name() self.indicators[name] = StatusWidget(proxy) self.indicator_box.add(self.indicators[name]) self.sort_icons() def on_icon_removed(self, monitor, proxy): name = proxy.get_name() self.indicator_box.remove(self.indicators[name]) del(self.indicators[name]) self.sort_icons() def sort_icons(self, status_icon=None): icon_list = list(self.indicators.values()) # for i in icon_list: # print("before: ", i.proxy.props.icon_name, i.proxy.props.name.lower()) icon_list.sort(key=lambda icon: icon.proxy.props.name.lower()) icon_list.sort(key=lambda icon: icon.proxy.props.icon_name.lower().endswith("symbolic")) # for i in icon_list: # print("after: ", i.proxy.props.icon_name, i.proxy.props.name.lower()) icon_list.reverse() for icon in icon_list: self.indicator_box.reorder_child(icon, 0) if __name__ == '__main__': applet = StatusApplet() Gtk.main() sys.exit(0)xapps-1.6.10/test-scripts/xapp-status-icon-variants/000077500000000000000000000000001360565754300224605ustar00rootroot00000000000000xapps-1.6.10/test-scripts/xapp-status-icon-variants/xapp-status-icon-activate-and-menu000077500000000000000000000035171360565754300311330ustar00rootroot00000000000000#!/usr/bin/python3 import gi gi.require_version('XApp', '1.0') from gi.repository import XApp, Gtk, Gdk from gi.repository import GLib, GObject import sys """ This variant tests behavior of giving a only a secondary menu to the StatusIcon instance. This results in 'activate' signals being sent for primary clicks only. """ class App(GObject.Object): def __init__(self): super(App, self).__init__() self.status_icon = XApp.StatusIcon() self.status_icon.connect("state-changed", self.on_icon_state_changed) self.status_icon.set_icon_name("folder-symbolic") self.status_icon.set_tooltip_text("Testing primary activate and secondary menu") self.status_icon.set_label("label 1") self.status_icon.set_visible(True) self.counter = 1 menu = Gtk.Menu() menu.append(Gtk.MenuItem.new_with_label("Hi, secondary menu here!")) menu.append(Gtk.SeparatorMenuItem()) menu.append(Gtk.MenuItem.new_with_label("Help me!")) menu.show_all() self.status_icon.set_secondary_menu(menu) self.status_icon.connect("activate", self.on_status_icon_activate) GLib.timeout_add_seconds(2, self.on_timeout_cb) def on_icon_state_changed(self, icon, new_state): print("Icon state changed - the state is now: %s" % new_state) def on_timeout_cb(self): self.counter += 1 self.status_icon.set_label("label %d" % self.counter) return True def on_status_icon_activate(self, icon, button, time): print("Activated via button %d" % button) self.counter = 0 self.status_icon.set_label("label %d" % self.counter) if __name__ == '__main__': GLib.setenv ("G_MESSAGES_DEBUG", "all", True) app = App() try: GLib.MainLoop().run() except KeyboardInterrupt: pass sys.exit(0) xapps-1.6.10/test-scripts/xapp-status-icon-variants/xapp-status-icon-ai000077500000000000000000000047461360565754300262270ustar00rootroot00000000000000#!/usr/bin/python3 import gi gi.require_version('AppIndicator3', '0.1') gi.require_version('Gtk', '3.0') from gi.repository import Gtk, Gdk, AppIndicator3 from gi.repository import GLib, GObject import sys """ This variant tests behavior of a program using mint-patched AppIndicator, which will fall back to XAppStatusIcon if there is no AppIndicator support in the desktop environment. AppIndicator expects both left- and right-click to display the menu, so internally, AppIndicator sets both primary and secondary menus on the XAppStatusIcon. """ class App(GObject.Object): def __init__(self): super(App, self).__init__() self.indicator = AppIndicator3.Indicator.new("xapp-status-icon-via-libappindicator", "info", AppIndicator3.IndicatorCategory.SYSTEM_SERVICES) self.indicator.set_icon_full("info", "Everything is fine.") self.indicator.set_label("AppIndicator3 1", "AppIndicator3 1000") self.indicator.set_status(AppIndicator3.IndicatorStatus.ACTIVE) self.indicator.set_title("Testing patched appindicator fallback to XApp.StatusIcon") self.counter = 1 self.menu = Gtk.Menu() secondary_activation_item = Gtk.MenuItem.new_with_label("Activate target (middle click)") secondary_activation_item.connect("activate", self.activate_window) self.indicator.set_secondary_activate_target(secondary_activation_item) self.menu.append(secondary_activation_item) self.menu.append(Gtk.MenuItem.new_with_label("Engage the hyperdrive")) self.menu.append(Gtk.SeparatorMenuItem()) self.menu.append(Gtk.MenuItem.new_with_label("It's a trap!")) self.menu.show_all() self.indicator.set_menu(self.menu) GLib.timeout_add_seconds(2, self.on_timeout_cb) def activate_window(self, item, data=None): w = Gtk.Window(default_width=300, default_height=130) b = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) w.add(b) b.pack_start(Gtk.Label("How can I help you?"), True, True, 0) w.show_all() def on_timeout_cb(self): self.counter += 1 self.indicator.set_label("AppIndicator3 %d" % self.counter, "AppIndicator3 1000") return True if __name__ == '__main__': GLib.setenv ("G_MESSAGES_DEBUG", "all", True) app = App() try: GLib.MainLoop().run() except KeyboardInterrupt: pass sys.exit(0) xapps-1.6.10/test-scripts/xapp-status-icon-variants/xapp-status-icon-all-menus000077500000000000000000000035511360565754300275240ustar00rootroot00000000000000#!/usr/bin/python3 import gi gi.require_version('XApp', '1.0') from gi.repository import XApp, Gtk, Gdk from gi.repository import GLib, GObject import sys """ This variant tests behavior of giving primary and secondary menus to the StatusIcon instance. The instance handles all menu-related things internally. There is no activation signal. """ class App(GObject.Object): def __init__(self): super(App, self).__init__() self.status_icon = XApp.StatusIcon() self.status_icon.connect("state-changed", self.on_icon_state_changed) self.status_icon.set_icon_name("folder-symbolic") self.status_icon.set_tooltip_text("Testing primary and secondary menus") self.status_icon.set_label("label 1") self.status_icon.set_visible(True) self.counter = 1 menu = Gtk.Menu() menu.append(Gtk.MenuItem.new_with_label("Engage the hyperdrive")) menu.append(Gtk.SeparatorMenuItem()) menu.append(Gtk.MenuItem.new_with_label("It's a trap!")) menu.show_all() self.status_icon.set_primary_menu(menu) menu = Gtk.Menu() menu.append(Gtk.MenuItem.new_with_label("Hi, secondary menu here!")) menu.append(Gtk.SeparatorMenuItem()) menu.append(Gtk.MenuItem.new_with_label("Help me!")) menu.show_all() self.status_icon.set_secondary_menu(menu) GLib.timeout_add_seconds(2, self.on_timeout_cb) def on_icon_state_changed(self, icon, new_state): print("Icon state changed - the state is now: %s" % new_state) def on_timeout_cb(self): self.counter += 1 self.status_icon.set_label("label %d" % self.counter) return True if __name__ == '__main__': GLib.setenv ("G_MESSAGES_DEBUG", "all", True) app = App() try: GLib.MainLoop().run() except KeyboardInterrupt: pass sys.exit(0) xapps-1.6.10/test-scripts/xapp-status-icon-variants/xapp-status-icon-no-menus000077500000000000000000000030461360565754300273670ustar00rootroot00000000000000#!/usr/bin/python3 import gi gi.require_version('XApp', '1.0') from gi.repository import XApp, Gtk, Gdk from gi.repository import GLib, GObject import sys """ This variant tests behavior of providing no menus to the StatusIcon instance. This results in 'activate' signals being sent for all button presses. """ class App(GObject.Object): def __init__(self): super(App, self).__init__() self.status_icon = XApp.StatusIcon() self.status_icon.connect("state-changed", self.on_icon_state_changed) self.status_icon.set_icon_name("folder-symbolic") self.status_icon.set_tooltip_text("Testing primary activate and secondary menu") self.status_icon.set_label("label 1") self.status_icon.set_visible(True) self.counter = 1 self.status_icon.connect("activate", self.on_status_icon_activate) GLib.timeout_add_seconds(2, self.on_timeout_cb) def on_icon_state_changed(self, icon, new_state): print("Icon state changed - the state is now: %s" % new_state) def on_timeout_cb(self): self.counter += 1 self.status_icon.set_label("label %d" % self.counter) return True def on_status_icon_activate(self, icon, button, time): print("Activated via button %d" % button) self.counter = 0 self.status_icon.set_label("label %d" % self.counter) if __name__ == '__main__': GLib.setenv ("G_MESSAGES_DEBUG", "all", True) app = App() try: GLib.MainLoop().run() except KeyboardInterrupt: pass sys.exit(0) xapps-1.6.10/test-scripts/xapp-status-icon-variants/xapp-status-icon-raw-events000077500000000000000000000052271360565754300277240ustar00rootroot00000000000000#!/usr/bin/python3 import gi gi.require_version('XApp', '1.0') from gi.repository import XApp, Gtk, Gdk from gi.repository import GLib, GObject import sys """ This variant tests button-press-event and button-release-event with no menus assigned - it must do all menu handling itself. """ class App(GObject.Object): def __init__(self): super(App, self).__init__() self.status_icon = XApp.StatusIcon() self.status_icon.connect("state-changed", self.on_icon_state_changed) self.status_icon.set_icon_name("folder-symbolic") self.status_icon.set_tooltip_text("Testing raw button press and release events") self.status_icon.set_label("label 1") self.status_icon.set_visible(True) self.counter = 1 self.menu = Gtk.Menu() self.menu.append(Gtk.MenuItem.new_with_label("Engage the hyperdrive")) self.menu.append(Gtk.SeparatorMenuItem()) self.menu.append(Gtk.MenuItem.new_with_label("It's a trap!")) self.menu.show_all() self.status_icon.connect("button-press-event", self.on_button_press) self.status_icon.connect("button-release-event", self.on_button_release) GLib.timeout_add_seconds(2, self.on_timeout_cb) def on_icon_state_changed(self, icon, new_state): print("Icon state changed - the state is now: %s" % new_state) def on_timeout_cb(self): self.counter += 1 self.status_icon.set_label("label %d" % self.counter) return True def on_button_press(self, status_icon, x, y, button, time, position_type): print("Mouse button %d was pressed at %d %d" % (button, x, y)) self.counter = 0 self.status_icon.set_label("label %d" % self.counter) def on_button_release(self, status_icon, x, y, button, time, position_type): print("Mouse button %d was released at %d %d" % (button, x, y)) if button == 3: def position_menu_cb(menu, pointer_x, pointer_y, user_data): [x, y, position] = user_data; if (position_type == Gtk.PositionType.BOTTOM): y = y - menu.get_allocation().height; if (position_type == Gtk.PositionType.RIGHT): x = x - menu.get_allocation().width; return (x, y, False) device = Gdk.Display.get_default().get_device_manager().get_client_pointer() self.menu.popup_for_device(device, None, None, position_menu_cb, [x, y, position_type], button, 0) if __name__ == '__main__': GLib.setenv ("G_MESSAGES_DEBUG", "all", True) app = App() try: GLib.MainLoop().run() except KeyboardInterrupt: pass sys.exit(0) xapps-1.6.10/xapp.pot000066400000000000000000000066071360565754300144550ustar00rootroot00000000000000# 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: 2019-11-12 11:04+0100\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" #: libxapp/xapp-icon-chooser-button.c:207 #: libxapp/xapp-icon-chooser-dialog.c:613 msgid "Icon size" msgstr "" #: libxapp/xapp-icon-chooser-button.c:208 #: libxapp/xapp-icon-chooser-dialog.c:614 msgid "The preferred icon size." msgstr "" #: libxapp/xapp-icon-chooser-button.c:222 msgid "Icon" msgstr "" #: libxapp/xapp-icon-chooser-button.c:223 msgid "The string representing the icon." msgstr "" #: libxapp/xapp-icon-chooser-button.c:234 msgid "Category" msgstr "" #: libxapp/xapp-icon-chooser-button.c:235 msgid "The default category." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:95 msgid "Actions" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:98 msgid "Applications" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:101 msgid "Categories" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:104 msgid "Devices" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:107 msgid "Emblems" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:110 msgid "Emoji" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:113 msgid "Mime types" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:116 msgid "Places" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:119 msgid "Status" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:122 msgid "Other" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:451 msgid "Choose an icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:473 msgid "Search" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:480 msgid "Browse" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:536 msgid "Loading..." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:560 msgid "Default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:570 msgid "Select" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:579 #: libxapp/xapp-icon-chooser-dialog.c:1937 msgid "Cancel" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:626 msgid "Allow Paths" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:627 msgid "Whether to allow paths." msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:638 msgid "Default Icon" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:639 msgid "The icon to use by default" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1934 msgid "Select image file" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1939 msgid "Open" msgstr "" #: libxapp/xapp-icon-chooser-dialog.c:1954 msgid "Image" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:260 msgid "About" msgstr "" #: status-applets/mate/mate-xapp-status-applet.py:280 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:7 #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:11 msgid "Area where XApp status icons appear" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:6 msgid "XApp Status Applet Factory" msgstr "" #: status-applets/mate/org.x.MateXAppStatusApplet.mate-panel-applet.in:10 msgid "XApp Status Applet" msgstr ""