pax_global_header00006660000000000000000000000064126466653250014531gustar00rootroot0000000000000052 comment=62ce5d1e23660648bdd2921083bd5fbe5b2483e1 alternative-toolbar-0.16.3/000077500000000000000000000000001264666532500155765ustar00rootroot00000000000000alternative-toolbar-0.16.3/.gitignore000066400000000000000000000007511264666532500175710ustar00rootroot00000000000000*.py[co] # Packages *.egg *.egg-info dist build eggs parts .idea bin var sdist develop-eggs .installed.cfg # Installer logs pip-log.txt # Unit test / coverage reports .coverage .tox #Translations *.mo *.gmo #Mr Developer .mr.developer.cfg img/usericons/popups.xml *~ aclocal.m4 autom4te.cache/ compile configure install-sh missing Makefile Makefile.in config.* po/Makefile* po/POTFILES po/stamp-it m4/intltool.m4 alternative-toolbar.plugin po/.intltool-merge-cache *.gschema.valid alternative-toolbar-0.16.3/ChangeLog000066400000000000000000000314241264666532500173540ustar00rootroot00000000000000commit 5f2ba9721c9bc95c8a2e47a6c121b74e687ebcf4 Author: fossfreedom Date: Sun Jan 17 10:16:36 2016 +0000 ready new version 0.16.3 GENERAL | 25 ++++++++++++++++---- README.md | 2 +- configure.ac | 2 +- readme.html | 77 +++++++++++++++++++++++++++++++++++++----------------------- 4 files changed, 71 insertions(+), 35 deletions(-) commit 74e89aa2ed78088d5535049b4feab6deed0c0a29 Author: fossfreedom Date: Sun Jan 17 09:55:02 2016 +0000 more cleanup before packaging alternative-toolbar.py | 19 +++++---- alttoolbar_controller.py | 2 +- alttoolbar_plugins.py | 8 ++-- alttoolbar_preferences.py | 15 +++---- alttoolbar_rb3compat.py | 8 ++-- alttoolbar_repeat.py | 8 ++-- alttoolbar_sidebar.py | 41 +++++++++---------- alttoolbar_type.py | 102 +++++++++++++++++++++++----------------------- alttoolbar_widget.py | 4 +- 9 files changed, 103 insertions(+), 104 deletions(-) commit 83414508bf13834fc581a30a140c04ab1a2b5d55 Merge: a8cf325 f2440cd Author: fossfreedom Date: Sun Jan 17 09:38:44 2016 +0000 Merge branch 'master' of https://github.com/fossfreedom/alternative-toolbar commit a8cf325aa7b7dd233d18822710e4820ad8db8cc4 Author: fossfreedom Date: Sun Jan 17 09:38:14 2016 +0000 some cleanup before packaging GENERAL | 16 ++++++++++++++++ alternative-toolbar.py | 2 -- 2 files changed, 16 insertions(+), 2 deletions(-) commit f2440cd2a7fdc63d5993abd26db8d1f681d9efdc Author: fossfreedom Date: Mon Jan 11 19:35:44 2016 +0000 try an alternative way to save column changes to cope with different ways to close - issue #73 alternative-toolbar.py | 6 ------ alttoolbar_type.py | 39 +++++++++++++++++++++++++++++++-------- 2 files changed, 31 insertions(+), 14 deletions(-) commit b7ca77f7c6905a1fe60720c979b6c49690416b27 Author: fossfreedom Date: Sat Jan 9 22:45:02 2016 +0000 add method to get the current toolbar together with a Gtk.Box where new UI elements can be added README.md | 2 +- alternative-toolbar.plugin.in | 4 ++-- alternative-toolbar.py | 10 ++++++++++ alttoolbar_type.py | 34 ++++++++++++++++++++++++++++++++-- configure.ac | 2 +- 5 files changed, 46 insertions(+), 6 deletions(-) commit 22b471263ac7043c6eafb6ea041e590d7cd7d0d3 Author: fossfreedom Date: Thu Jan 7 20:41:55 2016 +0000 ensure Missing and ImportErrors appear correctly in the tree - issue #59 alttoolbar_controller.py | 11 ++++++++--- alttoolbar_sidebar.py | 32 ++++++++++++++++++-------------- 2 files changed, 26 insertions(+), 17 deletions(-) commit a144eb0bdc8ed5472098e54ab2ca4601a0105d53 Author: fossfreedom Date: Tue Jan 5 19:49:34 2016 +0000 minor version update and description change README.md | 2 +- alternative-toolbar.plugin.in | 6 +++--- configure.ac | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) commit 4487d3fdd386dd9619ae2b94dd02568c1c313b79 Merge: 06245b1 159de9a Author: David Mohammed Date: Tue Jan 5 06:55:07 2016 +0000 Merge pull request #70 from gipawu/master Enable slider function commit 159de9a0b717025fe09dd3ff3bb2b13f74cd5479 Author: gipawu Date: Tue Jan 5 01:21:47 2016 +0100 readme note README.md | 1 + 1 file changed, 1 insertion(+) commit f5461e491cc799ce577bce6657e2dd3858779b49 Author: gipawu Date: Tue Jan 5 01:17:57 2016 +0100 enable_slider rework - part 3 alternative-toolbar.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) commit 15d3821bb7ac507781280e6b87ca556d20a2777d Author: gipawu Date: Tue Jan 5 01:13:55 2016 +0100 enable_slider rework - part 1 alttoolbar_type.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 431f99dc36ad8bc15482e8c631cf623953e5e12f Author: gipawu Date: Tue Jan 5 01:12:26 2016 +0100 enable_slider rework - part 1 alttoolbar_type.py | 2 ++ 1 file changed, 2 insertions(+) commit 68abfc5fe478f8a1e90753fc22be1a2da72ab543 Author: gipawu Date: Tue Jan 5 00:20:54 2016 +0100 disable slider on track stop alternative-toolbar.py | 1 + 1 file changed, 1 insertion(+) commit a8183379454d5e7358d57bddabfb4c1797474ecc Author: gipawu Date: Mon Jan 4 18:23:29 2016 +0100 enable_slider function alttoolbar_type.py | 10 ++++++++++ 1 file changed, 10 insertions(+) commit a298c125c97acd6bac9d478f7ca223cd40b2dd97 Author: gipawu Date: Mon Jan 4 18:20:24 2016 +0100 Enable or disable slider depending on duration existance alternative-toolbar.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) commit 06245b1a890ddfb76ac7f5df3b09d05ee1cc4d10 Author: David Mohammed Date: Tue Dec 29 16:53:45 2015 +0000 obvious typos #68 README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 25d083a9f47f8f4350fc1a5456419a1669caf0a7 Author: fossfreedom Date: Mon Dec 28 14:28:59 2015 +0000 add ChangeLog handling GENERAL | 6 ++++++ Makefile.am | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+) commit e69ed2b9a46c8a1cf3637500619a4c08d2bea309 Author: fossfreedom Date: Mon Dec 28 10:52:05 2015 +0000 add column repositioning capability via drag-and-drop - issue #67 README.md | 60 ++++++++----- alternative-toolbar.plugin.in | 2 +- alternative-toolbar.py | 9 ++ alttoolbar_type.py | 204 ++++++++++++++++++++++++++++++++++++++++++ configure.ac | 3 +- 5 files changed, 255 insertions(+), 23 deletions(-) commit dbfaf5ba343dff9da3ac4eeed1d6baedcd50e6dc Author: fossfreedom Date: Sun Dec 20 00:16:01 2015 +0000 translation display fixes - issue #64 alttoolbar_sidebar.py | 9 ++++++++- alttoolbar_type.py | 22 +++++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) commit 1427c622b57d3a27bc930062e88161158a95be52 Author: fossfreedom Date: Sat Dec 19 20:47:52 2015 +0000 v15.0 updates for stable release Makefile.am | 8 ++++++-- alternative-toolbar.plugin.in | 2 +- readme.html | 33 +++++++++++++++++++++++++++------ 3 files changed, 34 insertions(+), 9 deletions(-) commit 20b26ecc8cc5e9218598c08551945c4e8f4b8ca2 Author: David Mohammed Date: Sat Dec 19 15:16:21 2015 +0000 https://github.com/ikeydoherty README.md | 1 + 1 file changed, 1 insertion(+) commit 5363166526b9757ee425598acab33c7b80c597df Author: fossfreedom Date: Sat Dec 19 10:59:02 2015 +0000 uninstallation of local and a note about DISTRO_PACKAGING (#63) DISTRO_PACKAGING | 14 ++++++++++++++ README.md | 9 ++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) commit e9937f7e08403fe02c353b917502ac1c35304d89 Author: fossfreedom Date: Sat Dec 19 10:43:09 2015 +0000 corrected installation instructions for new autotools method README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit 005cafaf24c13bb7e490921c8bd23cc8677a4f0e Author: fossfreedom Date: Sat Dec 19 10:37:14 2015 +0000 rework #63 to keep rhythmbox convention of ui files, build translation files, update version, revised gitignore .gitignore | 1 + Makefile.am | 11 +- README.md | 2 +- TRANSLATE_README | 37 +---- alttoolbar_preferences.py | 2 +- alttoolbar_type.py | 4 +- configure.ac | 2 +- po/POTFILES.in | 5 +- po/alternative-toolbar.pot | 295 ------------------------------------- ui/altlibrary.glade | 55 ------- ui/altlibrary.ui | 55 +++++++ ui/altpreferences.glade | 358 --------------------------------------------- ui/altpreferences.ui | 358 +++++++++++++++++++++++++++++++++++++++++++++ ui/alttoolbar.glade | 332 ----------------------------------------- ui/alttoolbar.ui | 332 +++++++++++++++++++++++++++++++++++++++++ 15 files changed, 765 insertions(+), 1084 deletions(-) commit c8ca45cf99f923c0e6daf1a332e74f1b93bde75e Merge: e49a9c1 371942f Author: fossfreedom Date: Fri Dec 18 20:08:00 2015 +0000 Merge branch 'ikeydoherty-autotools' commit 371942f1fb6d8f6802fbec32d9a1ef098eb302a1 Author: Ikey Doherty Date: Fri Dec 18 17:43:44 2015 +0000 Add a proper autotools build system Signed-off-by: Ikey Doherty .gitignore | 18 +++ Makefile | 24 --- Makefile.am | 77 ++++++++++ alternative-toolbar.plugin | 48 ------ alttoolbar_preferences.py | 2 +- alttoolbar_type.py | 4 +- autogen.sh | 24 +++ configure.ac | 42 +++++ install.sh | 80 ---------- m4/python-gi.m4 | 12 ++ po/LINGUAS | 25 +++ po/POTFILES.in | 6 + po/POTFILES.skip | 8 + po/create_all_po.sh | 8 - po/files_to_be_translated | 3 - po/install_all.sh | 8 - po/lang.sh | 15 -- po/py_files_to_be_translated | 8 - po/update_all_po.sh | 11 -- ui/altlibrary.glade | 55 +++++++ ui/altlibrary.ui | 55 ------- ui/altpreferences.glade | 358 +++++++++++++++++++++++++++++++++++++++++++ ui/altpreferences.ui | 358 ------------------------------------------- ui/alttoolbar.glade | 332 +++++++++++++++++++++++++++++++++++++++ ui/alttoolbar.ui | 332 --------------------------------------- 25 files changed, 960 insertions(+), 953 deletions(-) commit e49a9c12130ff66949374b3880c6dd8df77f1de4 Author: fossfreedom Date: Tue Nov 10 21:57:44 2015 +0000 latest ja translation po/ja.po | 296 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 296 insertions(+) commit 8521d866e7e5fb1d5cb39abb3d36e51952cf16f6 Author: fossfreedom Date: Fri Nov 6 16:55:19 2015 +0000 revise gentoo instructions README.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) commit 54155f425c4c1c04bebb83df84bab2531ddabf7b Author: fossfreedom Date: Fri Nov 6 16:47:34 2015 +0000 prepare for split debian/changelog | 6 ---- debian/compat | 1 - debian/control | 13 -------- debian/copyright | 24 --------------- debian/rules | 3 -- debian/source/format | 1 - debian/watch | 3 -- debian_cleanup.sh | 9 ------ .../alternative-toolbar-9999.ebuild | 35 ---------------------- 9 files changed, 95 deletions(-) commit 1293bcdadbcf8921289b0d2d96e77ca201df5935 Author: fossfreedom Date: Thu Nov 5 21:55:22 2015 +0000 general pep8 cleanups together with debian packaging recommendations GENERAL | 9 ++ README.md | 2 +- alternative-toolbar.plugin | 2 +- alternative-toolbar.plugin.in | 2 +- alternative-toolbar.py | 198 ++++++++++++++--------- alttoolbar_controller.py | 82 ++++++---- alttoolbar_plugins.py | 28 ++-- alttoolbar_preferences.py | 58 ++++--- alttoolbar_rb3compat.py | 140 +++++++++------- alttoolbar_repeat.py | 117 ++++++++------ alttoolbar_sidebar.py | 189 ++++++++++++---------- alttoolbar_type.py | 362 ++++++++++++++++++++++++++---------------- alttoolbar_widget.py | 31 ++-- debian/changelog | 188 +--------------------- debian/control | 2 +- debian/docs | 0 debian_cleanup.sh | 9 ++ readme.html | 178 +++++++++++++++++++++ 18 files changed, 915 insertions(+), 682 deletions(-) commit d0022bb6310a8edaac576a89379d5c94e0dedeca Author: fossfreedom Date: Wed Nov 4 23:33:17 2015 +0000 fix various debian lintian errors debian/changelog | 8 +------- debian/compat | 2 +- debian/control | 2 +- debian/copyright | 2 +- debian/watch | 3 +++ 5 files changed, 7 insertions(+), 10 deletions(-) alternative-toolbar-0.16.3/DISTRO_PACKAGING000066400000000000000000000005111264666532500200660ustar00rootroot00000000000000Use 'make distcheck' to create a tar.xz version of a version Alternatively (and preferably) use the Git Releases for the latest stable version. By default, the plugin needs user manual enablement to work. When packaging for a distro, add a patch to the .plugin.in file to include the section " [RB] InitiallyEnabled=true " alternative-toolbar-0.16.3/GENERAL000066400000000000000000000017761264666532500166110ustar00rootroot00000000000000# general dev stuff when testing with pyflakes ensure you run first export PYFLAKES_BUILTINS="_" when making a stable release, create a ChangeLog via make dist cleanup a make dist is make distclean #### Before uploading test with the following: grep -riE 'fixme|todo|hack|xxx' . suspicious-source pyflakes . pyflakes3 . pep8 --ignore W191 . find -type f \( -iname '*.po' -o -iname '*.pot' \) -exec msgfmt --check --check-compatibility --check-accelerators --output-file=/dev/null {} \; from the built and installed package: adequate rhythbox-plugin-alternative-toolbar #### change the version number in the README as well as configure.ac to create readme.html install the markdown package then markdown README.md > readme.html to sign the github tarball gpg --default-key 7B0393D9 --armor --detach-sign alternative-toolbar-0.15 .tar.gz Then add to the debian branch Then test all is well via: uscan --debug --force-download remember to remove the old compressed tarball above the source folder first!alternative-toolbar-0.16.3/LICENSE000066400000000000000000001044601264666532500166100ustar00rootroot00000000000000GNU 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. {one line to give the program's name and a brief idea of what it does.} Copyright (C) {year} {name of author} 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: {project} Copyright (C) {year} {fullname} 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 .alternative-toolbar-0.16.3/Makefile.am000066400000000000000000000052371264666532500176410ustar00rootroot00000000000000%.plugin: %.plugin.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*po) $(AM_V_GEN) \ $(MKDIR_P) "$(dir $@)"; \ $(INTLTOOL_MERGE) $(top_srcdir)/po $< $@ -d -u -c $(top_builddir)/po/.intltool-merge-cache rb_plugin_libdir = $(libdir)/rhythmbox/plugins/alternative-toolbar SUBDIRS = po CLEANFILES = \ alternative-toolbar.plugin \ ./po/.intltool-merge-cache \ ./po/Makefile \ ./po/POTFILES \ ./po/Makefile.in \ ./po/Makefile.in.in \ ./po/stamp-it \ ./m4/intltool.m4 DISTCLEANFILES = \ ChangeLog \ alternative-toolbar.plugin \ ./po/.intltool-merge-cache \ ./po/Makefile \ ./po/POTFILES \ ./po/Makefile.in \ ./po/Makefile.in.in \ ./po/stamp-it \ ./m4/intltool.m4 PLUGIN_FILES = \ alttoolbar_type.py \ alttoolbar_preferences.py \ alternative-toolbar.py \ alttoolbar_repeat.py \ alttoolbar_plugins.py \ alttoolbar_widget.py \ alttoolbar_sidebar.py \ alttoolbar_rb3compat.py \ alttoolbar_controller.py IMAGE_FILES = \ $(top_srcdir)/img/audio-radio-symbolic.svg \ $(top_srcdir)/img/audio-x-playlist-automatic-symbolic.svg \ $(top_srcdir)/img/audio-x-playlist-recently-added-symbolic.svg \ $(top_srcdir)/img/audio-x-playlist-recently-played-symbolic.svg \ $(top_srcdir)/img/audio-x-playlist-symbolic.svg \ $(top_srcdir)/img/audio-x-queue-symbolic.svg \ $(top_srcdir)/img/lastfm-symbolic.svg \ $(top_srcdir)/img/librefm-symbolic.svg UI_FILES = \ $(top_srcdir)/ui/altlibrary.ui \ $(top_srcdir)/ui/altpreferences.ui \ $(top_srcdir)/ui/alttoolbar.ui EXTRA_DIST = \ $(PLUGIN_FILES) \ alternative-toolbar.plugin.in \ $(IMAGE_FILES) \ $(UI_FILES) \ $(top_srcdir)/po/Makefile.in.in \ schema/org.gnome.rhythmbox.plugins.alternative_toolbar.gschema.xml \ LICENSE rb_plugin_lib_DATA = \ $(PLUGIN_FILES) \ alternative-toolbar.plugin \ LICENSE rb_plugin_imgdir = $(datadir)/rhythmbox/plugins/alternative-toolbar/img rb_plugin_img_DATA = \ $(IMAGE_FILES) rb_plugin_uidir = $(datadir)/rhythmbox/plugins/alternative-toolbar/ui rb_plugin_ui_DATA = \ $(UI_FILES) gsettings_SCHEMAS = \ schema/org.gnome.rhythmbox.plugins.alternative_toolbar.gschema.xml @GSETTINGS_RULES@ CHANGELOG_START = v0.14.0 ChangeLog: @echo Creating $@ @if test -d "$(srcdir)/.git"; then \ (GIT_DIR=$(top_srcdir)/.git ./missing --run git log $(CHANGELOG_START).. --stat) > $@.tmp \ && mv -f $@.tmp $@ \ || ($(RM) $@.tmp; \ echo Failed to generate ChangeLog. Your ChangeLog may be outdated >&2; \ (test -f $@ || echo git-log is required to generate this file >> $@)); \ else \ test -f $@ || \ (echo A git checkout and git-log is required to generate ChangeLog >&2 && \ echo A git checkout and git-log is required to generate this file >> $@); \ fi .PHONY: ChangeLog alternative-toolbar-0.16.3/README.md000066400000000000000000000145631264666532500170660ustar00rootroot00000000000000
alternative-toolbar Version Support
Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact toolbar which can be hidden. v0.16.3 Flattr This! PayPal Donate
Email foss.freedom@gmail.com
Website https://github.com/fossfreedom
Replace the current standard toolbar: ![pic](http://i.imgur.com/9FjnAd5.png) with either a compact toolbar: ![pic](http://i.imgur.com/5XqQKcG.png) or with the new Gnome-style client-side decoration: ![pic](http://i.imgur.com/rMkxjxw.png) ## Features - Move columns via Drag-and-Drop using a views' column headers - Toggle compact or standard toolbar on or off - Volume Control can be switched on or off for all toolbars - Source Toolbars can be toggled (`CTRL + T`) - Seek forward (fast-forward) through a track (`ALT + Right Arrow`) - Seek backward through a track (`ALT + Left Arrow`) - Redesigned sidebar - Redesigned plugin window, about box and plugin preferences window - Repeat button can now switch between repeat tracks and repeat-one-song mode - Plugin translated completely into [15 languages and locales (10 more on the way)](https://translations.launchpad.net/alternative-toolbar) The plugin preferences allows you to define which toolbars are used:

Plugin

## Keyboard shortcuts | Key | Action | |---------------------|----------------------------------------------| | `CTRL + T` | Toggled source toolbar. | | `CTRL + F` | Toggle search bar. | | `CTRL + P` | Start/Stop current track. | | `CTRL + R` | Open repeat menu. | | `CTRL + K` | Toggle play queue. | | `CTRL + A/?` | Select all songs in playlist. | | `ALT + Right Arrow` | Seek forward (fast-forward) through a track. | | `ALT + Left Arrrow` | Seek backward through a track. | After installation enable the plugin in the plugins window:

Enable plugin

If you need to enable the player controls & source menu, this can be done from the menu: - Menu -> - View -> - Show Play-Controls Toolbar - Show Source and Media Toolbars ## Installation **Latest Stable Release via source code compilation** Navigate to the archive and grab the newest .tar.gz from https://github.com/fossfreedom/alternative-toolbar/releases ```bash cd ~/Downloads sudo apt-get install intltool tar -zxvf alternative-toolbar*.tar.gz cd alternative-toolbar* ./autogen.sh --prefix=/usr make sudo make install ``` This will install a system-wide installation. If you have a previous locally installed version of the plugin, remove it: ``` rm -rf ~/.local/share/rhythmbox/plugins/alternative-toolbar ``` **Install Latest Development Release via Git** ```bash cd ~/Downloads sudo apt-get install intltool git git clone https://github.com/fossfreedom/alternative-toolbar.git cd alternative-toolbar ./autogen.sh --prefix=/usr make sudo make install ``` This will install a system-wide installation. If you have a previous locally installed version of the plugin, remove it: ``` rm -rf ~/.local/share/rhythmbox/plugins/alternative-toolbar ``` **Ubuntu PPA - latest stable release** If you are using Ubuntu you can install alternative-toolbar via a [PPA](https://launchpad.net/~fossfreedom/+archive/ubuntu/rhythmbox-plugins). ```bash sudo add-apt-repository ppa:fossfreedom/rhythmbox-plugins sudo apt-get update sudo apt-get install rhythmbox-plugin-alternative-toolbar ``` **Arch AUR - latest development release** If you are using Arch you can install alternative-toolbar via the [rhythmbox-plugin-alternative-toolbar-git](https://aur.archlinux.org/packages/rhythmbox-plugin-alternative-toolbar-git/) package **Gentoo ebuild** If you are using Gentoo you can install alternative-toolbar by adding the ebuild located in the gentoo branch `gentoo/x11-plugins/alternative-toolbar` to your local overlay (`/usr/local/portage`). i.e. ``` git clone https://github.com/fossfreedom/alternative-toolbar -b gentoo add the ebuild git checkout master ``` Use the following to ebuild ``` $ ebuild alternative-toolbar-9999.ebuild digest $ emerge alternative-toolbar ``` ##To uninstall. If installed via Git you need the original code to uninstall the plugin. ```bash cd ~/Downloads/alternative-toolbar* sudo make uninstall ``` ## Contribute **Please help out with translating** We need you to help us translate the english text to your native language. Don't worry - it is easier that you think. Just visit: - https://translations.launchpad.net/alternative-toolbar Remember to set your preferred language and then just submit your translation. ## Credits Thank you to: - [me4oslav](https://github.com/me4oslav) - design inspiration for the header-bar vision - our Translators: Launchpad Translation team - [Julian Richen](https://github.com/julianrichen) - revamped README - [Ikey Doherty](https://github.com/ikeydoherty) - AutoTools installer As well as: - [sergioad](https://github.com/sergioad) - for the initial translation (spanish) used for testing translations - Thanks to the [rhythmbox-seek](https://github.com/cgarvey/rhythmbox-seek) project for the track-seeking code. - Thanks to the [repeat-one-song](https://launchpad.net/repeat-one-song) project for the repeat-one-song code - [gipawu](https://github.com/gipawu) - improved progress slider code alternative-toolbar-0.16.3/TRANSLATE_README000066400000000000000000000010621264666532500200720ustar00rootroot00000000000000# This README is dividied into two sections - # first section is for the alternative-toolbar developers # second section is for Translators # Section 1: Developers Only #+++++++++++++++++++++++++++ create a pot translation file ./autogen.sh --prefix=/usr cd po make alternative-toolbar.pot upload this pot to launchpad # Section 2: Translators #+++++++++++++++++++++++ The best way to create translations is to visit our Launchpad site - https://translations.launchpad.net/alternative-toolbar Set your preferred language and then just begin translating alternative-toolbar-0.16.3/alternative-toolbar.plugin.in000066400000000000000000000006671264666532500234120ustar00rootroot00000000000000[Plugin] Loader=python3 Module=alternative-toolbar IAge=2 Depends=rb _Name=Alternative Toolbar _Description=Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact Toolbar which can be hidden Authors=fossfreedom Copyright=© 2016 fossfreedom Website=http://github.com/fossfreedom/alternative-toolbar Help=https://github.com/fossfreedom/alternative-toolbar/blob/master/README.md Version=0.16.2 alternative-toolbar-0.16.3/alternative-toolbar.py000066400000000000000000000474561264666532500221460ustar00rootroot00000000000000# -*- Mode: python; coding: utf-8; tab-width: 4; indent-tabs-mode: nil; -*- # # Copyright (C) 2015 - fossfreedom # # 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, 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. # define plugin import rb from gi.repository import GObject from gi.repository import Gio from gi.repository import Gtk from gi.repository import Peas from gi.repository import RB from alttoolbar_plugins import PluginDialog from alttoolbar_preferences import CoverLocale from alttoolbar_preferences import GSetting from alttoolbar_preferences import Preferences from alttoolbar_rb3compat import ActionGroup from alttoolbar_rb3compat import ApplicationShell from alttoolbar_rb3compat import gtk_version from alttoolbar_type import AltToolbarCompact from alttoolbar_type import AltToolbarHeaderBar from alttoolbar_type import AltToolbarStandard view_menu_ui = """ """ view_seek_menu_ui = """ """ seek_backward_time = 5 seek_forward_time = 10 class AltToolbarPlugin(GObject.Object, Peas.Activatable): """ Main class of the plugin. Manages the activation and deactivation of the plugin. """ __gtype_name = 'AltToolbarPlugin' object = GObject.property(type=GObject.Object) display_page_tree_visible = GObject.property(type=bool, default=False) show_album_art = GObject.property(type=bool, default=False) show_song_position_slider = GObject.property(type=bool, default=False) playing_label = GObject.property(type=bool, default=False) # signals # toolbar-visibility - bool parameter True = visible, False = not visible __gsignals__ = { 'toolbar-visibility': (GObject.SIGNAL_RUN_LAST, None, (bool,)) } def __init__(self): """ Initialises the plugin object. """ GObject.Object.__init__(self) self.appshell = None self.sh_psc = self.sh_op = self.sh_pc = None def do_activate(self): """ Called by Rhythmbox when the plugin is activated. It creates the plugin's source and connects signals to manage the plugin's preferences. """ self.shell = self.object self.db = self.shell.props.db self.shell_player = self.shell.props.shell_player # Prepare internal variables self.song_duration = 0 self.entry = None self._plugin_dialog_width = 760 self._plugin_dialog_height = 550 # locale stuff cl = CoverLocale() cl.switch_locale(cl.Locale.LOCALE_DOMAIN) # for custom icons ensure we start looking in the plugin img folder # as a fallback theme = Gtk.IconTheme.get_default() theme.append_search_path(rb.find_plugin_file(self, 'img')) # Find the Rhythmbox Toolbar self.rb_toolbar = AltToolbarPlugin.find(self.shell.props.window, 'main-toolbar', 'by_id') # get values from gsettings self.gs = GSetting() self.plugin_settings = self.gs.get_setting(self.gs.Path.PLUGIN) display_type = self.plugin_settings[self.gs.PluginKey.DISPLAY_TYPE] self.volume_control = self.plugin_settings[ self.gs.PluginKey.VOLUME_CONTROL] self.show_compact_toolbar = self.plugin_settings[ self.gs.PluginKey.SHOW_COMPACT] self.start_hidden = self.plugin_settings[ self.gs.PluginKey.START_HIDDEN] self.inline_label = self.plugin_settings[ self.gs.PluginKey.INLINE_LABEL] self.compact_progressbar = self.plugin_settings[ self.gs.PluginKey.COMPACT_PROGRESSBAR] self.enhanced_sidebar = self.plugin_settings[ self.gs.PluginKey.ENHANCED_SIDEBAR] self.show_tooltips = self.plugin_settings[ self.gs.PluginKey.SHOW_TOOLTIPS] self.enhanced_plugins = self.plugin_settings[ self.gs.PluginKey.ENHANCED_PLUGINS] # Add the various application view menus self.appshell = ApplicationShell(self.shell) self._add_menu_options() # Determine what type of toolbar is to be displayed default = Gtk.Settings.get_default() if display_type == 0: if ( not default.props.gtk_shell_shows_app_menu) or \ default.props.gtk_shell_shows_menubar: display_type = 2 else: display_type = 1 self.toolbar_type = None if display_type == 1: self.toolbar_type = AltToolbarHeaderBar() elif self.show_compact_toolbar: self.toolbar_type = AltToolbarCompact() else: self.toolbar_type = AltToolbarStandard() self.toolbar_type.initialise(self) self.toolbar_type.post_initialise() if self.enhanced_plugins: # redirect plugins action to our implementation action = Gio.SimpleAction.new('plugins', None) action.connect('activate', self._display_plugins) self.shell.props.application.add_action(action) self._connect_signals() self._connect_properties() # allow other plugins access to this toolbar self.shell.alternative_toolbar = self cl.switch_locale(cl.Locale.RB) def _display_plugins(self, *args): """ display our implementation of the LibPeas Plugin window """ has_headerbar = isinstance(self.toolbar_type, AltToolbarHeaderBar) if gtk_version() < 3.12: has_headerbar = False dlg = PluginDialog(self.shell.props.window, has_headerbar) response = 0 dlg.set_default_size(self._plugin_dialog_width, self._plugin_dialog_height) while response >= 0: response = dlg.run() print(response) self._plugin_dialog_width, self._plugin_dialog_height = dlg.get_size() dlg.destroy() def _add_menu_options(self): """ add the various menu options to the application """ self.seek_action_group = ActionGroup(self.shell, 'AltToolbarPluginSeekActions') self.seek_action_group.add_action(func=self.on_skip_backward, action_name='SeekBackward', label=_("Seek Backward"), action_type='app', accel="Left", tooltip=_( "Seek backward, in current " "track, by 5 seconds.")) self.seek_action_group.add_action(func=self.on_skip_forward, action_name='SeekForward', label=_("Seek Forward"), action_type='app', accel="Right", tooltip=_( "Seek forward, in current " "track, by 10 seconds.")) self.appshell.insert_action_group(self.seek_action_group) self.appshell.add_app_menuitems(view_seek_menu_ui, 'AltToolbarPluginSeekActions', 'view') self.toggle_action_group = ActionGroup(self.shell, 'AltToolbarPluginActions') self.toggle_action_group.add_action(func=self.toggle_visibility, action_name='ToggleToolbar', label=_( "Show Play-Controls Toolbar"), action_state=ActionGroup.TOGGLE, action_type='app', tooltip=_( "Show or hide the " "play-controls toolbar")) self.toggle_action_group.add_action( func=self.toggle_sourcemedia_visibility, action_name='ToggleSourceMediaToolbar', label=_("Show Source Toolbar"), action_state=ActionGroup.TOGGLE, action_type='app', accel="t", tooltip=_("Show or hide the source toolbar")) self.appshell.insert_action_group(self.toggle_action_group) self.appshell.add_app_menuitems(view_menu_ui, 'AltToolbarPluginActions', 'view') def _connect_properties(self): """ bind plugin properties to various gsettings that we dynamically interact with """ self.plugin_settings.bind(self.gs.PluginKey.PLAYING_LABEL, self, 'playing_label', Gio.SettingsBindFlags.GET) def _connect_signals(self): """ connect to various rhythmbox signals that the toolbars need """ self.sh_display_page_tree = self.shell.props.display_page_tree.connect( "selected", self.on_page_change ) self.sh_psc = self.shell_player.connect("playing-song-changed", self._sh_on_song_change) self.sh_op = self.shell_player.connect("elapsed-changed", self._sh_on_playing) self.sh_pc = self.shell_player.connect("playing-changed", self._sh_on_playing_change) self.sh_pspc = self.shell_player.connect( "playing-song-property-changed", self._sh_on_song_property_changed) self.rb_settings = Gio.Settings.new('org.gnome.rhythmbox') self.rb_settings.bind('show-album-art', self, 'show_album_art', Gio.SettingsBindFlags.GET) self.connect('notify::show-album-art', self.show_album_art_settings_changed) self.show_album_art_settings_changed(None) self.rb_settings.bind('show-song-position-slider', self, 'show_song_position_slider', Gio.SettingsBindFlags.GET) self.connect('notify::show-song-position-slider', self.show_song_position_slider_settings_changed) self.show_song_position_slider_settings_changed(None) def _sh_on_song_property_changed(self, sp, uri, property, old, new): """ shell-player "playing-song-property-changed" signal handler """ if sp.get_playing() and property in \ ('artist', 'album', 'title', RB.RHYTHMDB_PROP_STREAM_SONG_ARTIST, RB.RHYTHMDB_PROP_STREAM_SONG_ALBUM, RB.RHYTHMDB_PROP_STREAM_SONG_TITLE): entry = sp.get_playing_entry() self.toolbar_type.display_song(entry) def _sh_on_playing_change(self, player, playing): """ shell-player "playing-change" signal handler """ self.toolbar_type.play_control_change(player, playing) if (self.song_duration != 0): self.toolbar_type.enable_slider(True) else: self.toolbar_type.enable_slider(False) label = "" self.toolbar_type.total_time_label.set_markup(label) def _sh_on_song_change(self, player, entry): """ shell-player "playing-song-changed" signal handler """ if (entry is not None): self.song_duration = entry.get_ulong(RB.RhythmDBPropType.DURATION) else: self.song_duration = 0 self.toolbar_type.display_song(entry) def _sh_on_playing(self, player, second): """ shell-player "elapsed-changed" signal handler """ if not hasattr(self.toolbar_type, 'song_progress'): return if (self.song_duration != 0): self.toolbar_type.song_progress.progress = float( second) / self.song_duration print(self.toolbar_type.song_progress.progress) try: valid, time = player.get_playing_time() if not valid or time == 0: return except: return m, s = divmod(time, 60) h, m = divmod(m, 60) tm, ts = divmod(self.song_duration, 60) th, tm = divmod(tm, 60) if th == 0: label = "{time} / {ttime}".format( time="%02d:%02d" % (m, s), ttime="%02d:%02d" % (tm, ts)) else: label = "{time}".format( time="%d:%02d:%02d" % (h, m, s)) self.toolbar_type.total_time_label.set_markup(label) def on_skip_backward(self, *args): """ keyboard seek backwards signal handler """ sp = self.object.props.shell_player if (sp.get_playing()[1]): seek_time = sp.get_playing_time()[1] - seek_backward_time print(seek_time) if (seek_time < 0): seek_time = 0 print(seek_time) sp.set_playing_time(seek_time) def on_skip_forward(self, *args): """ keyboard seek forwards signal handler """ sp = self.object.props.shell_player if (sp.get_playing()[1]): seek_time = sp.get_playing_time()[1] + seek_forward_time song_duration = sp.get_playing_song_duration() if (song_duration > 0): # sanity check if (seek_time > song_duration): seek_time = song_duration sp.set_playing_time(seek_time) def show_song_position_slider_settings_changed(self, *args): """ rhythmbox show-slider signal handler """ self.toolbar_type.show_slider(self.show_song_position_slider) def show_album_art_settings_changed(self, *args): """ rhythmbox show-album-art signal handler """ self.toolbar_type.show_cover(self.show_album_art) def on_page_change(self, display_page_tree, page): """ sources display-tree signal handler """ print("page changed", page) self.toolbar_type.reset_toolbar(page) self.toolbar_type.reset_entryview(page) @staticmethod def find(node, search_id, search_type, button_label=None): """ find various GTK Widgets :param node: node is the starting container to find from :param search_id: search_id is the GtkWidget type string or GtkWidget name :param search_type: search_type is the type of search "by_name" to search by the type of GtkWidget e.g. GtkButton "by_id" to search by the GtkWidget (glade name) e.g. box_1 :param button_label: button_label to find specific buttons where we cannot use by_id :return:N/A """ # Couldn't find better way to find widgets than loop through them # print("by_name %s by_id %s" % (node.get_name(), # Gtk.Buildable.get_name(node))) def extract_label(button): label = button.get_label() if label: return label child = button.get_child() if child and child.get_name() == "GtkLabel": return child.get_text() return None if isinstance(node, Gtk.Buildable): if search_type == 'by_id': if Gtk.Buildable.get_name(node) == search_id: if button_label is None or \ ('Button' in node.get_name() and extract_label(node) == button_label): return node elif search_type == 'by_name': if node.get_name() == search_id: if button_label is None or \ ('Button' in node.get_name() and extract_label(node) == button_label): return node if isinstance(node, Gtk.Container): for child in node.get_children(): ret = AltToolbarPlugin.find(child, search_id, search_type, button_label) if ret: return ret return None def do_deactivate(self): """ Called by Rhythmbox when the plugin is deactivated. It makes sure to free all the resources used by the plugin. """ del self.db if self.sh_op: self.shell_player.disconnect(self.sh_op) self.shell_player.disconnect(self.sh_psc) self.shell_player.disconnect(self.sh_pc) self.shell_player.disconnect(self.sh_pspc) # self.disconnect(self.sh_display_page) self.shell.props.display_page_tree.disconnect( self.sh_display_page_tree) del self.shell_player if self.appshell: self.appshell.cleanup() self.rb_toolbar.set_visible(True) self.toolbar_type.cleanup() del self.shell def toggle_visibility(self, action, param=None, data=None): """ Display or Hide PlayControls signal handler :param action: :param param: :param data: :return: """ action = self.toggle_action_group.get_action('ToggleToolbar') self.toolbar_type.set_visible(action.get_active()) def toggle_sourcemedia_visibility(self, action, param=None, data=None): """ Display or Hide the source toolbar :param action: :param param: :param data: :return: """ action = self.toggle_action_group.get_action( 'ToggleSourceMediaToolbar') self.toolbar_type.source_toolbar_visibility(action.get_active()) def _translation_helper(self): """ a method just to help out with translation strings it is not meant to be called by itself """ # define .plugin text strings used for translation plugin = _('Alternative Toolbar') plugin += "dummy" desc = _( 'Replace the Rhythmbox large toolbar with a Client-Side ' 'Decorated or Compact Toolbar which can be hidden') desc += "dummy" # stop PyCharm removing the Preference import on optimisation pref = Preferences() return pref def get_toolbar(self, callback): """ a method to return the toolbar itself :param callback: function callback - func(AT.ToolbarCallback) passed :return: """ self.toolbar_type.setup_completed_async(callback) alternative-toolbar-0.16.3/alttoolbar_controller.py000066400000000000000000000476551264666532500225770ustar00rootroot00000000000000# -*- Mode: python; coding: utf-8; tab-width: 4; indent-tabs-mode: nil; -*- # # Copyright (C) 2015 - fossfreedom # # 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, 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. from gi.repository import GObject from gi.repository import Gio from gi.repository import Gtk from alttoolbar_preferences import CoverLocale class AltControllerCategory(object): OTHER = 0 LOCAL = 1 ONLINE = 2 PLAYLIST = 3 class AltControllerBase(GObject.Object): """ base controller """ def __init__(self, header): """ Initialises the object. """ self.header = header self.find = self.header.find # convenience function self._pixbuf = None super(AltControllerBase, self).__init__() def get_category(self): """ return the category type for the source """ return AltControllerCategory.OTHER def get_gicon(self, source): """ return the source icon :param source: :return: """ if source.props.icon: return source.props.icon return None def valid_source(self, source): """ returns bool if the given source is applicable to the controller """ return False def update_controls(self, source): """ update the button controls on the header """ pass def remove_controls(self, container): """ remove any controls that are contained in a container """ for child in container.get_children(): container.remove(child) def hide_controls(self, source): """ hide controls for a given controller """ pass def get_search_entry(self, toolbar_container): """ find the GtkEntry field corresponding to the search entry returns 1. the GtkWidget containing the GtkEntry 2. the GtkEntry returns None if nothing found """ return None def get_toolbar(self, source): """ return GtkWidget corresponding to the toolbar within the source None if no toolbar """ return None def moveto_searchbar(self, toolbar, widget, searchbar): """ move from toolbar the widget and add to the searchbar """ pass def set_library_labels(self): """ set the centre library song-category button label """ self.header.set_library_labels() class AltGenericController(AltControllerBase): """ generic controller for the headerbar (only) """ __gtype_name = 'AltGenericController' def __init__(self, header): """ Initialises the object. """ super(AltGenericController, self).__init__(header) self.centre_controls = {} self.end_controls = {} def get_category(self): return AltControllerCategory.LOCAL def hide_controls(self, source): val, view_button = self.header.has_button_with_label(source, _('View All')) if val: view_button.set_visible(False) def get_toolbar(self, source): toolbar = self.find(source, 'RBSourceToolbar', 'by_name') print(toolbar) print(source) return toolbar def get_search_entry(self, container): if container is None: print("no container to search") return None, None search = self.find(container, 'RBSearchEntry', 'by_name') if not search: print("no RBSearchEntry found") return None, None entry = self.find(search, 'GtkEntry', 'by_name') print(entry) return search, entry def moveto_searchbar(self, toolbar, search, searchbar): toolbar.remove(search) toolbar.set_visible(False) searchbar.add(search) def update_controls(self, source): """ update the button controls on the header """ val, browser_button = self.header.is_browser_view(source) if not val: # if not a browser_view based source then default just to the title print("no browser view") self.header.set_library_box_sensitive(False) else: print("browser view found") browser_button.set_visible(False) self.header.set_library_box_sensitive(True) self.header.current_search_button = None toolbar = self.get_toolbar(source) if not toolbar: # there is no source-bar so the header is empty print("no toolbar so nothing left to do - cleanup endbox and exit") self.remove_controls(self.header.end_box) return self.hide_controls(toolbar) if source not in self.end_controls: # this is the first time for the source so extract the # RBSearchEntry print("first time around") controls = {} self.remove_controls(self.header.end_box) print(toolbar) # should be the RBSourceToolbar search, entry = self.get_search_entry(toolbar) if not search: return if self.header.searchbar: self.header.searchbar.set_visible(False) # define a searchbar widget self.header.searchbar = Gtk.SearchBar.new() # we need to add this to the top of the source window # to-do this - find the first child and physically move this into # the second position in a box - the first position being the # searchbar children = source.get_children() print(children) # We assume the first container in a source is a GtkNotebook first = children[0] box = Gtk.Box() box.set_orientation(Gtk.Orientation.VERTICAL) box.pack_start(self.header.searchbar, False, True, 0) box.show_all() # so remove the notebook from the source Gtk.Container.remove(source, first) box.pack_start(first, True, True, 1) # add the notebook to a box source.add(box) # then add the box back to the source - # i.e. we added another parent self.header.register_moved_control(child=first, old_parent=source, new_parent=box) self.moveto_searchbar(toolbar, search, self.header.searchbar) self.header.searchbar.connect_entry(entry) # self.header.searchbar.show_all() self.header.searchbar.set_visible(False) search_button = Gtk.ToggleButton.new() sym = "preferences-system-search-symbolic" image = \ Gtk.Image.new_from_icon_name(sym, Gtk.IconSize.SMALL_TOOLBAR) search_button.add(image) self.header.end_box.add(search_button) self.header.end_box.reorder_child(search_button, 0) search_button.show_all() search_button.connect('toggled', self.header.search_button_toggled) controls['searchbar'] = self.header.searchbar controls['search_button'] = search_button self.header.current_search_button = search_button self.end_controls[source] = controls print(controls) else: print("second time around") print(self.end_controls[source]) search = self.end_controls[source]['searchbar'] if self.header.searchbar: self.header.searchbar.set_visible(False) self.header.searchbar = search # self.header.searchbar.set_visible(True) self.remove_controls(self.header.end_box) search_button = self.end_controls[source]['search_button'] self.header.current_search_button = search_button self.header.searchbar.show_all() self.header.searchbar.set_visible(search_button.get_active()) self.header.end_box.add(search_button) self.header.end_box.reorder_child(search_button, 0) self.header.end_box.show_all() class AltMusicLibraryController(AltGenericController): """ music library controller """ __gtype_name = 'AltMusicLibraryController' def __init__(self, header): """ Initialises the object. """ super(AltMusicLibraryController, self).__init__(header) def valid_source(self, source): """ override """ return "LibrarySource" in type(source).__name__ def hide_controls(self, source): super(AltMusicLibraryController, self).hide_controls(source) val, import_button = self.header.has_button_with_label(source, _('Import')) if val: import_button.set_visible(False) class AltSoundCloudController(AltGenericController): """ sound-cloud controller """ __gtype_name = 'AltSoundCloudController' def __init__(self, header): """ Initialises the object. """ super(AltSoundCloudController, self).__init__(header) self._has_toolbar = None def valid_source(self, source): """ override """ return "SoundCloud" in type(source).__name__ def get_category(self): return AltControllerCategory.ONLINE def get_toolbar(self, source): if self._has_toolbar: return self._has_toolbar search_box = self.find(source, 'box1', 'by_id') self._has_toolbar = search_box return search_box def moveto_searchbar(self, toolbar, widget, searchbar): """ override - here we want to actually remove the toolbar from the source so get the parent """ parent_grid = toolbar.get_parent() parent_grid.remove(toolbar) searchbar.add(toolbar) self.header.register_moved_control(child=toolbar, old_parent=parent_grid, new_parent=searchbar) class AltCoverArtBrowserController(AltGenericController): """ CoverArtBrowser controller """ __gtype_name = 'AltCoverArtBrowserController' def __init__(self, header): """ Initialises the object. """ super(AltCoverArtBrowserController, self).__init__(header) self._has_toolbar = None def valid_source(self, source): """ override """ return "CoverArtBrowser" in type(source).__name__ def get_category(self): return AltControllerCategory.LOCAL def get_toolbar(self, source): if not self._has_toolbar: search_box = self.find(source, 'toolbar', 'by_id') self._has_toolbar = search_box return self._has_toolbar def moveto_searchbar(self, toolbar, widget, searchbar): """ override - here we want to actually remove the toolbar from the source so get the parent """ parent_grid = toolbar.get_parent() parent_grid.remove(toolbar) searchbar.add(toolbar) searchbar.show_all() self.header.register_moved_control(child=toolbar, old_parent=parent_grid, new_parent=searchbar) def get_search_entry(self, toolbar): """ override - use the GtkEntry in the coverartbrowser """ entrysearch = self.find(toolbar, 'entry_search_alignment', 'by_id') entry = self.find(entrysearch, 'GtkEntry', 'by_name') return entrysearch, entry class AltCoverArtPlaySourceController(AltGenericController): """ CoverArtPlaySource controller """ __gtype_name = 'AltCoverArtPlaySourceController' def __init__(self, header): """ Initialises the object. """ super(AltCoverArtPlaySourceController, self).__init__(header) self._has_toolbar = None def valid_source(self, source): """ override """ return "CoverArtPlaySource" in type(source).__name__ def get_category(self): return AltControllerCategory.LOCAL def get_toolbar(self, source): if not self._has_toolbar: self._has_toolbar = self.find(source, 'RBButtonBar', 'by_name') print("############", self._has_toolbar) return self._has_toolbar class AltQueueController(AltGenericController): """ RB QueueSource controller """ __gtype_name = 'AltQueueController' def __init__(self, header): """ Initialises the object. """ super(AltQueueController, self).__init__(header) self._gicon = Gio.ThemedIcon(name='audio-x-queue-symbolic') def valid_source(self, source): return "RBPlayQueueSource" in type(source).__name__ def get_gicon(self, source): return self._gicon class AltErrorsController(AltGenericController): """ RB ErrorsSource controller """ __gtype_name = 'AltErrorsController' def __init__(self, header): """ Initialises the object. """ super(AltErrorsController, self).__init__(header) self._gicon = Gio.ThemedIcon(name='dialog-error-symbolic') self._source_types = ["RBImportErrorsSource", "RBMissingFilesSource"] def valid_source(self, source): print(type(source).__name__) for source_type in self._source_types: if source_type in type(source).__name__: return True def get_category(self): return AltControllerCategory.LOCAL def get_gicon(self, source): return self._gicon class AltRadioController(AltGenericController): """ RB RadioSource controller """ __gtype_name = 'AltRadioController' def __init__(self, header): """ Initialises the object. """ super(AltRadioController, self).__init__(header) self._gicon = Gio.ThemedIcon(name='audio-radio-symbolic') def valid_source(self, source): return "RBIRadioSource" in type(source).__name__ def get_gicon(self, source): return self._gicon def get_category(self): return AltControllerCategory.ONLINE def set_library_labels(self): self.header.set_library_labels(song_label=_('Stations')) class AltLastFMController(AltGenericController): """ RB LastFMSource controller """ __gtype_name = 'AltLastFMController' def __init__(self, header): """ Initialises the object. """ super(AltLastFMController, self).__init__(header) self._libre_gicon = Gio.ThemedIcon(name='librefm-symbolic') self._lastfm_gicon = Gio.ThemedIcon(name='lastfm-symbolic') def valid_source(self, source): return "RBAudioscrobblerProfilePage" in type(source).__name__ def get_gicon(self, source): # locale stuff cl = CoverLocale() cl.switch_locale(cl.Locale.RB) if source.props.name == _("Libre.fm"): return self._libre_gicon else: return self._lastfm_gicon def get_category(self): return AltControllerCategory.ONLINE class AltPlaylistController(AltGenericController): """ playlist controller """ __gtype_name = 'AltPlaylistController' def __init__(self, header): """ Initialises the object. """ super(AltPlaylistController, self).__init__(header) self._static_gicon = \ Gio.ThemedIcon(name='audio-x-playlist-symbolic') self._auto_gicon = \ Gio.ThemedIcon(name='audio-x-playlist-automatic-symbolic') self._toprated_gicon = Gio.ThemedIcon(name='starred-symbolic') self._recentlyadded_gicon = \ Gio.ThemedIcon(name='audio-x-playlist-recently-added-symbolic') self._recentlyplayed_gicon = \ Gio.ThemedIcon(name='audio-x-playlist-recently-played-symbolic') def valid_source(self, source): """ override """ return "PlaylistSource" in type(source).__name__ def get_gicon(self, source): # locale stuff cl = CoverLocale() cl.switch_locale(cl.Locale.RB) print(source.props.name) if source.props.name == _('My Top Rated') \ or source.props.name == 'My Top Rated': return self._toprated_gicon if source.props.name == _('Recently Added') \ or source.props.name == 'Recently Added': return self._recentlyadded_gicon if source.props.name == _('Recently Played') \ or source.props.name == 'Recently Played': return self._recentlyplayed_gicon if "StaticPlaylistSource" in type(source).__name__: return self._static_gicon else: return self._auto_gicon def get_category(self): return AltControllerCategory.PLAYLIST class AltPodcastController(AltGenericController): """ podcast controller """ __gtype_name = 'AltPodcastController' def valid_source(self, source): """ override """ return 'RBPodcastMainSource' in type(source).__name__ def get_category(self): return AltControllerCategory.LOCAL def set_library_labels(self): # locale stuff cl = CoverLocale() cl.switch_locale(cl.Locale.LOCALE_DOMAIN) self.header.set_library_labels(song_label=_('Podcasts')) class AltStandardOnlineController(AltGenericController): """ standard controller where we dont need specific customisation """ __gtype_name = 'AltStandardOnlineController' def __init__(self, header): """ Initialises the object. """ super(AltStandardOnlineController, self).__init__(header) self._source_types = ['MagnatuneSource', 'RBGriloSource', 'RadioBrowserSource'] def valid_source(self, source): print(type(source).__name__) for source_type in self._source_types: if source_type in type(source).__name__: return True return False def get_category(self): return AltControllerCategory.ONLINE class AltStandardLocalController(AltGenericController): """ standard controller where we dont need specific customisation """ __gtype_name = 'AltStandardLocalController' def __init__(self, header): """ Initialises the object. """ super(AltStandardLocalController, self).__init__(header) self._source_types = ['RBMtpSource'] def valid_source(self, source): print(type(source).__name__) for source_type in self._source_types: if source_type in type(source).__name__: return True return False def get_category(self): return AltControllerCategory.LOCAL class AltAndroidController(AltGenericController): ''' android controller ''' __gtype_name = 'AltAndroidController' def valid_source(self, source): ''' override ''' return 'RBAndroidSource' in type(source).__name__ def get_category(self): return AltControllerCategory.LOCAL alternative-toolbar-0.16.3/alttoolbar_plugins.py000066400000000000000000000361431264666532500220630ustar00rootroot00000000000000# -*- Mode: python; coding: utf-8; tab-width: 4; indent-tabs-mode: nil; -*- # # Copyright (C) 2015 - fossfreedom # # 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, 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. import gettext import re import webbrowser from gi.repository import GLib from gi.repository import Gio from gi.repository import Gtk from gi.repository import Pango from gi.repository import Peas from gi.repository import PeasGtk from alttoolbar_preferences import CoverLocale class PluginListRow(Gtk.ListBoxRow): def __init__(self, plugin, switch_callback): super(PluginListRow, self).__init__() self.plugin = plugin self._refresh = False self._switch_callback = switch_callback label1 = Gtk.Label() escape = GLib.markup_escape_text(plugin.get_name()) label1.set_markup("" + escape + "") label1.set_ellipsize(Pango.EllipsizeMode.END) label1.props.halign = Gtk.Align.START label1.set_has_tooltip(True) label1.props.margin_top = 5 label1.connect('query-tooltip', self._display_tooltip) label2 = Gtk.Label(plugin.get_description()) label2.set_ellipsize(Pango.EllipsizeMode.END) label2.props.halign = Gtk.Align.START label2.set_has_tooltip(True) label2.connect('query-tooltip', self._display_tooltip) label2.props.margin_bottom = 5 switch = Gtk.Switch.new() self._switch = switch switch.props.valign = Gtk.Align.CENTER sensitive = False try: if plugin.is_available(): sensitive = True switch.set_active(plugin.is_loaded()) except: pass box = Gtk.Box() box.set_orientation(Gtk.Orientation.VERTICAL) box.pack_start(label1, True, False, 0) box.pack_start(label2, True, False, 1) outerbox = Gtk.Box() outerbox.set_orientation(Gtk.Orientation.HORIZONTAL) outerbox.pack_start(Gtk.Label(" "), False, False, 0) outerbox.pack_start(box, False, False, 1) outerbox.pack_end(switch, False, False, 3) self.add(outerbox) self.outerbox = outerbox if not sensitive: self.add_error() switch.connect('notify::active', self._switch_changed) def _display_tooltip(self, label, x, y, mode, tooltip): if label.get_layout().is_ellipsized(): tooltip.set_text(label.get_text()) return True return False def _switch_changed(self, switch, *args): if self._refresh: return False self._refresh = True def delay(*args): print("switch_changed") print(switch.get_active()) self._switch_callback(switch, self.plugin) self._refresh = False GLib.timeout_add(250, delay, None) def add_error(self): icon = Gio.ThemedIcon(name="dialog-error-symbolic") error_image = Gtk.Image() error_image.props.margin = 5 error_image.set_from_gicon(icon, Gtk.IconSize.BUTTON) error_image.show_all() error_image.set_has_tooltip(True) error_image.set_tooltip_text(_('The plugin cannot be enabled')) self.outerbox.pack_end(error_image, False, False, 4) self.set_sensitive(False) def refresh(self, *args): try: if not self.plugin.is_available(): self.add_error() if self._switch.get_active() == self.plugin.is_loaded(): return self._switch.set_active(self.plugin.is_loaded()) except: self.add_error() class PluginDialog(Gtk.Dialog): def __init__(self, parent_window, has_headerbar): if has_headerbar: super(PluginDialog, self).__init__(use_header_bar=True, parent=parent_window, flags=Gtk.DialogFlags.MODAL) else: super(PluginDialog, self).__init__(parent=parent_window, flags=Gtk.DialogFlags.MODAL) self._has_headerbar = has_headerbar self._parent_window = parent_window listbox = Gtk.ListBox.new() listbox.set_sort_func(self._listbox_sort, None) self._listbox = listbox self._items = {} self._peas = Peas.Engine.get_default() plugins = self._peas.get_plugin_list() self._peas.connect_after('unload-plugin', self._on_load_unload_plugin) self._peas.connect_after('load-plugin', self._on_load_unload_plugin) for plugin in plugins: if not plugin.is_builtin() and not plugin.is_hidden(): row = PluginListRow(plugin, self._switch_callback) self._items[plugin.get_module_name()] = row listbox.add(row) # locale stuff cl = CoverLocale() cl.switch_locale(cl.Locale.RB) def extract_text(str): # remove _ and (_A) type expressions translation = gettext.gettext(str) translation = re.sub('\(..\)', '', translation, flags=re.DOTALL) translation = translation.replace('_', '') return translation toolbar = Gtk.Toolbar.new() context = toolbar.get_style_context() context.add_class(Gtk.STYLE_CLASS_INLINE_TOOLBAR) item = Gtk.ToolItem.new() btn = Gtk.Button() icon = Gio.ThemedIcon(name="preferences-system-symbolic") image = Gtk.Image() image.props.margin = 3 btn.add(image) btn.set_tooltip_text(extract_text("_Preferences")) image.set_from_gicon(icon, Gtk.IconSize.BUTTON) box = Gtk.Box() box.pack_start(btn, False, False, 0) item.add(box) toolbar.insert(item, 0) btn.connect('clicked', self._preferences_button_clicked) self._preferences_button = btn minitoolbar_box = Gtk.ButtonBox() context = minitoolbar_box.get_style_context() context.add_class('linked') minitoolbar_box.set_layout(Gtk.ButtonBoxStyle.START) btn = Gtk.Button() icon = Gio.ThemedIcon(name="dialog-information-symbolic") image = Gtk.Image() image.props.margin = 3 btn.add(image) btn.set_tooltip_text(extract_text("_About")) image.set_from_gicon(icon, Gtk.IconSize.BUTTON) minitoolbar_box.add(btn) minitoolbar_box.child_set_property(btn, "non-homogeneous", True) btn.connect('clicked', self._info_button_clicked) self._info_button = btn btn = Gtk.Button() icon = Gio.ThemedIcon(name="help-browser-symbolic") image = Gtk.Image() image.props.margin = 3 btn.add(image) btn.set_tooltip_text(extract_text("_Help")) image.set_from_gicon(icon, Gtk.IconSize.BUTTON) minitoolbar_box.add(btn) minitoolbar_box.child_set_property(btn, "non-homogeneous", True) btn.connect('clicked', self._help_button_clicked) self._help_button = btn item = Gtk.SeparatorToolItem.new() item.props.draw = False toolbar.insert(item, 1) toolbar.child_set_property(item, "expand", True) item = Gtk.ToolItem.new() item.add(minitoolbar_box) toolbar.insert(item, 2) contentbox = Gtk.Box() contentbox.set_orientation(Gtk.Orientation.VERTICAL) scrollwindow = Gtk.ScrolledWindow.new(None, None) scrollwindow.add(listbox) scrollwindow.props.hexpand = True scrollwindow.props.vexpand = True contentbox.pack_start(scrollwindow, True, True, 0) contentbox.pack_start(toolbar, False, False, 1) self.props.title = _("Configure Plugins") if not self._has_headerbar: self.add_button(Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE) else: headerbar = self.get_header_bar() headerbar.set_show_close_button(True) contentbox.show_all() area = self.get_content_area() area.add(contentbox) listbox.connect('row-selected', self._listbox_row_selected) def _on_load_unload_plugin(self, engine, plugin): module_name = plugin.get_module_name() print(module_name) if module_name in self._items: self._items[module_name].refresh() def _listbox_sort(self, row1, row2, *args): return row1.plugin.get_name().lower() > row2.plugin.get_name().lower() def _switch_callback(self, switch, plugin): value = switch.get_active() if value and not plugin.is_loaded(): self._peas.load_plugin(plugin) if not value and plugin.is_loaded(): self._peas.unload_plugin(plugin) row = switch.get_parent().get_parent() self._listbox.select_row(row) self._listbox_row_selected(_, row) def _get_preference_widget(self, row): try: ext = self._peas.create_extension(row.plugin, PeasGtk.Configurable, None) widget = ext.create_configure_widget() cl = CoverLocale() cl.switch_locale(cl.Locale.RB) return widget except: pass return None def _listbox_row_selected(self, listbox, row): if row: has_preference = False widget = self._get_preference_widget(row) if widget: has_preference = True self._preferences_button.set_sensitive(has_preference) help_link = row.plugin.get_help_uri() if help_link: self._help_button.set_sensitive(True) else: self._help_button.set_sensitive(False) def _help_button_clicked(self, *args): row = self._listbox.get_selected_row() help_link = row.plugin.get_help_uri() webbrowser.open(help_link) def _info_button_clicked(self, *args): if self._has_headerbar: dlg = Gtk.Dialog(use_header_bar=True, flags=Gtk.DialogFlags.MODAL) dlg.get_header_bar().set_show_close_button(True) else: dlg = Gtk.Dialog(flags=Gtk.DialogFlags.MODAL) dlg.add_button(Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE) row = self._listbox.get_selected_row() title = row.plugin.get_name() version = row.plugin.get_version() dlg.props.title = _("About this plugin") area = dlg.get_content_area() widget = Gtk.Box() widget.set_orientation(Gtk.Orientation.VERTICAL) website = row.plugin.get_website() copyright = row.plugin.get_copyright() description = row.plugin.get_description() # authors = row.plugin.get_authors() help = row.plugin.get_help_uri() pos = 0 def get_label(label): label = Gtk.Label(label) label.set_line_wrap(True) label.set_justify(Gtk.Justification.CENTER) label.set_max_width_chars(60) return label label = Gtk.Label() escape = GLib.markup_escape_text(title) label.set_markup("" + escape + "") label.set_justify(Gtk.Justification.CENTER) label.props.margin_bottom = 5 widget.pack_start(label, False, False, pos) pos += 1 if version: label = get_label(_("Version: ") + version) label.props.margin_bottom = 5 widget.pack_start(label, False, False, pos) pos += 1 if description: label = get_label(description) label.props.margin_bottom = 5 widget.pack_start(label, False, False, pos) pos += 1 if copyright: label = get_label(copyright) label.props.margin_bottom = 5 widget.pack_start(label, False, False, pos) pos += 1 if title == _("Alternative Toolbar"): # special case for the this plugin grid = Gtk.Grid() grid.props.halign = Gtk.Align.CENTER label = Gtk.Label(_("Developer:")) label.props.halign = Gtk.Align.END grid.attach(label, 0, 0, 1, 1) link = Gtk.Label() link.props.halign = Gtk.Align.START m = " David " \ "Mohammed" link.set_markup(m) grid.attach(link, 1, 0, 1, 1) label = Gtk.Label(_("Designer:")) label.props.halign = Gtk.Align.END grid.attach(label, 0, 1, 1, 1) link = Gtk.Label() link.props.halign = Gtk.Align.START m = " Georgi " \ "Karavasilev" link.set_markup(m) grid.attach(link, 1, 1, 1, 1) widget.pack_start(grid, False, False, pos) grid.props.margin_bottom = 5 pos += 1 box = Gtk.Box() box.set_homogeneous(True) def launch_browser(button, uri): webbrowser.open(uri) button = Gtk.Button(_("Help")) if help: button.connect('clicked', launch_browser, help) else: button.set_sensitive(False) box.pack_start(button, False, True, 0) button = Gtk.Button(_("Homepage")) if help: button.connect('clicked', launch_browser, website) else: button.set_sensitive(False) box.pack_start(Gtk.Label(""), False, True, 1) box.pack_start(Gtk.Label(""), False, True, 2) box.pack_start(button, False, True, 3) widget.pack_start(box, False, True, pos) # pos += 1 widget.show_all() frame = Gtk.Frame.new("") frame.props.margin = 8 frame.set_shadow_type(Gtk.ShadowType.NONE) frame.add(widget) frame.show_all() area.add(frame) dlg.set_resizable(False) dlg.run() dlg.destroy() def _preferences_button_clicked(self, *args): row = self._listbox.get_selected_row() widget = self._get_preference_widget(row) if not widget: return if self._has_headerbar: dlg = Gtk.Dialog(use_header_bar=True, flags=Gtk.DialogFlags.MODAL) dlg.get_header_bar().set_show_close_button(True) else: dlg = Gtk.Dialog(flags=Gtk.DialogFlags.MODAL) dlg.add_button(Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE) dlg.props.title = row.plugin.get_name() area = dlg.get_content_area() area.add(widget) dlg.set_resizable(False) dlg.run() dlg.destroy() alternative-toolbar-0.16.3/alttoolbar_preferences.py000066400000000000000000000273711264666532500227060ustar00rootroot00000000000000# -*- Mode: python; coding: utf-8; tab-width: 4; indent-tabs-mode: nil; -*- # # Copyright (C) 2015 - fossfreedom # # 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, 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. # define plugin import gettext import locale import os import shutil import sys import rb from gi.repository import GObject from gi.repository import Gio from gi.repository import Gtk from gi.repository import PeasGtk from gi.repository import RB class GSetting: """ This class manages the different settings that the plugin has to access to read or write. """ # storage for the instance reference __instance = None class __impl: """ Implementation of the singleton interface """ # below public variables and methods that can be called for GSetting def __init__(self): """ Initializes the singleton interface, assigning all the constants used to access the plugin's settings. """ self.Path = self._enum( PLUGIN='org.gnome.rhythmbox.plugins.alternative_toolbar') self.PluginKey = self._enum( DISPLAY_TYPE='display-type', START_HIDDEN='start-hidden', SHOW_COMPACT='show-compact', PLAYING_LABEL='playing-label', VOLUME_CONTROL='volume-control', INLINE_LABEL='inline-label', COMPACT_PROGRESSBAR='compact-progressbar', ENHANCED_SIDEBAR='enhanced-sidebar', EXPANDERS='expanders', SHOW_TOOLTIPS='show-tooltips', ENHANCED_PLUGINS='enhanced-plugins', REPEAT_TYPE='repeat-type', SOURCE_TOOLBAR='show-source-toolbar' ) self.setting = {} def get_setting(self, path): """ Return an instance of Gio.Settings pointing at the selected path. """ try: setting = self.setting[path] except: self.setting[path] = Gio.Settings.new(path) setting = self.setting[path] return setting def get_value(self, path, key): """ Return the value saved on key from the settings path. """ return self.get_setting(path)[key] def set_value(self, path, key, value): """ Set the passed value to key in the settings path. """ self.get_setting(path)[key] = value def _enum(self, **enums): """ Create an enumn. """ return type('Enum', (), enums) def __init__(self): """ Create singleton instance """ # Check whether we already have an instance if GSetting.__instance is None: # Create and remember instance GSetting.__instance = GSetting.__impl() # Store instance reference as the only member in the handle self.__dict__['_GSetting__instance'] = GSetting.__instance def __getattr__(self, attr): """ Delegate access to implementation """ return getattr(self.__instance, attr) def __setattr__(self, attr, value): """ Delegate access to implementation """ return setattr(self.__instance, attr, value) class CoverLocale: """ This class manages the locale """ # storage for the instance reference __instance = None class __impl: """ Implementation of the singleton interface """ # below public variables and methods that can be called for CoverLocale def __init__(self): """ Initializes the singleton interface, assigning all the constants used to access the plugin's settings. """ self.Locale = self._enum( RB='rhythmbox', LOCALE_DOMAIN='alternative-toolbar') def switch_locale(self, locale_type): """ Change the locale """ locale.setlocale(locale.LC_ALL, '') locale.bindtextdomain(locale_type, RB.locale_dir()) locale.textdomain(locale_type) gettext.bindtextdomain(locale_type, RB.locale_dir()) gettext.textdomain(locale_type) gettext.install(locale_type) def get_locale(self): """ return the string representation of the users locale for example en_US """ return locale.getdefaultlocale()[0] def _enum(self, **enums): """ Create an enumn. """ return type('Enum', (), enums) def __init__(self): """ Create singleton instance """ # Check whether we already have an instance if CoverLocale.__instance is None: # Create and remember instance CoverLocale.__instance = CoverLocale.__impl() # Store instance reference as the only member in the handle self.__dict__['_CoverLocale__instance'] = CoverLocale.__instance def __getattr__(self, attr): """ Delegate access to implementation """ return getattr(self.__instance, attr) def __setattr__(self, attr, value): """ Delegate access to implementation """ return setattr(self.__instance, attr, value) class Preferences(GObject.Object, PeasGtk.Configurable): """ Preferences for the Plugins. It holds the settings for the plugin and also is the responsible of creating the preferences dialog. """ __gtype_name__ = 'AlternativeToolbarPreferences' object = GObject.property(type=GObject.Object) def __init__(self): """ Initialises the preferences, getting an instance of the settings saved by Gio. """ GObject.Object.__init__(self) self.gs = GSetting() self.plugin_settings = self.gs.get_setting(self.gs.Path.PLUGIN) def do_create_configure_widget(self): """ Creates the plugin's preferences dialog """ print("DEBUG - create_display_contents") # create the ui self._first_run = True cl = CoverLocale() cl.switch_locale(cl.Locale.LOCALE_DOMAIN) builder = Gtk.Builder() builder.set_translation_domain(cl.Locale.LOCALE_DOMAIN) builder.add_from_file(rb.find_plugin_file(self, 'ui/altpreferences.ui')) builder.connect_signals(self) # bind the toggles to the settings start_hidden = builder.get_object('start_hidden_checkbox') start_hidden.set_active( not self.plugin_settings[self.gs.PluginKey.START_HIDDEN]) start_hidden.connect('toggled', self._start_hidden_checkbox_toggled) self._show_compact = builder.get_object('show_compact_checkbox') self.plugin_settings.bind(self.gs.PluginKey.SHOW_COMPACT, self._show_compact, 'active', Gio.SettingsBindFlags.DEFAULT) self._show_compact.connect('toggled', self._show_compact_checkbox_toggled) self._playing_label = builder.get_object('playing_label_checkbox') self.plugin_settings.bind(self.gs.PluginKey.PLAYING_LABEL, self._playing_label, 'active', Gio.SettingsBindFlags.DEFAULT) self._inline_label = builder.get_object('inline_label_checkbox') self.plugin_settings.bind(self.gs.PluginKey.INLINE_LABEL, self._inline_label, 'active', Gio.SettingsBindFlags.DEFAULT) volume_control = builder.get_object('volume_control_checkbox') self.plugin_settings.bind(self.gs.PluginKey.VOLUME_CONTROL, volume_control, 'active', Gio.SettingsBindFlags.DEFAULT) self._compact_control = builder.get_object('compact_checkbox') self.plugin_settings.bind(self.gs.PluginKey.COMPACT_PROGRESSBAR, self._compact_control, 'active', Gio.SettingsBindFlags.DEFAULT) self._enhanced_sidebar = builder.get_object( 'enhanced_sidebar_checkbox') self.plugin_settings.bind(self.gs.PluginKey.ENHANCED_SIDEBAR, self._enhanced_sidebar, 'active', Gio.SettingsBindFlags.DEFAULT) self._show_tooltips = builder.get_object('tooltips_checkbox') self.plugin_settings.bind(self.gs.PluginKey.SHOW_TOOLTIPS, self._show_tooltips, 'active', Gio.SettingsBindFlags.DEFAULT) self._enhanced_plugins = \ builder.get_object('enhanced_plugins_checkbox') self.plugin_settings.bind(self.gs.PluginKey.ENHANCED_PLUGINS, self._enhanced_plugins, 'active', Gio.SettingsBindFlags.DEFAULT) modern_switch = builder.get_object('modern_switch') # modern_switch.connect('state-set', self._modern_switch_state) modern_switch.connect('notify', self._modern_switch_state) # Determine what type of toolbar is to be displayed default = Gtk.Settings.get_default() display_type = self.plugin_settings[self.gs.PluginKey.DISPLAY_TYPE] if display_type == 0: if (not default.props.gtk_shell_shows_app_menu) or \ default.props.gtk_shell_shows_menubar: modern_switch.set_active(False) else: modern_switch.set_active(True) elif display_type == 1: modern_switch.set_active(True) else: modern_switch.set_active(False) if modern_switch.get_active(): self._show_compact.set_active(True) self._show_compact_checkbox_toggled(self._show_compact) infobar = builder.get_object('infobar') button = infobar.add_button(_("Restart"), 1) # restart_button = builder.get_object('restart_button') button.connect('clicked', self._restart_button_clicked) self._first_run = False return builder.get_object('preferences_box') def _restart_button_clicked(self, *args): exepath = shutil.which('rhythmbox') os.execl(exepath, exepath, *sys.argv) def _start_hidden_checkbox_toggled(self, toggle_button): self.plugin_settings[self.gs.PluginKey.START_HIDDEN] = \ not toggle_button.get_active() def _show_compact_checkbox_toggled(self, toggle_button): enabled = toggle_button.get_active() self._show_tooltips.set_sensitive(enabled) self._inline_label.set_sensitive(enabled) self._playing_label.set_sensitive(enabled) self._compact_control.set_sensitive(enabled) def _modern_switch_state(self, switch, param): state = switch.get_active() self._show_compact.set_sensitive(not state) if state: self._show_compact.set_active(True) self.plugin_settings[self.gs.PluginKey.DISPLAY_TYPE] = 1 else: self.plugin_settings[self.gs.PluginKey.DISPLAY_TYPE] = 2 alternative-toolbar-0.16.3/alttoolbar_rb3compat.py000066400000000000000000000702021264666532500222660ustar00rootroot00000000000000# -*- Mode: python; coding: utf-8; tab-width: 4; indent-tabs-mode: nil; -*- # # IMPORTANT - WHILST THIS MODULE IS USED BY SEVERAL OTHER PLUGINS # THE MASTER AND MOST UP-TO-DATE IS FOUND IN THE COVERART BROWSER # PLUGIN - https://github.com/fossfreedom/coverart-browser # PLEASE SUBMIT CHANGES BACK TO HELP EXPAND THIS API # # Copyright (C) 2012-2015 - fossfreedom # # 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 2, 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. import sys import xml.etree.ElementTree as ET import rb from gi.repository import GLib from gi.repository import GObject from gi.repository import Gio from gi.repository import Gtk from gi.repository import RB def gtk_version(): """ returns float of the major and minor parts of the GTK version e.g. return float(3.10) """ return float(str(Gtk.get_major_version()) + "." + str(Gtk.get_minor_version())) def pygobject_version(): """ returns float of the major and minor parts of a pygobject version e.g. version (3, 9, 5) return float(3.9) """ to_number = lambda t: ".".join(str(v) for v in t) str_version = to_number(GObject.pygobject_version) return float(str_version.rsplit('.', 1)[0]) def compare_pygobject_version(version): """ return True if version is less than pygobject_version i.e. 3.9 < 3.11 """ to_number = lambda t: ".".join(str(v) for v in t) str_version = to_number(GObject.pygobject_version) split = str_version.rsplit('.', 2) split_compare = version.rsplit('.', 2) if int(split_compare[0]) < int(split[0]): return True if int(split_compare[1]) < int(split[1]): return True return False PYVER = sys.version_info[0] if PYVER >= 3: import urllib.request import urllib.parse import urllib.error else: import urllib from urlparse import urlparse as rb2urlparse if PYVER >= 3: import http.client # pyflakes doesnt like python2 unicode so lets give it something # to chew on def unicode(a, b): return (a, b) else: import httplib def responses(): if PYVER >= 3: return http.client.responses else: return httplib.responses def unicodestr(param, charset): if PYVER >= 3: return param # str(param, charset) else: return unicode(param, charset) def unicodeencode(param, charset): if PYVER >= 3: return param # str(param).encode(charset) else: return unicode(param).encode(charset) def unicodedecode(param, charset): if PYVER >= 3: return param else: return param.decode(charset) def urlparse(uri): if PYVER >= 3: return urllib.parse.urlparse(uri) else: return rb2urlparse(uri) def url2pathname(url): if PYVER >= 3: return urllib.request.url2pathname(url) else: return urllib.url2pathname(url) def urlopen(filename): if PYVER >= 3: return urllib.request.urlopen(filename) else: return urllib.urlopen(filename) def pathname2url(filename): if PYVER >= 3: return urllib.request.pathname2url(filename) else: return urllib.pathname2url(filename) def unquote(uri): if PYVER >= 3: return urllib.parse.unquote(uri) else: return urllib.unquote(uri) def quote(uri, safe=None): if PYVER >= 3: if safe: return urllib.parse.quote(uri, safe=safe) else: return urllib.parse.quote(uri) else: if safe: return urllib.quote(uri, safe=safe) else: return urllib.quote(uri) def quote_plus(uri): if PYVER >= 3: return urllib.parse.quote_plus(uri) else: return urllib.quote_plus(uri) def is_rb3(*args): if hasattr(RB.Shell.props, 'ui_manager'): return False else: return True class Menu(GObject.Object): """ Menu object used to create window popup menus """ __gsignals__ = { 'pre-popup': (GObject.SIGNAL_RUN_LAST, None, ()) } def __init__(self, plugin, shell): """ Initializes the menu. """ super(Menu, self).__init__() self.plugin = plugin self.shell = shell self._unique_num = 0 self._rbmenu_items = {} self._rbmenu_objects = {} def add_menu_item(self, menubar, section_name, action): """ add a new menu item to the popup :param menubar: `str` is the name GtkMenu (or ignored for RB2.99+) :param section_name: `str` is the name of the section to add the item to (RB2.99+) :param action: `Action` to associate with the menu item """ return self.insert_menu_item(menubar, section_name, -1, action) def insert_menu_item(self, menubar, section_name, position, action): """ add a new menu item to the popup :param menubar: `str` is the name GtkMenu (or ignored for RB2.99+) :param section_name: `str` is the name of the section to add the item to (RB2.99+) :param position: `int` position to add to GtkMenu (ignored for RB2.99+) :param action: `Action` to associate with the menu item """ label = action.label if is_rb3(self.shell): app = self.shell.props.application item = Gio.MenuItem() action.associate_menuitem(item) item.set_label(label) if not section_name in self._rbmenu_items: self._rbmenu_items[section_name] = [] self._rbmenu_items[section_name].append(label) app.add_plugin_menu_item(section_name, label, item) else: item = Gtk.MenuItem(label=label) action.associate_menuitem(item) self._rbmenu_items[label] = item bar = self.get_menu_object(menubar) if position == -1: bar.append(item) else: bar.insert(item, position) bar.show_all() uim = self.shell.props.ui_manager uim.ensure_update() return item def insert_separator(self, menubar, at_position): """ add a separator to the popup (only required for RB2.98 and earlier) :param menubar: `str` is the name GtkMenu (or ignored for RB2.99+) :param position: `int` position to add to GtkMenu (ignored for RB2.99+) """ if not is_rb3(self.shell): menu_item = Gtk.SeparatorMenuItem().new() menu_item.set_visible(True) self._rbmenu_items['separator' + str(self._unique_num)] = menu_item self._unique_num = self._unique_num + 1 bar = self.get_menu_object(menubar) bar.insert(menu_item, at_position) bar.show_all() uim = self.shell.props.ui_manager uim.ensure_update() def remove_menu_items(self, menubar, section_name): """ utility function to remove all menuitems associated with the menu section :param menubar: `str` is the name of the GtkMenu containing the menu items (ignored for RB2.99+) :param section_name: `str` is the name of the section containing the menu items (for RB2.99+ only) """ if is_rb3(self.shell): if not section_name in self._rbmenu_items: return app = self.shell.props.application for menu_item in self._rbmenu_items[section_name]: app.remove_plugin_menu_item(section_name, menu_item) if self._rbmenu_items[section_name]: del self._rbmenu_items[section_name][:] else: if not self._rbmenu_items: return uim = self.shell.props.ui_manager bar = self.get_menu_object(menubar) for menu_item in self._rbmenu_items: bar.remove(self._rbmenu_items[menu_item]) bar.show_all() uim.ensure_update() def load_from_file(self, rb2_ui_filename, rb3_ui_filename): """ utility function to load the menu structure :param rb2_ui_filename: `str` RB2.98 and below UI file :param rb3_ui_filename: `str` RB2.99 and higher UI file """ self.builder = Gtk.Builder() try: from coverart_browser_prefs import CoverLocale cl = CoverLocale() self.builder.set_translation_domain(cl.Locale.LOCALE_DOMAIN) except: pass if is_rb3(self.shell): ui_filename = rb3_ui_filename else: ui_filename = rb2_ui_filename self.ui_filename = ui_filename self.builder.add_from_file(rb.find_plugin_file(self.plugin, ui_filename)) def _connect_rb3_signals(self, signals): def _menu_connect(action_name, func): action = Gio.SimpleAction(name=action_name) action.connect('activate', func) action.set_enabled(True) self.shell.props.window.add_action(action) for key, value in signals.items(): _menu_connect(key, value) def _connect_rb2_signals(self, signals): def _menu_connect(menu_item_name, func): menu_item = self.get_menu_object(menu_item_name) menu_item.connect('activate', func) for key, value in signals.items(): _menu_connect(key, value) def connect_signals(self, signals): """ connect all signal handlers with their menuitem counterparts :param signals: `dict` key is the name of the menuitem and value is the function callback when the menu is activated """ if is_rb3(self.shell): self._connect_rb3_signals(signals) else: self._connect_rb2_signals(signals) def get_gtkmenu(self, source, popup_name): """ utility function to obtain the GtkMenu from the menu UI file :param popup_name: `str` is the name menu-id in the UI file """ if popup_name in self._rbmenu_objects: return self._rbmenu_objects[popup_name] item = self.builder.get_object(popup_name) if is_rb3(self.shell): app = self.shell.props.application app.link_shared_menus(item) popup_menu = Gtk.Menu.new_from_model(item) popup_menu.attach_to_widget(source, None) else: popup_menu = item self._rbmenu_objects[popup_name] = popup_menu return popup_menu def get_menu_object(self, menu_name_or_link): """ utility function returns the GtkMenuItem/Gio.MenuItem :param menu_name_or_link: `str` to search for in the UI file """ if menu_name_or_link in self._rbmenu_objects: return self._rbmenu_objects[menu_name_or_link] item = self.builder.get_object(menu_name_or_link) if is_rb3(self.shell): if item: popup_menu = item else: app = self.shell.props.application popup_menu = app.get_plugin_menu(menu_name_or_link) else: popup_menu = item print(menu_name_or_link) self._rbmenu_objects[menu_name_or_link] = popup_menu return popup_menu def set_sensitive(self, menu_or_action_item, enable): """ utility function to enable/disable a menu-item :param menu_or_action_item: `GtkMenuItem` or `Gio.SimpleAction` that is to be enabled/disabled :param enable: `bool` value to enable/disable """ if is_rb3(self.shell): item = self.shell.props.window.lookup_action(menu_or_action_item) item.set_enabled(enable) else: item = self.get_menu_object(menu_or_action_item) item.set_sensitive(enable) def popup(self, source, menu_name, button, time): """ utility function to show the popup menu """ self.emit('pre-popup') menu = self.get_gtkmenu(source, menu_name) menu.popup(None, None, None, None, button, time) class ActionGroup(object): """ container for all Actions used to associate with menu items """ # action_state STANDARD = 0 TOGGLE = 1 def __init__(self, shell, group_name): """ constructor :param shell: `RBShell` :param group_name: `str` unique name for the object to create """ self.group_name = group_name self.shell = shell self._actions = {} if is_rb3(self.shell): self.actiongroup = Gio.SimpleActionGroup() else: self.actiongroup = Gtk.ActionGroup(group_name) uim = self.shell.props.ui_manager uim.insert_action_group(self.actiongroup) @property def name(self): return self.group_name def remove_actions(self): """ utility function to remove all actions associated with the ActionGroup """ for action in self.actiongroup.list_actions(): self.actiongroup.remove_action(action) def get_action(self, action_name): """ utility function to obtain the Action from the ActionGroup :param action_name: `str` is the Action unique name """ return self._actions[action_name] def add_action_with_accel(self, func, action_name, accel, **args): """ Creates an Action with an accelerator and adds it to the ActionGroup :param func: function callback used when user activates the action :param action_name: `str` unique name to associate with an action :param accel: `str` accelerator :param args: dict of arguments - this is passed to the function callback Notes: see notes for add_action """ args['accel'] = accel return self.add_action(func, action_name, **args) def add_action(self, func, action_name, **args): """ Creates an Action and adds it to the ActionGroup :param func: function callback used when user activates the action :param action_name: `str` unique name to associate with an action :param args: dict of arguments - this is passed to the function callback Notes: key value of "label" is the visual menu label to display key value of "action_type" is the RB2.99 Gio.Action type ("win" or "app") by default it assumes all actions are "win" type key value of "action_state" determines what action state to create """ if 'label' in args: label = args['label'] else: label = action_name if 'accel' in args: accel = args['accel'] else: accel = None state = ActionGroup.STANDARD if 'action_state' in args: state = args['action_state'] if is_rb3(self.shell): if state == ActionGroup.TOGGLE: action = Gio.SimpleAction.new_stateful(action_name, None, GLib.Variant('b', False)) else: action = Gio.SimpleAction.new(action_name, None) action_type = 'win' if 'action_type' in args: if args['action_type'] == 'app': action_type = 'app' app = Gio.Application.get_default() if action_type == 'app': app.add_action(action) else: self.shell.props.window.add_action(action) self.actiongroup.add_action(action) if accel: app.add_accelerator(accel, action_type + "." + action_name, None) else: if 'stock_id' in args: stock_id = args['stock_id'] else: stock_id = Gtk.STOCK_CLEAR if state == ActionGroup.TOGGLE: action = Gtk.ToggleAction(label=label, name=action_name, tooltip='', stock_id=stock_id) else: action = Gtk.Action(label=label, name=action_name, tooltip='', stock_id=stock_id) if accel: self.actiongroup.add_action_with_accel(action, accel) else: self.actiongroup.add_action(action) act = Action(self.shell, action) act.connect('activate', func, args) act.label = label act.accel = accel self._actions[action_name] = act return act class ApplicationShell(object): """ Unique class that mirrors RB.Application & RB.Shell menu functionality """ # storage for the instance reference __instance = None class __impl: """ Implementation of the singleton interface """ def __init__(self, shell): self.shell = shell if is_rb3(self.shell): self._uids = {} else: self._uids = [] self._action_groups = {} def insert_action_group(self, action_group): """ Adds an ActionGroup to the ApplicationShell :param action_group: `ActionGroup` to add """ self._action_groups[action_group.name] = action_group def lookup_action(self, action_group_name, action_name, action_type='app'): """ looks up (finds) an action created by another plugin. If found returns an Action or None if no matching Action. :param action_group_name: `str` is the Gtk.ActionGroup name (ignored for RB2.99+) :param action_name: `str` unique name for the action to look for :param action_type: `str` RB2.99+ action type ("win" or "app") """ if is_rb3(self.shell): if action_type == "app": action = \ self.shell.props.application.lookup_action(action_name) else: action = self.shell.props.window.lookup_action(action_name) else: uim = self.shell.props.ui_manager ui_actiongroups = uim.get_action_groups() actiongroup = None for actiongroup in ui_actiongroups: if actiongroup.get_name() == action_group_name: break action = None if actiongroup: action = actiongroup.get_action(action_name) if action: return Action(self.shell, action) else: return None def add_app_menuitems(self, ui_string, group_name, menu='tools'): """ utility function to add application menu items. For RB2.99 all application menu items are added to the "tools" section of the application menu. All Actions are assumed to be of action_type "app". For RB2.98 or less, it is added however the UI_MANAGER string is defined. :param ui_string: `str` is the Gtk UI definition. There is not an equivalent UI definition in RB2.99 but we can parse out menu items since this string is in XML format :param group_name: `str` unique name of the ActionGroup to add menu items to :param menu: `str` RB2.99 menu section to add to - nominally either 'tools' or 'view' """ if is_rb3(self.shell): root = ET.fromstring(ui_string) for elem in root.findall(".//menuitem"): action_name = elem.attrib['action'] group = self._action_groups[group_name] act = group.get_action(action_name) item = Gio.MenuItem() item.set_detailed_action('app.' + action_name) item.set_label(act.label) item.set_attribute_value("accel", GLib.Variant("s", act.accel)) app = Gio.Application.get_default() index = menu + action_name app.add_plugin_menu_item(menu, index, item) self._uids[index] = menu else: uim = self.shell.props.ui_manager self._uids.append(uim.add_ui_from_string(ui_string)) uim.ensure_update() def add_browser_menuitems(self, ui_string, group_name): """ utility function to add popup menu items to existing browser popups For RB2.99 all menu items are are assumed to be of action_type "win". For RB2.98 or less, it is added however the UI_MANAGER string is defined. :param ui_string: `str` is the Gtk UI definition. There is not an equivalent UI definition in RB2.99 but we can parse out menu items since this string is in XML format :param group_name: `str` unique name of the ActionGroup to add menu items to """ if is_rb3(self.shell): root = ET.fromstring(ui_string) for elem in root.findall("./popup"): popup_name = elem.attrib['name'] menuelem = elem.find('.//menuitem') action_name = menuelem.attrib['action'] group = self._action_groups[group_name] act = group.get_action(action_name) item = Gio.MenuItem() item.set_detailed_action('win.' + action_name) item.set_label(act.label) app = Gio.Application.get_default() if popup_name == 'QueuePlaylistViewPopup': plugin_type = 'queue-popup' elif popup_name == 'BrowserSourceViewPopup': plugin_type = 'browser-popup' elif popup_name == 'PlaylistViewPopup': plugin_type = 'playlist-popup' elif popup_name == 'PodcastViewPopup': plugin_type = 'podcast-episode-popup' else: print("unknown type %s" % plugin_type) index = plugin_type + action_name app.add_plugin_menu_item(plugin_type, index, item) self._uids[index] = plugin_type else: uim = self.shell.props.ui_manager self._uids.append(uim.add_ui_from_string(ui_string)) uim.ensure_update() def cleanup(self): """ utility remove any menuitems created. """ if is_rb3(self.shell): for uid in self._uids: Gio.Application.get_default().remove_plugin_menu_item( self._uids[uid], uid) else: uim = self.shell.props.ui_manager for uid in self._uids: uim.remove_ui(uid) uim.ensure_update() def __init__(self, shell): """ Create singleton instance """ # Check whether we already have an instance if ApplicationShell.__instance is None: # Create and remember instance ApplicationShell.__instance = ApplicationShell.__impl(shell) # Store instance reference as the only member in the handle self.__dict__['_ApplicationShell__instance'] = \ ApplicationShell.__instance def __getattr__(self, attr): """ Delegate access to implementation """ return getattr(self.__instance, attr) def __setattr__(self, attr, value): """ Delegate access to implementation """ return setattr(self.__instance, attr, value) class Action(object): """ class that wraps around either a Gio.Action or a Gtk.Action """ def __init__(self, shell, action): """ constructor. :param shell: `RBShell` :param action: `Gio.Action` or `Gtk.Action` """ self.shell = shell self.action = action self._label = '' self._accel = '' self._current_state = False self._do_update_state = True def connect(self, address, func, args): self._connect_func = func self._connect_args = args if address == 'activate': func = self._activate if is_rb3(self.shell): self.action.connect(address, func, args) else: self.action.connect(address, func, None, args) def _activate(self, action, *args): if self._do_update_state: self._current_state = not self._current_state self.set_state(self._current_state) self._connect_func(action, None, self._connect_args) @property def label(self): """ get the menu label associated with the Action for RB2.99+ actions dont have menu labels so this is managed manually """ if not is_rb3(self.shell): return self.action.get_label() else: return self._label @label.setter def label(self, new_label): if not is_rb3(self.shell): self.action.set_label(new_label) self._label = new_label @property def accel(self): """ get the accelerator associated with the Action """ return self._accel @accel.setter def accel(self, new_accelerator): if new_accelerator: self._accel = new_accelerator else: self._accel = '' def get_sensitive(self): """ get the sensitivity (enabled/disabled) state of the Action returns boolean """ if is_rb3(self.shell): return self.action.get_enabled() else: return self.action.get_sensitive() def set_state(self, value): """ set the state of a stateful action - this is applicable only to RB2.99+ """ if is_rb3(self.shell) and self.action.props.state_type: self.action.change_state(GLib.Variant('b', value)) def activate(self): """ invokes the activate signal for the action """ if is_rb3(self.shell): self.action.activate(None) else: self.action.activate() def set_active(self, value): """ activate or deactivate a stateful action signal For consistency with earlier RB versions, this will fire the activate signal for the action :param value: `boolean` state value """ if is_rb3(self.shell): self.action.change_state(GLib.Variant('b', value)) self._current_state = value self._do_update_state = False self.activate() self._do_update_state = True else: self.action.set_active(value) def get_active(self): """ get the state of the action returns `boolean` state value """ if is_rb3(self.shell): returnval = self._current_state else: returnval = self.action.get_active() return returnval def associate_menuitem(self, menuitem): """ links a menu with the action """ if is_rb3(self.shell): menuitem.set_detailed_action('win.' + self.action.get_name()) else: menuitem.set_related_action(self.action) alternative-toolbar-0.16.3/alttoolbar_repeat.py000066400000000000000000000377241264666532500216700ustar00rootroot00000000000000# This is a part of the external Repeat One Song plugin for Rhythmbox # # Author: Eduardo Mucelli Rezende Oliveira # E-mail: edumucelli@gmail.com or eduardom@dcc.ufmg.br # Version: 0.4 (Unstable) for Rhythmbox 3.0.1 or later # # # reworked for alternative-toolbar # Author: fossfreedom # # 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. from gi.repository import GLib from gi.repository import GObject from gi.repository import Gdk from gi.repository import Gio from gi.repository import Gtk from alttoolbar_preferences import CoverLocale from alttoolbar_preferences import GSetting from alttoolbar_rb3compat import gtk_version class Repeat(GObject.Object): def __init__(self, shell, toggle_button): """ :param toggle_button: button that controls the repeat functions :return: """ GObject.Object.__init__(self) # use this to start the repeat-one-song capability (if True) self.repeat_song = False self.shell = shell self.toggle_button = toggle_button # self.one_song_stprint ("adjoining") ate_normal, self.one_song_state_eos = range(2) # self.one_song_state = self.one_song_state_normal player = self.shell.props.shell_player # Please refer to the comments above to understand why those # two callbacks are not being used currently, Rhytmbox 2.99.1 # player.connect('playing-song-changed', self.on_song_change) # player.props.player.connect('eos', self.on_gst_player_eos) player.connect('elapsed-changed', self.on_elapsed_change) if gtk_version() >= 3.12: popover = Gtk.Popover.new(toggle_button) repeat = RepeatPopContainer(popover, toggle_button) popover.add(repeat) popover.set_modal(False) else: # use our custom Popover equivalent for Gtk+3.10 folks popover = CustomPopover(toggle_button) repeat = RepeatPopContainer(popover, toggle_button) popover.add(repeat) toggle_button.connect("toggled", self._on_toggle, popover, repeat) repeat.connect('repeat-type-changed', self._on_repeat_type_changed) self._on_repeat_type_changed(repeat, repeat.get_repeat_type()) def _on_toggle(self, toggle, popover, repeat): if toggle.get_active(): popover.show_all() self.repeat_song = \ repeat.get_repeat_type() == RepeatPopContainer.ONE_SONG else: popover.hide() self.repeat_song = False self._set_toggle_tooltip(repeat) print("on toggle", self.repeat_song) def _set_toggle_tooltip(self, repeat): # locale stuff cl = CoverLocale() cl.switch_locale(cl.Locale.LOCALE_DOMAIN) if self.toggle_button.get_has_tooltip(): if repeat.get_repeat_type() == RepeatPopContainer.ALL_SONGS: message = _("Repeat all tracks") else: message = _("Repeat the current track") self.toggle_button.set_tooltip_text(message) cl = CoverLocale() cl.switch_locale(cl.Locale.RB) def _on_repeat_type_changed(self, repeat, repeat_type): if self.toggle_button.get_active(): if repeat_type == RepeatPopContainer.ONE_SONG: self.repeat_song = True else: self.repeat_song = False else: self.repeat_song = False self._set_toggle_tooltip(repeat) print("repeat type changed", self.repeat_song) # Looks like there is a bug on gstreamer player and a seg fault # happens as soon as the 'eos' callback is called. # https://bugs.launchpad.net/ubuntu/+source/rhythmbox/+bug/1239218 # As soon it gets fixed or a code-based workaround gets available, # this method in conjunction with on_song_change will be used as # the way to control the song repetition. Meanwhile, on_elapsed_change # will be the chosen solution def on_gst_player_eos(self, gst_player, stream_data, early=0): # EOS signal means that the song changed because the song is over. # ie. the user did not explicitly change the song. # https://developer.gnome.org/rhythmbox/ # unstable/RBPlayer.html#RBPlayer-eos if self.repeat_song: self.one_song_state = self.one_song_state_eos # This is a old method to 'repeat' the current song as soon as it # reaches the last second. Will be the used until the bug mentioned on the # comments above gets fixed. def on_song_change(self, player, time): if self.one_song_state == self.one_song_state_eos: self.one_song_state = self.one_song_state_normal player.do_previous() # This is a old method to 'repeat' the current song as soon as it # reaches the last second. Will be the used until the bug mentioned on the # comments above gets fixed. # This might be improved keeping a instance variable with the duration and # updating it on_song_change. Therefore, it would not be # necessary to query the duration every time def on_elapsed_change(self, player, time): if self.repeat_song: duration = player.get_playing_song_duration() if duration > 0: # Repeat on the last two seconds of the song. Previously the # last second was used but RB now seems to use the last second # to prepare things for the next song of the list if time >= duration - 2: player.set_playing_time(0) class RepeatPopContainer(Gtk.ButtonBox): __gsignals__ = { "repeat-type-changed": (GObject.SIGNAL_RUN_LAST, None, (int,)) } # repeat-type-changed is emitted with one of the following values ONE_SONG = 1 ALL_SONGS = 2 def __init__(self, parent_container, parent_button, *args, **kwargs): super(RepeatPopContainer, self).__init__(*args, **kwargs) self.set_orientation(Gtk.Orientation.HORIZONTAL) self.set_layout(Gtk.ButtonBoxStyle.START) self.props.margin = 5 context = self.get_style_context() context.add_class('linked') icon_size = 4 toggle1 = Gtk.RadioButton.new(None) toggle1.set_mode(False) fallback = 'media-playlist-repeat-symbolic' icon = Gio.ThemedIcon.new_with_default_fallbacks(fallback) image = Gtk.Image() image.set_from_gicon(icon, icon_size) image.props.margin = 5 toggle1.set_image(image) toggle1.connect('leave-notify-event', self._on_popover_mouse_over) toggle1.connect('enter-notify-event', self._on_popover_mouse_over) toggle1.connect('toggled', self._on_popover_button_toggled) # locale stuff cl = CoverLocale() cl.switch_locale(cl.Locale.LOCALE_DOMAIN) if parent_button.get_has_tooltip(): toggle1.set_tooltip_text(_("Repeat all tracks")) self._repeat_button = toggle1 self.add(toggle1) self.child_set_property(toggle1, "non-homogeneous", True) toggle1.show_all() self._repeat_image = Gtk.Image() self._repeat_image.set_from_gicon(icon, icon_size) self._repeat_image.props.margin = 5 toggle2 = Gtk.RadioButton.new_from_widget(toggle1) toggle2.set_mode(False) sym = 'media-playlist-repeat-song-symbolic' icon2 = Gio.ThemedIcon.new_with_default_fallbacks(sym) image2 = Gtk.Image() image2.set_from_gicon(icon2, icon_size) image2.props.margin = 5 toggle2.set_image(image2) if parent_button.get_has_tooltip(): toggle2.set_tooltip_text(_("Repeat the current track")) self._repeat_song_image = Gtk.Image() self._repeat_song_image.set_from_gicon(icon2, icon_size) self._repeat_song_image.props.margin = 5 toggle2.connect('leave-notify-event', self._on_popover_mouse_over) toggle2.connect('enter-notify-event', self._on_popover_mouse_over) toggle2.connect('toggled', self._on_popover_button_toggled) toggle2.show_all() self._repeat_song_button = toggle2 self.add(toggle2) self.child_set_property(toggle2, "non-homogeneous", True) self._popover_inprogress = 0 parent_container.connect('leave-notify-event', self._on_popover_mouse_over) parent_container.connect('enter-notify-event', self._on_popover_mouse_over) parent_button.connect('leave-notify-event', self._on_popover_mouse_over) parent_button.connect('enter-notify-event', self._on_popover_mouse_over) parent_button.set_image(self._repeat_image) self._parent_container = parent_container self._parent_button = parent_button # now get the repeat-type saved in gsettings # get values from gsettings self.gs = GSetting() self.plugin_settings = self.gs.get_setting(self.gs.Path.PLUGIN) repeat_type = self.plugin_settings[self.gs.PluginKey.REPEAT_TYPE] if repeat_type == RepeatPopContainer.ONE_SONG: self._repeat_song_button.set_active(True) def _on_popover_button_toggled(self, button, *args): print("popover toggle") if button.get_active(): if button == self._repeat_button: self._parent_button.set_image(self._repeat_image) self.emit('repeat-type-changed', RepeatPopContainer.ALL_SONGS) self.plugin_settings[self.gs.PluginKey.REPEAT_TYPE] = \ RepeatPopContainer.ALL_SONGS else: self._parent_button.set_image(self._repeat_song_image) self.emit('repeat-type-changed', RepeatPopContainer.ONE_SONG) self.plugin_settings[self.gs.PluginKey.REPEAT_TYPE] = \ RepeatPopContainer.ONE_SONG def get_repeat_type(self): repeat_type = RepeatPopContainer.ALL_SONGS if self._repeat_song_button.get_active(): repeat_type = RepeatPopContainer.ONE_SONG return repeat_type def _on_popover_mouse_over(self, widget, eventcrossing): if eventcrossing.type == Gdk.EventType.ENTER_NOTIFY: if self._popover_inprogress == 0: self._popover_inprogress = 1 print("enter1") else: self._popover_inprogress = 2 print("enter2") self._popover_inprogress_count = 0 if type(widget) is Gtk.ToggleButton: print("here") if widget.get_active(): print(self._parent_container) self._parent_container.show_all() else: print("exit") self._popover_inprogress = 3 def delayed(*args): if self._popover_inprogress == 3: self._popover_inprogress_count += 1 if self._popover_inprogress_count < 5: return True self._parent_container.hide() self._popover_inprogress = 0 print("exit timeout") return False else: return True if self._popover_inprogress == 1: print("adding timeout") self._popover_inprogress = 2 GLib.timeout_add(100, delayed) class CustomPopover(Gtk.Window): def __init__(self, parent_button, *args, **kwargs): super(CustomPopover, self).__init__(type=Gtk.WindowType.POPUP, *args, **kwargs) self.set_decorated(False) self.set_resizable(False) self.set_type_hint(Gdk.WindowTypeHint.DOCK) self.stick() self._parent_button = parent_button self.connect_after('show', self._on_show) # Track movements of the window to move calendar window as well self.connect("configure-event", self.on_window_config) def add(self, widget): self._frame = Gtk.Frame() self._frame.add(widget) super(CustomPopover, self).add(self._frame) self._frame.show_all() # Popoverwindow co ordinates without off-screen correction: # Window origin (x, y) # | # V # --------------------------------- # | Main Window | # | | # | | # |Toggle button's (x, y) | # |(relative to parent window) | # | | | # | V | # | ......................... | # Popover | | Toggle Button | | # window's | | | | # (x, y)---+> ......................... | # |(window will be here) | # | | # | | # --------------------------------- # Popover Window's screen coordinates: # x = Window's origin x + Toggle Button's relative x # y = Window's origin y + Toggle Button's relative y + Toggle Button's # height def _on_show(self, widget): rect = self._parent_button.get_allocation() main_window = self._parent_button.get_toplevel() [val, win_x, win_y] = main_window.get_window().get_origin() cal_x = win_x + rect.x cal_y = win_y + rect.y + rect.height [x, y] = self.apply_screen_coord_correction(cal_x, cal_y) self.move(x, y) # This function "tries" to correct calendar window position so that it is # not obscured when # a portion of main window is off-screen. # Known bug: If the main window is partially off-screen before Calendar # window # has been realized then get_allocation() will return rect of 1x1 in which # case # the calculations will fail & correction will not be applied def apply_screen_coord_correction(self, x, y): corrected_y = y corrected_x = x rect = self.get_allocation() screen_w = Gdk.Screen.width() screen_h = Gdk.Screen.height() delta_x = screen_w - (x + rect.width) delta_y = screen_h - (y + rect.height) if delta_x < 0: corrected_x += delta_x print("at x") if corrected_x < 0: corrected_x = 0 button_rect = self._parent_button.get_allocation() window_width, window_height = \ self._parent_button.get_toplevel().get_size() # print (y, button_rect.y, button_rect.height, ) calc = (window_height - (button_rect.y + (button_rect.height * 2))) if delta_y < 0 or (calc < 0): btn_hgt = self._parent_button.get_allocation().height corrected_y = y - rect.height - btn_hgt print("at y") if corrected_y < 0: corrected_y = 0 return [corrected_x, corrected_y] # "configure-event" callback of main window, try to move calendar window # along with main window. def on_window_config(self, widget, event): # Maybe better way to find the visiblilty if self.get_mapped(): rect = self._parent_button.get_allocation() main_window = self._parent_button.get_toplevel() [val, win_x, win_y] = main_window.get_window().get_origin() cal_x = win_x + rect.x cal_y = win_y + rect.y + rect.height self.show_all() [x, y] = self.apply_screen_coord_correction(cal_x, cal_y) self.move(x, y) alternative-toolbar-0.16.3/alttoolbar_sidebar.py000066400000000000000000000534571264666532500220220ustar00rootroot00000000000000# -*- Mode: python; coding: utf-8; tab-width: 4; indent-tabs-mode: nil; -*- # # Copyright (C) 2015 - fossfreedom # # 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, 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. import gettext from gi.repository import GLib from gi.repository import GObject from gi.repository import Gdk from gi.repository import Gio from gi.repository import Gtk from gi.repository import Pango from gi.repository import RB from alttoolbar_controller import AltControllerCategory from alttoolbar_preferences import CoverLocale from alttoolbar_preferences import GSetting class AltToolbarSidebar(Gtk.TreeView): expanders = GObject.property(type=str, default='{1:True}') def __init__(self, toolbar, rbtree): """ Initialises the object. """ super(AltToolbarSidebar, self).__init__() self.shell = toolbar.shell self.toolbar = toolbar self.plugin = toolbar.plugin self.rbtree = rbtree self._drag_dest_source = None self._drag_motion_counter = -1 # locale stuff cl = CoverLocale() cl.switch_locale(cl.Locale.LOCALE_DOMAIN) self.set_name("AltToolbarSideBar") self._category = {} self._last_click_source = None self._user_clicked = False gs = GSetting() plugin_settings = gs.get_setting(gs.Path.PLUGIN) plugin_settings.bind(gs.PluginKey.EXPANDERS, self, 'expanders', Gio.SettingsBindFlags.DEFAULT) # title, source, visible self.treestore = Gtk.TreeStore.new([str, GObject.Object, bool]) self.treestore_filter = self.treestore.filter_new(root=None) self.treestore_filter.set_visible_column(2) self.set_model(self.treestore_filter) context = self.get_style_context() context.add_class(Gtk.STYLE_CLASS_SIDEBAR) self.set_headers_visible(False) # define the headers - not visible by default def define_category(text, category): local = self.treestore.append(None) self.treestore[local] = [text, None, False] self._category[category] = local define_category(_("Local collection"), AltControllerCategory.LOCAL) define_category(_("Online sources"), AltControllerCategory.ONLINE) define_category(_("Other sources"), AltControllerCategory.OTHER) define_category(_("Playlists"), AltControllerCategory.PLAYLIST) def delayed(*args): model = self.shell.props.display_page_model rootiter = model.get_iter_first() depth = 0 self._traverse_rows(model, rootiter, None, depth) # switch on/off headers depending upon what's in the model self._refresh_headers() # tidy up syncing by connecting signals self._connect_signals() # now expand or collapse each expander that we have saved from a # previous session expanders = eval(self.expanders) print(expanders) print(self.expanders) for category in expanders: print(category) path = self.treestore.get_path(self._category[category]) if path and expanders[category]: # self._user_clicked = True self.expand_row(path, False) # expanders[category]) return False GLib.timeout_add_seconds(1, delayed) column = Gtk.TreeViewColumn.new() column.set_fixed_width(5) column.set_sizing(Gtk.TreeViewColumnSizing.FIXED) self.append_column(column) column = Gtk.TreeViewColumn.new() pixbuf_renderer = Gtk.CellRendererPixbuf() column.pack_start(pixbuf_renderer, False) renderer = Gtk.CellRendererText() renderer.connect('edited', self.on_renderertext_edited) self.text_renderer = renderer column.pack_start(renderer, False) column.set_cell_data_func(pixbuf_renderer, self._set_pixbuf) column.set_cell_data_func(renderer, self._set_text) self.tree_column = column self.append_column(column) self.set_expander_column(column) self.show_all() self.set_can_focus(True) cl = CoverLocale() cl.switch_locale(cl.Locale.RB) def _connect_signals(self): # display_page_model signals to keep the sidebar model in sync model = self.shell.props.display_page_model self._cpi = model.connect('page-inserted', self._model_page_inserted) self._crd = model.connect('row-deleted', self._model_page_deleted) self._crc = model.connect('row-changed', self._model_page_changed) # when we click on the sidebar - # need to keep the display_page_tree in sync self.connect('button-press-event', self._row_click) # and visa versa tree = self.shell.props.display_page_tree tree.props.model.connect('row-inserted', self._tree_inserted) tree.connect('selected', self._display_page_tree_selected) self.shell.props.shell_player.connect('playing-song-changed', self._on_playing_song_changed) # drag drop self.enable_model_drag_dest([], Gdk.DragAction.COPY) self.drag_dest_add_uri_targets() self.connect('drag-drop', self.on_drag_drop) self.connect('drag-data-received', self.on_drag_data_received) self.connect('drag-motion', self.on_drag_motion) def cleanup(self): model = self.shell.props.display_page_model model.disconnect(self._cpi) model.disconnect(self._crd) model.disconnect(self._crc) def on_drag_drop(self, widget, context, x, y, time): """ Callback called when a drag operation finishes over the treeview It decides if the dropped item can be processed. """ print("on_drag_drop") # stop the propagation of the signal (deactivates superclass callback) widget.stop_emission_by_name('drag-drop') target = self.drag_dest_find_target(context, None) widget.drag_get_data(context, target, time) self._drag_dest_source = None return True def on_drag_motion(self, widget, drag_context, x, y, time): path = False try: path, pos = widget.get_dest_row_at_pos(x, y) except: pass result = False if path and (pos == Gtk.TreeViewDropPosition.BEFORE or pos == Gtk.TreeViewDropPosition.AFTER): if pos == Gtk.TreeViewDropPosition.BEFORE: drop_pos = Gtk.TreeViewDropPosition.INTO_OR_BEFORE else: drop_pos = Gtk.TreeViewDropPosition.INTO_OR_AFTER widget.set_drag_dest_row(None, drop_pos) # Gdk.drag_status(drag_context, 0, time) path = None if path: dest_source = self.treestore_filter[path][1] try: # note - some sources dont have a can_paste method so need to # trap this case if not dest_source: result = False elif dest_source.can_paste(): result = True except: result = False if dest_source and result: if dest_source != self._drag_dest_source: if self._drag_motion_counter != -1: self._drag_motion_counter = 0 self._drag_dest_source = dest_source def delayed(*args): if self._drag_motion_counter < 2 and \ self._drag_dest_source: self._drag_motion_counter += 1 return True if self._drag_dest_source \ and self._drag_motion_counter >= 2: tree = self.shell.props.display_page_tree if tree: tree.select(self._drag_dest_source) self.rbtree.expand_all() self._drag_motion_counter = -1 return False if self._drag_motion_counter == -1: self._drag_motion_counter = 0 GLib.timeout_add_seconds(1, delayed) if result: Gdk.drag_status(drag_context, Gdk.DragAction.COPY, time) else: Gdk.drag_status(drag_context, 0, time) self._drag_dest_source = None return not result def on_drag_data_received(self, widget, drag_context, x, y, data, info, time): """ Callback called when the drag source has prepared the data (pixbuf) for us to use. """ print("on_drag_data_received") # stop the propagation of the signal (deactivates superclass callback) widget.stop_emission_by_name('drag-data-received') path, pos = widget.get_dest_row_at_pos(x, y) dest_source = self.treestore_filter[path][1] drag_context.finish(True, False, time) uris = data.get_uris() entries = [] for uri in uris: entry = self.shell.props.db.entry_lookup_by_location(uri) if entry: entries.append(entry) dest_source.paste(entries) def _on_playing_song_changed(self, *args): """ signal when a playing song changes - need to invoke a tree-refresh to ensure the user can see which source :param args: :return: """ print("playing song changed") if hasattr(self.plugin, "db"): # curious crash when exiting - lets not # send the queue_draw in this case print("queuing") self.queue_draw() def on_renderertext_edited(self, renderer, path, new_text): print("edited") print(path) print(new_text) self.treestore_filter[path][1].props.name = new_text def _traverse_rows(self, store, treeiter, new_parent_iter, depth): while treeiter is not None: # print(depth, store[treeiter][1]) # print(depth, store[treeiter][1].props.name) if isinstance(store[treeiter][1], RB.DisplayPageGroup): if store.iter_has_child(treeiter): childiter = store.iter_children(treeiter) self._traverse_rows(store, childiter, treeiter, depth) treeiter = store.iter_next(treeiter) continue if depth == 0: category_iter = self._get_category_iter(store[treeiter][1]) leaf_iter = self.treestore.append(category_iter) else: leaf_iter = self.treestore.append(new_parent_iter) self.treestore[leaf_iter][1] = store[treeiter][1] self.treestore[leaf_iter][0] = "" self.treestore[leaf_iter][2] = True if store.iter_has_child(treeiter): childiter = store.iter_children(treeiter) self._traverse_rows(store, childiter, leaf_iter, depth + 1) treeiter = store.iter_next(treeiter) def _model_page_changed(self, model, path, page_iter): print(model[page_iter][1].props.name) print(path) # self._model_page_inserted(model, path, page_iter) def _tree_inserted(self, model, path, page_iter): print(path) print(page_iter) print(model[path][1].props.name) print(model[path][1]) self._model_page_inserted(model, model[path][1], page_iter) def _model_page_inserted(self, model, page, page_iter): print(page) print(page_iter) parent_iter = model.iter_parent(page_iter) print(parent_iter) def find_lookup_rows(store, treeiter, page): while treeiter is not None: found_page = store[treeiter][1] print(found_page) if found_page is not None and found_page == page: # print("found %s" % found_page.props.name) return treeiter if store.iter_has_child(treeiter): childiter = store.iter_children(treeiter) ret = find_lookup_rows(store, childiter, page) if ret: return ret treeiter = store.iter_next(treeiter) print("nothing found") return None # first check if we've already got the page in the model rootiter = self.treestore.get_iter_first() if find_lookup_rows(self.treestore, rootiter, page): return if (parent_iter and isinstance(model[parent_iter][1], RB.DisplayPageGroup)) or \ not parent_iter: # the parent of the inserted row is a top-level item in the # display-page-model # print("top level") category_iter = self._get_category_iter(page) leaf_iter = self.treestore.append(category_iter) else: # the parent is another source so we need to find the iter in our # model to hang it off # print("child level") searchpage = model[parent_iter][1] # print("####", searchpage) leaf_iter = find_lookup_rows(self.treestore, rootiter, searchpage) # print("##2", leaf_iter) leaf_iter = self.treestore.append(leaf_iter) self.treestore[leaf_iter][1] = page self.treestore[leaf_iter][0] = "" self.treestore[leaf_iter][2] = True self._refresh_headers() if "PlaylistSource" in type(page).__name__: # a playlist of somesort has been added - so lets put the user into # edit mode self.edit_playlist(leaf_iter) self.rbtree.expand_all() def edit_playlist(self, leaf_iter): """ edit the playlist :param leaf_iter: treestore iter :return: """ print("edit_playlist") self.text_renderer.props.editable = True path = self.treestore.get_path(leaf_iter) path = self.treestore_filter.convert_child_path_to_path(path) print(path) self.grab_focus() def delayed(*args): self.set_cursor_on_cell(path, self.tree_column, self.text_renderer, True) GLib.timeout_add_seconds(1, delayed, None) def _model_page_deleted(self, model, path): """ signal from the displaytreemodel - we dont actually know what is deleted ... just that something has been :param model: :param path: :return: """ # first do a reverse lookup so that we can search quicker later # dict of sources in the sidebar model with their treeiter lookup = {} rootiter = self.treestore.get_iter_first() def find_lookup_rows(store, treeiter): while treeiter is not None: # if store[treeiter][0] == "": # lookup[store[treeiter][1]] = treeiter if store[treeiter][1] is not None: lookup[store[treeiter][1]] = treeiter if store.iter_has_child(treeiter): childiter = store.iter_children(treeiter) find_lookup_rows(store, childiter) treeiter = store.iter_next(treeiter) find_lookup_rows(self.treestore, rootiter) # next iterate through the displaytreemodel - where we have a matching # source, delete it from our lookup def find_rows(store, treeiter): while treeiter is not None: if store[treeiter][1] in lookup: del lookup[store[treeiter][1]] if store.iter_has_child(treeiter): childiter = store.iter_children(treeiter) find_rows(store, childiter) treeiter = store.iter_next(treeiter) rootiter = model.get_iter_first() find_rows(model, rootiter) # from what is left is the stuff to remove from our treeview # (treestore) for source in lookup: self.treestore.remove(lookup[source]) self._refresh_headers() def _row_click(self, widget, event): """ event called when clicking on a row """ print('_row_click') try: treepath, treecolumn, cellx, celly = \ widget.get_path_at_pos(event.x, event.y) except: print("exit") return active_object = self.treestore_filter[treepath][1] print(active_object) if active_object: # we have a source self._user_clicked = True self.shell.props.display_page_tree.select(active_object) self.rbtree.expand_all() if self._last_click_source == active_object: self.text_renderer.props.editable = \ "PlaylistSource" in type(active_object).__name__ else: self.text_renderer.props.editable = False self._last_click_source = active_object def delayed(*args): # save current state of each category in the treeview cat_vals = {} for category in self._category: path = self.treestore.get_path(self._category[category]) if path: cat_vals[category] = self.row_expanded(path) self.expanders = str(cat_vals) print(self.expanders) GLib.timeout_add_seconds(1, delayed) def _display_page_tree_selected(self, display_page_tree, page): """ signal from when a page is selected in the display-page-tree - we need to sync with our tree :param display_page_tree: :param page: :return: """ if self._user_clicked: self._user_clicked = False return # first do a reverse lookup so that we can search quicker later # dict of sources in the sidebar model with their treeiter lookup = {} rootiter = self.treestore_filter.get_iter_first() def find_lookup_rows(store, treeiter): while treeiter is not None: if store[treeiter][1] is not None: lookup[store[treeiter][1]] = treeiter print(store[treeiter][1].props.name) if store.iter_has_child(treeiter): childiter = store.iter_children(treeiter) find_lookup_rows(store, childiter) treeiter = store.iter_next(treeiter) find_lookup_rows(self.treestore_filter, rootiter) if page in lookup: path = self.treestore_filter.get_path(lookup[page]) self.expand_to_path(path) self.set_cursor(path) def _set_text(self, column, renderer, model, treeiter, arg): source = model[treeiter][1] if source is None: renderer.props.weight = Pango.Weight.BOLD renderer.props.text = model[treeiter][0] renderer.props.visible = model[treeiter][2] else: renderer.props.visible = True player = self.shell.props.shell_player playing = \ player.get_playing and player.get_playing_source() == source cl = CoverLocale() cl.switch_locale(cl.Locale.LOCALE_DOMAIN) translation = gettext.gettext(source.props.name) cl.switch_locale(cl.Locale.RB) renderer.props.text = translation if playing: renderer.props.weight = Pango.Weight.BOLD else: renderer.props.weight = Pango.Weight.NORMAL renderer.props.ypad = 3 path = model.get_path(treeiter) if path.get_depth() == 1: renderer.props.ypad = 6 renderer.props.xpad = 3 else: renderer.props.ypad = 3 renderer.props.xpad = 0 renderer.props.ellipsize = Pango.EllipsizeMode.END def _refresh_headers(self): treeiter = self.treestore.get_iter_first() while treeiter is not None: self.treestore[treeiter][2] = \ self.treestore.iter_has_child(treeiter) treeiter = self.treestore.iter_next(treeiter) def _set_pixbuf(self, column, renderer, model, treeiter, arg): source = model[treeiter][1] if source is None: renderer.props.pixbuf = None else: ret_bool, controller = self.toolbar.is_controlled(source) renderer.props.gicon = controller.get_gicon(source) renderer.props.follow_state = True path = model.get_path(treeiter) if path.get_depth() == 2: renderer.props.visible = True # must be a child so show the # pixbuf renderer else: renderer.props.visible = False # headers or children of child # dont have pixbuf's so no renderer to display renderer.props.xpad = 3 def _get_category_iter(self, source): ret_bool, controller = self.toolbar.is_controlled(source) category = AltControllerCategory.OTHER if ret_bool: category = controller.get_category() return self._category[category] alternative-toolbar-0.16.3/alttoolbar_type.py000066400000000000000000001513031264666532500213570ustar00rootroot00000000000000# -*- Mode: python; coding: utf-8; tab-width: 4; indent-tabs-mode: nil; -*- # # Copyright (C) 2015 - fossfreedom # # 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, 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. import os import xml.etree.ElementTree as ET from datetime import datetime, date from xml.etree.ElementTree import SubElement import rb from gi.repository import GLib from gi.repository import GObject from gi.repository import Gdk from gi.repository import GdkPixbuf from gi.repository import Gio from gi.repository import Gtk from gi.repository import Pango from gi.repository import RB from alttoolbar_controller import AltAndroidController from alttoolbar_controller import AltCoverArtBrowserController from alttoolbar_controller import AltCoverArtPlaySourceController from alttoolbar_controller import AltErrorsController from alttoolbar_controller import AltGenericController from alttoolbar_controller import AltLastFMController from alttoolbar_controller import AltMusicLibraryController from alttoolbar_controller import AltPlaylistController from alttoolbar_controller import AltPodcastController from alttoolbar_controller import AltQueueController from alttoolbar_controller import AltRadioController from alttoolbar_controller import AltSoundCloudController from alttoolbar_controller import AltStandardLocalController from alttoolbar_controller import AltStandardOnlineController from alttoolbar_preferences import CoverLocale from alttoolbar_preferences import GSetting from alttoolbar_rb3compat import gtk_version from alttoolbar_repeat import Repeat from alttoolbar_sidebar import AltToolbarSidebar from alttoolbar_widget import SmallProgressBar from alttoolbar_widget import SmallScale class AT(object): @staticmethod def ToolbarRequestCallback(toolbar_type, box=None): """ Callback method to obtain the type of toolbar together with the Gtk.Box where new UI elements can be added :param toolbar_type: AltToolbarBase derived object :param box: Gtk.Box or None if the toolbar does not have a UI where new objects can be added :return: """ return toolbar_type, box class AltToolbarBase(GObject.Object): """ base for all toolbar types - never instantiated by itself """ setup_completed = GObject.property(type=bool, default=False) # if changed to true then # setup_completed observers called back source_toolbar_visible = GObject.property(type=bool, default=True) def __init__(self): """ Initialises the object. """ super(AltToolbarBase, self).__init__() # remember details about when an entryview has been processed self._process_entryview = {} folder = RB.user_cache_dir() + "/alternate-toolbar" if not os.path.exists(folder): os.makedirs(folder) self._entryview_filename = folder + "/entryview_db.xml" self._save_cols_loop = 0 db_version = "1" try: # if the db has not been deleted or is screwed up or is an older # version than expected then # assume via the except we are starting from a clean db self._entryview_tree = ET.parse(self._entryview_filename) self._entryview_root = self._entryview_tree.getroot() db = self._entryview_root.find("database") if db.text != db_version: raise ValueError("wrong database version") except: text = """ """ self._entryview_root = ET.fromstring(text) db = SubElement(self._entryview_root, "database") db.text = db_version self._entryview_tree = ET.ElementTree(self._entryview_root) # bind the source-toolbar gsettings gs = GSetting() plugin_settings = gs.get_setting(gs.Path.PLUGIN) plugin_settings.bind(gs.PluginKey.SOURCE_TOOLBAR, self, 'source_toolbar_visible', Gio.SettingsBindFlags.DEFAULT) self._async_functions = [] # array of functions to callback once the # toolbar has been setup self.connect('notify::setup-completed', self._on_setup_completed) def initialise(self, plugin): """ one off initialisation call :param plugin is the plugin reference """ self.plugin = plugin self.shell = plugin.shell self.find = plugin.find # finally - complete the headerbar setup after the database has fully # loaded because # rhythmbox has everything initiated at this point. self.startup_completed = False # self.shell.props.db.connect('load-complete', self.on_load_complete) # fire event anyway - scenario is when plugin is first activated post # rhythmbox having started def delayed(*args): if self.shell.props.selected_page: self.startup_completed = True self.on_startup() return False else: return True GLib.timeout_add(100, delayed) def get_custom_box(self): """ :return: Gtk.Box """ return None def post_initialise(self): """ one off post initialisation call """ tool_action = 'ToggleSourceMediaToolbar' action = self.plugin.toggle_action_group.get_action(tool_action) action.set_active(self.source_toolbar_visible) def on_startup(self, *args): """ call after RB has completed its initialisation and selected the first view :param args: :return: """ self.startup_completed = True self.reset_toolbar(self.shell.props.selected_page) self.reset_entryview(self.shell.props.selected_page) def cleanup(self): """ initiate a toolbar cleanup of resources and changes made to rhythmbox :return: """ for page in self._process_entryview: self.disconnect(self._process_entryview[page]) self.purge_builder_content() def set_visible(self, visible): """ change the visibility of the toolbar :param bool """ pass def show_cover(self, visible): """ change the visibility of the toolbar coverart :param bool """ pass def display_song(self, visible): """ change the visibility of the song label on the toolbar :param bool """ pass def play_control_change(self, player, playing): """ control the display of various play-controls :param player is the shell-player :param playing bool as to whether a track is being played """ pass def purge_builder_content(self): """ one off cleanup routine called when the plugin in deactivated """ pass def show_slider(self, visible): """ show or hide the slider (progress bar) :param visible is a bool """ pass def enable_slider(self, toggle): """ enable or disable the slider (progress bar) :param toggle is a bool """ pass def reset_entryview(self, page): """ whenever a source changes this resets the source entryview to reflect the changed source :param page - RBDisplayPage """ print("reset entryview") if not page: print("no page") return entryview = page.get_entry_view() if not entryview: print("no entry view") return treeview = entryview.get_child() def move_col(*args): cols = treeview.get_columns() treeview.set_reorderable(True) current_cols = [] base_col = None base_col_found = False for col in cols: title = col.props.title if title is not None and title.strip() != "": if not base_col_found: base_col = cols[cols.index(col) - 1] base_col_found = True print(title) col.set_reorderable(True) current_cols.append(col) if page in self._process_entryview: # disconnect previous signal handler if have been connected # before otherwise we'll trigger stuff when moving columns treeview.disconnect(self._process_entryview[page]) # now move columns around depending upon saved values lookup = "pages/page[@name='" + self._safe_string(type( page).__name__) + "']" element = self._entryview_root.find(lookup) if element is not None: # we've got something remembered to lets move cols around remembered_col_titles = eval(element.text) remembered_cols = [] for title in remembered_col_titles: for col in current_cols: if col.props.title == title: remembered_cols.append(col) break for i in range(len(remembered_cols)): for col in current_cols: if col.props.title == remembered_cols[i].props.title: if current_cols.index(col) != i: print(i, col.props.title) if i == 0: treeview.move_column_after(col, base_col) else: pos = i - 1 treeview.move_column_after(col, remembered_cols[ pos]) break # now connect new signal handler id = treeview.connect('columns-changed', self._entryview_column_changed, page) self._process_entryview[page] = id # add a short delay otherwise RB will move after us nulling our # achievement Gdk.threads_add_timeout(GLib.PRIORITY_DEFAULT_IDLE, 10, move_col) def _safe_string(self, s): return ''.join([i for i in s if i.isalpha()]) def _entryview_column_changed(self, treeview, page): # we basically don't want to process column-changed signals # when closing because these are fired by RB during the entry-view # cleanup & columns being deleted # so we work around this by looping for .5 secs before saving... # if we don't finish looping we assume that RB is closing and thus # dont really want to save ... yes a bit of a funny but its the best # we can do since RB doesnt have a close signal ... and just waiting # on the windows close event doesnt work because File-Quit cleans up # before actually closing. def _save_cols(*args): self._save_cols_loop += 1 if self._save_cols_loop <= 6: return True self._save_cols_loop = 0 self._save_entryview_cols(treeview, page) return False if self._save_cols_loop == 0: self._save_cols_loop = 1 Gdk.threads_add_timeout(GLib.PRIORITY_DEFAULT_IDLE, 100, _save_cols) else: self._save_cols_loop = 1 def _save_entryview_cols(self, treeview, page): print("entryview column changed") print(page) def quoted_string(array): return ','.join("'{0}'".format(x) for x in array) lookup = "pages/page[@name='" + self._safe_string(type( page).__name__) + "']" node = self._entryview_root.find(lookup) if node is None: print("new node") pages = self._entryview_root.find("pages") node = SubElement(pages, 'page') node.set("name", self._safe_string(type(page).__name__)) arr = [] cols = treeview.get_columns() for col in cols: if col.props.title is not None and col.props.title != "": arr.append(col.props.title) if len(arr) < 2: # nothing to do so quit before writing return output = quoted_string(arr) print(output) node.text = output self._indent_xml(self._entryview_root) self._entryview_tree.write(self._entryview_filename, xml_declaration=True) def _indent_xml(self, elem, level=0, more_sibs=False): i = "\n" if level: i += (level - 1) * ' ' num_kids = len(elem) if num_kids: if not elem.text or not elem.text.strip(): elem.text = i + " " if level: elem.text += ' ' count = 0 for kid in elem: self._indent_xml(kid, level + 1, count < num_kids - 1) count += 1 if not elem.tail or not elem.tail.strip(): elem.tail = i if more_sibs: elem.tail += ' ' else: if level and (not elem.tail or not elem.tail.strip()): elem.tail = i if more_sibs: elem.tail += ' ' def reset_toolbar(self, page): """ whenever a source changes this resets the toolbar to reflect the changed source :param page - RBDisplayPage """ print("reset toolbar") if not page: print("no page") return toolbar = self.find(page, 'RBSourceToolbar', 'by_name') if toolbar: print("found") toolbar.set_visible(self.source_toolbar_visible) else: print("not found") self.plugin.emit('toolbar-visibility', self.source_toolbar_visible) def setup_completed_async(self, async_function): """ toolbars will callback once the setup has completed :param async_function: function callback :return: """ if self.setup_completed: async_function(AT.ToolbarRequestCallback(self, self.get_custom_box())) else: self._async_functions.append(async_function) def _on_setup_completed(self, *args): """ one-off callback anybody who has registered to be notified when a toolbar has been completely setup :param args: :return: """ if self.setup_completed: for callback_func in self._async_functions: callback_func(AT.ToolbarRequestCallback(self, self.get_custom_box())) def source_toolbar_visibility(self, visibility): """ called to toggle the source toolbar """ print("source_bar_visibility") self.source_toolbar_visible = visibility # not self.source_toolbar_visible self.plugin.on_page_change(self.shell.props.display_page_tree, self.shell.props.selected_page) class AltToolbarStandard(AltToolbarBase): """ standard RB toolbar """ __gtype_name = 'AltToolbarStandard' def __init__(self): """ Initialises the object. """ super(AltToolbarStandard, self).__init__() def post_initialise(self): self.volume_button = self.find(self.plugin.rb_toolbar, 'GtkVolumeButton', 'by_id') self.volume_button.set_visible(self.plugin.volume_control) action = self.plugin.toggle_action_group.get_action('ToggleToolbar') action.set_active(not self.plugin.start_hidden) self.set_visible(not self.plugin.start_hidden) self.setup_completed = True def set_visible(self, visible): self.plugin.rb_toolbar.set_visible(visible) class AltToolbarShared(AltToolbarBase): """ shared components for the compact and headerbar toolbar types """ def __init__(self): """ Initialises the object. """ super(AltToolbarShared, self).__init__() # Prepare Album Art Displaying self.album_art_db = GObject.new(RB.ExtDB, name="album-art") what, width, height = Gtk.icon_size_lookup(Gtk.IconSize.SMALL_TOOLBAR) self.icon_width = width self.cover_pixbuf = None self._controllers = {} self._tooltip_exceptions = ['album_cover'] self._moved_controls = [] def initialise(self, plugin): super(AltToolbarShared, self).initialise(plugin) ui = rb.find_plugin_file(plugin, 'ui/alttoolbar.ui') cl = CoverLocale() builder = Gtk.Builder() builder.set_translation_domain(cl.Locale.LOCALE_DOMAIN) builder.add_from_file(ui) self.load_builder_content(builder) self.connect_builder_content(builder) self._controllers['generic'] = AltGenericController(self) # every potential source should have its own controller - we use this # to categorise the source and provide specific capability for # inherited classes where a controller is not specified then a generic # controller is used i.e. use add_controller method to add a controller self.add_controller(AltMusicLibraryController(self)) self.add_controller(AltSoundCloudController(self)) self.add_controller(AltCoverArtBrowserController(self)) self.add_controller(AltCoverArtPlaySourceController(self)) self.add_controller(AltQueueController(self)) self.add_controller(AltStandardOnlineController(self)) self.add_controller(AltStandardLocalController(self)) self.add_controller(AltRadioController(self)) self.add_controller(AltLastFMController(self)) self.add_controller(AltPlaylistController(self)) self.add_controller(AltErrorsController(self)) self.add_controller(AltPodcastController(self)) self.add_controller(AltAndroidController(self)) # support RTL for control, icon_name in \ [(self.prev_button, 'media-skip-backward-symbolic'), (self.play_button, 'media-playback-start-symbolic'), (self.next_button, 'media-skip-forward-symbolic')]: image = control.get_child() icon_name = self.request_rtl_icon(control, icon_name) image.set_from_icon_name(icon_name, image.props.icon_size) # now move current RBDisplayPageTree to listview stack display_tree = self.shell.props.display_page_tree self.display_tree_parent = display_tree.get_parent() self.display_tree_parent.remove(display_tree) self.stack = Gtk.Stack() tran_type = Gtk.StackTransitionType.SLIDE_LEFT_RIGHT self.stack.set_transition_type(tran_type) self.stack.set_transition_duration(1000) image_name = 'view-list-symbolic' box_listview = Gtk.Box() box_listview.pack_start(display_tree, True, True, 0) # box_listview.show_all() self.stack.add_named(box_listview, "listview") self.stack.child_set_property(box_listview, "icon-name", image_name) self.stack.show_all() self.display_tree_parent.pack1(self.stack, True, True) # if 1==2: #self.plugin.enhanced_sidebar: toolbar = self.find(display_tree, 'GtkToolbar', 'by_name') # context = toolbar.get_style_context() # context.add_class('toolbar') box = self.find(toolbar, 'GtkBox', 'by_name') # box.props.margin_top = 2 # box.props.margin_bottom = 0 # box.props.margin_left = 5 context = box.get_style_context() context.add_class('linked') # parent = box.get_parent() # parent.remove(box) # parent_toolbar = toolbar.get_parent() # parent_toolbar.remove(toolbar) # display_tree.attach(box, 0, 10, 1 ,1 ) # child, new-parent, old-parent # self._moved_controls.append((box, display_tree, parent)) # self._moved_controls.append((toolbar, None, parent_toolbar)) # find the actual GtkTreeView in the RBDisplayTree and remove it self.rbtree = self.find(display_tree, 'GtkTreeView', 'by_name') self.rbtreeparent = self.rbtree.get_parent() self.rbtreeparent.remove(self.rbtree) self.sidebar = None def post_initialise(self): super(AltToolbarShared, self).post_initialise() cl = CoverLocale() cl.switch_locale(cl.Locale.LOCALE_DOMAIN) self.volume_button.props.value = \ self.shell.props.shell_player.props.volume self.volume_button.bind_property("value", self.shell.props.shell_player, "volume", Gio.SettingsBindFlags.DEFAULT) self.volume_button.set_visible(self.plugin.volume_control) self.volume_button.set_relief(Gtk.ReliefStyle.NORMAL) child = self.volume_button.get_child() child.set_margin_left(5) child.set_margin_right(5) if self.plugin.inline_label: self.song_box.remove(self.song_button_label) if self.plugin.compact_progressbar: self.song_progress = SmallProgressBar() else: self.song_progress = SmallScale() self.song_progress.set_sensitive(False) self.song_progress.connect('control', self._sh_progress_control) self.song_progress.show_all() self.song_progress_box.pack_start(self.song_progress, False, True, 1) # Bring Builtin Actions to plugin for (a, b) in ((self.play_button, "play"), (self.prev_button, "play-previous"), (self.next_button, "play-next"), (self.repeat_toggle, "play-repeat"), (self.shuffle_toggle, "play-shuffle")): a.set_action_name("app." + b) if b == "play-repeat" or b == "play-shuffle": # for some distros you need to set the target_value # for others this would actually disable the action # so work around this by testing if the action is disabled # then reset the action a.set_action_target_value(GLib.Variant("b", True)) print(a.get_sensitive()) if not a.get_sensitive(): a.set_detailed_action_name("app." + b) # The Play-Repeat button is subject to the plugins Repeat All/one song # capability self._repeat = Repeat(self.shell, self.repeat_toggle) if gtk_version() >= 3.12: self.cover_popover = Gtk.Popover.new(self.album_cover) image = Gtk.Image.new() self.cover_popover.add(image) self._popover_inprogress = 0 self.cover_popover.set_modal(False) self.cover_popover.connect('leave-notify-event', self._on_cover_popover_mouse_over) self.cover_popover.connect('enter-notify-event', self._on_cover_popover_mouse_over) # detect when mouse moves out of the cover image # (it has a parent eventbox) box = self.album_cover_eventbox box.connect('leave-notify-event', self._on_cover_popover_mouse_over) box.connect('enter-notify-event', self._on_cover_popover_mouse_over) cl.switch_locale(cl.Locale.RB) def on_startup(self, *args): super(AltToolbarShared, self).on_startup(*args) if self.plugin.enhanced_sidebar: self.sidebar = AltToolbarSidebar(self, self.rbtree) self.sidebar.show_all() self.rbtreeparent.add(self.sidebar) else: self.rbtreeparent.add(self.rbtree) # self.shell.add_widget(self.rbtree, RB.ShellUILocation.SIDEBAR, # expand=True, fill=True) def register_moved_control(self, child, old_parent, new_parent=None): """ convenience function to save the GTK child & parents when they are moved. we use this info to cleanup when quitting RB - we need to move stuff back because otherwise there are random crashes due to memory deallocation issues :param child: GTK Widget :param old_parent: original GTK container that the child was moved from :param new_parent: new GTK container that the child was added to (may just have removed without moving) :return: """ # store as a tuple: child, new-parent, old-parent self._moved_controls.append((child, new_parent, old_parent)) def cleanup(self): """ extend :return: """ super(AltToolbarShared, self).cleanup() if self.sidebar: self.sidebar.cleanup() self.display_tree_parent.remove(self.stack) self.display_tree_parent.pack1(self.shell.props.display_page_tree) if self.sidebar: self.rbtreeparent.remove(self.sidebar) # remove our sidebar self.rbtreeparent.add(self.rbtree) # add the original GtkTree view print("####") # child, new-parent, old-parent for child, new_parent, old_parent in reversed(self._moved_controls): if new_parent: new_parent.remove(child) print(child) print(new_parent) print(old_parent) if isinstance(old_parent, Gtk.Grid): print("attaching to grid") old_parent.attach(child, 0, 0, 1, 1) else: print("adding to parent") old_parent.add(child) def add_controller(self, controller): """ register a new controller """ if not controller in self._controllers: self._controllers[controller] = controller def is_controlled(self, source): """ determine if the source has a controller return bool, controller if no specific controller (False) then the generic controller returned """ if source in self._controllers: return True, self._controllers[source] # loop through controllers to find one that is most applicable for controller_type in self._controllers: if self._controllers[controller_type].valid_source(source): return True, self._controllers[controller_type] return False, self._controllers['generic'] def show_cover_tooltip(self, tooltip): if (self.cover_pixbuf is not None): scale = self.cover_pixbuf.scale_simple(300, 300, GdkPixbuf.InterpType.HYPER) if gtk_version() >= 3.12: if self.cover_popover.get_visible(): return False image = self.cover_popover.get_child() image.set_from_pixbuf(scale) self.cover_popover.show_all() else: tooltip.set_icon(scale) return True else: return False def _on_cover_popover_mouse_over(self, widget, eventcrossing): if eventcrossing.type == Gdk.EventType.ENTER_NOTIFY: if self._popover_inprogress == 0: self._popover_inprogress = 1 else: self._popover_inprogress = 2 self._popover_inprogress_count = 0 print("enter") else: print("exit") self._popover_inprogress = 3 # print (eventcrossing.type) def delayed(*args): if self._popover_inprogress == 3: self._popover_inprogress_count += 1 if self._popover_inprogress_count < 5: return True self.cover_popover.hide() self._popover_inprogress = 0 return False else: return True if self._popover_inprogress == 1: print("addding timeout") self._popover_inprogress = 2 GLib.timeout_add(100, delayed) def show_slider(self, visibility): self.song_box.set_visible(visibility) def enable_slider(self, toggle): self.song_progress.set_sensitive(toggle) def display_song(self, entry): self.entry = entry self.cover_pixbuf = None self.album_cover.clear() if self.plugin.inline_label: ret = self._inline_progress_label(entry) else: ret = self._combined_progress_label(entry) if ret: key = entry.create_ext_db_key(RB.RhythmDBPropType.ALBUM) self.album_art_db.request(key, self.display_song_album_art_callback, entry) def _inline_progress_label(self, entry): if (entry is None): # self.song_button_label.set_text("") self.inline_box.set_visible(False) return False self.inline_box.set_visible(True) db = self.shell.props.db stream_title = \ db.entry_request_extra_metadata(entry, RB.RHYTHMDB_PROP_STREAM_SONG_TITLE) stream_artist = \ db.entry_request_extra_metadata(entry, RB.RHYTHMDB_PROP_STREAM_SONG_ARTIST) def set_labels(title, artist): for child in self.inline_box: self.inline_box.remove(child) self.song_title = Gtk.Label() self.song_title.set_markup(title) self.song_title.set_ellipsize(Pango.EllipsizeMode.END) self.song_title.show() self.inline_box.pack_start(self.song_title, False, True, 0) print(artist) if artist != "" or artist: print("adding artist") self.song_artist = Gtk.Label() self.song_artist.set_markup(artist) self.song_artist.set_ellipsize(Pango.EllipsizeMode.END) self.song_artist.show() self.inline_box.pack_start(self.song_artist, False, True, 1) if stream_title: print("stream_title") if stream_artist: artist_markup = "{artist}".format( artist=GLib.markup_escape_text(stream_artist)) else: artist_markup = "" title_markup = "{title}".format( title=GLib.markup_escape_text(stream_title)) set_labels(title_markup, artist_markup) return True album = entry.get_string(RB.RhythmDBPropType.ALBUM) if not album or album == "": print("album") title_markup = "{title}".format( title=GLib.markup_escape_text( entry.get_string(RB.RhythmDBPropType.TITLE))) artist = entry.get_string(RB.RhythmDBPropType.ARTIST) if artist and artist != "": artist_markup = "{artist}".format( artist=GLib.markup_escape_text( entry.get_string(RB.RhythmDBPropType.ARTIST))) else: artist_markup = "" set_labels(title_markup, artist_markup) return True if self.plugin.playing_label: print("playing_label") year = entry.get_ulong(RB.RhythmDBPropType.DATE) if year == 0: year = date.today().year else: year = datetime.fromordinal(year).year title_markup = "{album}".format( album=GLib.markup_escape_text( entry.get_string(RB.RhythmDBPropType.ALBUM))) artist_markup = "{genre} - {year}".format( genre=GLib.markup_escape_text( entry.get_string(RB.RhythmDBPropType.GENRE)), year=GLib.markup_escape_text(str(year))) set_labels(title_markup, artist_markup) else: print("not playing_label") title_markup = "{title}".format( title=GLib.markup_escape_text( entry.get_string(RB.RhythmDBPropType.TITLE))) artist_markup = "{artist}".format( artist=GLib.markup_escape_text( entry.get_string(RB.RhythmDBPropType.ARTIST))) set_labels(title_markup, artist_markup) return True def _combined_progress_label(self, entry): """ utility function to calculate the label to be used when a progress bar has the label above it :param RBEntry """ if (entry is None): self.song_button_label.set_label("") return False db = self.shell.props.db stream_title = \ db.entry_request_extra_metadata(entry, RB.RHYTHMDB_PROP_STREAM_SONG_TITLE) stream_artist = \ db.entry_request_extra_metadata(entry, RB.RHYTHMDB_PROP_STREAM_SONG_ARTIST) if stream_title: if stream_artist: markup = "{title} {artist}".format( title=GLib.markup_escape_text(stream_title), artist=GLib.markup_escape_text(stream_artist)) else: markup = "{title}".format( title=GLib.markup_escape_text(stream_title)) self.song_button_label.set_markup(markup) return True album = entry.get_string(RB.RhythmDBPropType.ALBUM) if not album or album == "": self.song_button_label.set_markup( "{title}".format( title=GLib.markup_escape_text( entry.get_string(RB.RhythmDBPropType.TITLE)))) return True if self.plugin.playing_label: year = entry.get_ulong(RB.RhythmDBPropType.DATE) if year == 0: year = date.today().year else: year = datetime.fromordinal(year).year self.song_button_label.set_markup( "{album} - {genre} - {year}".format( album=GLib.markup_escape_text( entry.get_string(RB.RhythmDBPropType.ALBUM)), genre=GLib.markup_escape_text( entry.get_string(RB.RhythmDBPropType.GENRE)), year=GLib.markup_escape_text(str(year)))) else: self.song_button_label.set_markup( "{title} {album} - {artist}".format( title=GLib.markup_escape_text( entry.get_string(RB.RhythmDBPropType.TITLE)), album=GLib.markup_escape_text( entry.get_string(RB.RhythmDBPropType.ALBUM)), artist=GLib.markup_escape_text( entry.get_string(RB.RhythmDBPropType.ARTIST)))) return True def display_song_album_art_callback(self, *args): # key, filename, data, entry): """ RBExtDB signal callback to display the album-art """ # rhythmbox 3.2 breaks the API - need to find the parameter with the # pixbuf data = None for data in args: if isinstance(data, GdkPixbuf.Pixbuf): break if ((data is not None) and (isinstance(data, GdkPixbuf.Pixbuf))): self.cover_pixbuf = data scale_cover = \ self.cover_pixbuf.scale_simple(34, 34, GdkPixbuf.InterpType.HYPER) self.album_cover.set_from_pixbuf(scale_cover) else: self.cover_pixbuf = None self.album_cover.clear() self.album_cover.trigger_tooltip_query() def show_cover(self, visibility): self.album_cover.set_visible(self.plugin.show_album_art) def show_small_bar(self): self.small_bar.show_all() self.inline_box.set_visible(False) def request_rtl_icon(self, control, icon_name): rtl_name = {} rtl_name["media-playback-start-symbolic"] = \ "media-playback-start-rtl-symbolic" rtl_name["media-skip-forward-symbolic"] = \ "media-skip-forward-rtl-symbolic" rtl_name["media-skip-backward-symbolic"] = \ "media-skip-backward-rtl-symbolic" name = icon_name if gtk_version() < 3.12: if control.get_direction() == Gtk.TextDirection.RTL: name = rtl_name[icon_name] return name def play_control_change(self, player, playing): image = self.play_button.get_child() if (playing): if player.get_active_source().can_pause(): icon_name = "media-playback-pause-symbolic" else: icon_name = "media-playback-stop-symbolic" else: icon_name = self.request_rtl_icon(self.play_button, "media-playback-start-symbolic") image.set_from_icon_name(icon_name, image.props.icon_size) # Builder related utility functions... #################################### def load_builder_content(self, builder): if (not hasattr(self, "__builder_obj_names")): self.__builder_obj_names = list() for obj in builder.get_objects(): if (isinstance(obj, Gtk.Buildable)): name = Gtk.Buildable.get_name(obj).replace(' ', '_') self.__dict__[name] = obj self.__builder_obj_names.append(name) if not self.plugin.show_tooltips and obj.get_has_tooltip(): if not name in self._tooltip_exceptions: obj.set_has_tooltip(False) def connect_builder_content(self, builder): builder.connect_signals_full(self.connect_builder_content_func, self) def connect_builder_content_func(self, builder, object, sig_name, handler_name, conn_object, flags, target): handler = None h_name_internal = "_sh_" + handler_name.replace(" ", "_") if (hasattr(target, h_name_internal)): handler = getattr(target, h_name_internal) else: handler = eval(handler_name) object.connect(sig_name, handler) def purge_builder_content(self): for name in self.__builder_obj_names: o = self.__dict__[name] if (isinstance(o, Gtk.Widget)): o.destroy() del self.__dict__[name] del self.__builder_obj_names # Signal Handlers # ########################################################## def _sh_progress_control(self, progress, fraction): # if not hasattr(self, 'song_duration'): # return if (self.plugin.song_duration != 0): player = self.shell.props.shell_player player.set_playing_time(self.plugin.song_duration * fraction) def _sh_bigger_cover(self, cover, x, y, key, tooltip): return self.show_cover_tooltip(tooltip) class AltToolbarCompact(AltToolbarShared): """ compact RB toolbar """ __gtype_name = 'AltToolbarCompact' def __init__(self): """ Initialises the object. """ super(AltToolbarCompact, self).__init__() def initialise(self, plugin): super(AltToolbarCompact, self).initialise(plugin) self._setup_compactbar() def on_startup(self, *args): super(AltToolbarCompact, self).on_startup(*args) self.setup_completed = True def _setup_compactbar(self): # self.window_control_item.add(self._window_controls()) action = self.plugin.toggle_action_group.get_action('ToggleToolbar') self.small_bar.get_style_context().add_class( Gtk.STYLE_CLASS_PRIMARY_TOOLBAR) # add settings menu depending if there is no applications menu # available # appshell = ApplicationShell(self.shell) menu = self.shell.props.application.get_menubar() if not menu: menu_button = Gtk.MenuButton.new() if gtk_version() >= 3.14: symbol = "open-menu-symbolic" menu_button.set_margin_start(3) else: symbol = "emblem-system-symbolic" menu_button.set_margin_left(3) image = Gtk.Image.new_from_icon_name(symbol, Gtk.IconSize.SMALL_TOOLBAR) menu_button.add(image) menu = self.shell.props.application.get_shared_menu('app-menu') menu_button.set_menu_model(menu) self.end_box.add(menu_button) if not self.plugin.start_hidden: self.shell.add_widget(self.small_bar, RB.ShellUILocation.MAIN_TOP, expand=False, fill=False) self.show_small_bar() action.set_active(True) print("not hidden but compact") else: action.set_active(False) self.plugin.rb_toolbar.hide() def get_custom_box(self): return self.end_box def set_visible(self, visible): if visible: print("show_compact") self.shell.add_widget(self.small_bar, RB.ShellUILocation.MAIN_TOP, expand=False, fill=False) self.show_small_bar() self.volume_button.set_visible(self.plugin.volume_control) else: print("hide compact") self.shell.remove_widget(self.small_bar, RB.ShellUILocation.MAIN_TOP) class AltToolbarHeaderBar(AltToolbarShared): """ headerbar RB toolbar """ __gtype_name = 'AltToolbarHeaderBar' __gsignals__ = { 'song-category-clicked': (GObject.SIGNAL_RUN_LAST, None, (bool,)) } # song-category-clicked signal emitted when song-categoy buttons clicked - # param True if Song clicked def __init__(self): """ Initialises the object. """ super(AltToolbarHeaderBar, self).__init__() self.sources = {} self.searchbar = None self.source_toolbar_visible = False # override - for headerbars source # toolbar is not visible self._always_visible_sources = {} def initialise(self, plugin): super(AltToolbarHeaderBar, self).initialise(plugin) self.main_window = self.shell.props.window self._setup_playbar() self._setup_headerbar() # hook the key-press for the application window self.shell.props.window.connect("key-press-event", self._on_key_press) def add_always_visible_source(self, source): """ remember which sources always have the song-category buttons enabled """ self._always_visible_sources[source] = source def _on_key_press(self, widget, event): keyname = Gdk.keyval_name(event.keyval) if keyname == 'Escape' and self.current_search_button: self.current_search_button.set_active(False) if event.state and Gdk.ModifierType.CONTROL_MASK: if keyname == 'f' and self.current_search_button: self.current_search_button.set_active(True) def on_startup(self, *args): super(AltToolbarHeaderBar, self).on_startup(*args) if self.shell.props.selected_page.props.show_browser: self.library_browser_radiobutton.set_active(True) self.library_radiobutton_toggled(None) self.library_browser_radiobutton.connect('toggled', self.library_radiobutton_toggled) self.library_song_radiobutton.connect('toggled', self.library_radiobutton_toggled) self._set_toolbar_controller() self.setup_completed = True def _setup_playbar(self): """ setup the play controls at the bottom part of the application """ box = self.find(self.shell.props.window, 'GtkBox', 'by_name') frame_box = Gtk.Box() frame_box.set_orientation(Gtk.Orientation.VERTICAL) self.small_frame = Gtk.Frame() self.small_frame.set_shadow_type(Gtk.ShadowType.ETCHED_IN) frame_box.pack_start(self.small_frame, False, True, 0) frame_box.pack_start(self.small_bar, False, True, 1) box.pack_start(frame_box, False, True, 0) box.reorder_child(frame_box, 3) frame_box.show_all() self.show_small_bar() # hide status bar action = self.plugin.appshell.lookup_action('', 'statusbar-visible', 'win') action.set_active(True) def search_button_toggled(self, search_button): print("search_button_toggled") print(search_button.get_active()) def delay_hide(*args): # we use a delay to allow the searchbar minimise effect to be # visible self.searchbar.set_visible(False) if search_button.get_active(): self.searchbar.set_visible(True) else: GLib.timeout_add(350, delay_hide) self.searchbar.set_search_mode(search_button.get_active()) def set_library_labels(self, song_label=None, category_label=None): # locale stuff cl = CoverLocale() cl.switch_locale(cl.Locale.LOCALE_DOMAIN) if not song_label: self.library_song_radiobutton.set_label(_('Songs')) else: self.library_song_radiobutton.set_label(song_label) if not category_label: self.library_browser_radiobutton.set_label(_('Categories')) else: self.library_browser_radiobutton.set_label(category_label) cl.switch_locale(cl.Locale.RB) def library_radiobutton_toggled(self, toggle_button): print("library_radiobutton_toggled") if not self.setup_completed: return self.set_library_labels() if toggle_button: self.emit('song-category-clicked', self.library_song_radiobutton.get_active()) self._resize_source(self.shell.props.selected_page) val, button = self.is_browser_view(self.shell.props.selected_page) if not val: return val = True if self.library_song_radiobutton.get_active(): print("song active") val = False self.shell.props.selected_page.props.show_browser = val def has_button_with_label(self, source, label): """ returns bool, button where the button has a given label """ if not source: return False, None toolbar = self.find(source, 'RBSourceToolbar', 'by_name') if not toolbar: return False, None ret = self.find(toolbar, 'GtkToggleButton', 'by_name', label) if ret: return True, ret ret = self.find(toolbar, 'GtkButton', 'by_name', label) if ret: return True, ret ret = self.find(toolbar, 'GtkMenuButton', 'by_name', label) if ret: return True, ret return False, None def is_browser_view(self, source): """ returns bool, browser-button where this is a browser-view i.e. assume if there is a browser button this makes it a browser-view """ return self.has_button_with_label(source, _("Browse")) def get_custom_box(self): return self.start_box def _setup_headerbar(self): cl = CoverLocale() # define the main buttons for the headerbar builder = Gtk.Builder() ui = rb.find_plugin_file(self.plugin, 'ui/altlibrary.ui') builder.set_translation_domain(cl.Locale.LOCALE_DOMAIN) builder.add_from_file(ui) self.load_builder_content(builder) view_name = _("Categories") self.library_browser_radiobutton.set_label(view_name) default = Gtk.Settings.get_default() self.headerbar = Gtk.HeaderBar.new() self.headerbar.set_show_close_button(True) self.main_window.set_titlebar(self.headerbar) # this is needed for gnome-shell to replace the decoration self.main_window.set_show_menubar(False) self.plugin.rb_toolbar.hide() self.start_box = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, 0) # left side box self.headerbar.pack_start(self.start_box) self.headerbar.set_custom_title(self.library_box) self._end_box_controls = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, 0) # right side box self.end_box = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, 0) # any source defined controls self._end_box_controls.add(self.end_box) if (not default.props.gtk_shell_shows_app_menu) or \ default.props.gtk_shell_shows_menubar: # for environments that dont support app-menus menu_button = Gtk.MenuButton.new() # menu_button.set_relief(Gtk.ReliefStyle.NONE) if gtk_version() >= 3.14: symbol = "open-menu-symbolic" menu_button.set_margin_start(3) else: symbol = "emblem-system-symbolic" menu_button.set_margin_left(3) image = Gtk.Image.new_from_icon_name(symbol, Gtk.IconSize.SMALL_TOOLBAR) menu_button.add(image) menu = self.shell.props.application.get_shared_menu('app-menu') menu_button.set_menu_model(menu) self._end_box_controls.add(menu_button) self.headerbar.pack_end(self._end_box_controls) self.headerbar.show_all() self.set_library_labels() action = self.plugin.toggle_action_group.get_action('ToggleToolbar') if not self.plugin.start_hidden: action.set_active(True) print("not hidden") else: action.set_active(False) self.set_visible(False) def _resize_source(self, page): if page: child = self.find(page, 'GtkGrid', "by_name") # hard-coded test for sources where grid is this value if child and child.props.margin_top == 6: child.props.margin_top = 0 def reset_toolbar(self, page): print(page) super(AltToolbarHeaderBar, self).reset_toolbar(page) self.library_radiobutton_toggled(None) self._set_toolbar_controller() self._resize_source(page) ret, controller = self.is_controlled(page) controller.set_library_labels() def _set_toolbar_controller(self): ret_generic_bool, generic_controller = self.is_controlled('generic') if not ret_generic_bool: return if not self.shell.props.selected_page in self.sources: ret_bool, controller = \ self.is_controlled(self.shell.props.selected_page) self.sources[self.shell.props.selected_page] = controller current_controller = self.sources[self.shell.props.selected_page] current_controller.update_controls(self.shell.props.selected_page) def set_visible(self, visible): self.small_bar.set_visible(visible) def set_library_box_sensitive(self, sensitivity): sensitive = sensitivity if self.shell.props.selected_page in self._always_visible_sources: sensitive = True self.library_box.set_sensitive(sensitive) alternative-toolbar-0.16.3/alttoolbar_widget.py000066400000000000000000000123361264666532500216630ustar00rootroot00000000000000# -*- Mode: python; coding: utf-8; tab-width: 4; indent-tabs-mode: nil; -*- # # Copyright (C) 2015 - fossfreedom # # 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, 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. import math from gi.repository import GObject from gi.repository import Gdk from gi.repository import Gtk # ############################################################################# # Custom Widgets # ############################################################## class SmallProgressBar(Gtk.DrawingArea): __gsignals__ = { "control": (GObject.SIGNAL_RUN_LAST, None, (float,)) } @GObject.Property def progress(self): return self.__progress__ @progress.setter def progress(self, value): self.__progress__ = value self.queue_draw() def __init__(self): super(SmallProgressBar, self).__init__() print("############") self.add_events(Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.BUTTON_RELEASE_MASK) self.button_pressed = False self.button_time = 0 self.__progress__ = 0 self.set_hexpand(True) self.props.height_request = 5 self.props.margin_bottom = 2 self.set_size_request(250, -1) def do_draw(self, cc): alloc = self.get_allocation() sc = self.get_style_context() fgc = sc.get_background_color(Gtk.StateFlags.SELECTED) # self.get_state_flags() ) bgc = sc.get_color(Gtk.StateFlags.NORMAL) # self.get_state_flags() ) cc.set_source_rgba(bgc.red, bgc.green, bgc.blue, bgc.alpha) print(alloc.height) offset = int(alloc.height / 2) print(offset) cc.rectangle(0, offset, alloc.width, 2) cc.fill() cc.set_source_rgba(fgc.red, fgc.green, fgc.blue, fgc.alpha) cc.rectangle(0, offset, alloc.width * self.progress, 2) cc.fill() if self.progress != 0: cc.set_line_width(1) cc.set_source_rgba(bgc.red, bgc.green, bgc.blue, bgc.alpha) cc.translate((alloc.width * self.progress), offset + 1) print(self.progress) cc.arc(0, 0, 4, 0, 2 * math.pi) cc.stroke_preserve() cc.fill() def do_motion_notify_event(self, event): if (self.button_pressed): self.control_by_event(event) return True else: return False def do_button_press_event(self, event): self.button_pressed = True self.control_by_event(event) return True def do_button_release_event(self, event): self.button_pressed = False self.control_by_event(event) return True def control_by_event(self, event): allocw = self.get_allocated_width() fraction = event.x / allocw if (self.button_time + 100 < event.time): self.button_time = event.time self.emit("control", fraction) class SmallScale(Gtk.Scale): __gsignals__ = { 'control': (GObject.SIGNAL_RUN_LAST, None, (float,)) } def __init__(self): super(SmallScale, self).__init__() self.__progress__ = 0 self.set_orientation(Gtk.Orientation.HORIZONTAL) self._adjustment = Gtk.Adjustment(0, 0, 1, 0.01, 0.1, 0) self.set_adjustment(self._adjustment) self.set_hexpand(True) self.set_draw_value(False) self.button_pressed = False self.button_time = 0 self.connect('button-press-event', self._button_press_event) self.connect('button-release-event', self._button_release_event) self.connect('motion-notify-event', self._motion_notify_event) self.set_size_request(250, -1) @GObject.Property def progress(self): return self.__progress__ @progress.setter def progress(self, value): self.__progress__ = value self.set_value(value) def _motion_notify_event(self, widget, event): if (self.button_pressed): self.control_by_event(event) return True else: return False def _button_press_event(self, widget, event): self.button_pressed = True self.control_by_event(event) return False def _button_release_event(self, widget, event): self.button_pressed = False self.control_by_event(event) return False def control_by_event(self, event): if (self.button_time + 100 < event.time): allocw = self.get_allocated_width() fraction = event.x / allocw self.button_time = event.time self.emit("control", fraction) alternative-toolbar-0.16.3/autogen.sh000077500000000000000000000007411264666532500176010ustar00rootroot00000000000000#!/bin/sh # Run this to generate all the initial makefiles, etc. srcdir=`dirname $0` test -n "$srcdir" || srcdir=`dirname "$0"` test -n "$srcdir" || srcdir=. PKG_NAME="alternative-toolbar" prevdir="$PWD" cd "$srcdir" intltoolize --force AUTORECONF=`which autoreconf` if test -z $AUTORECONF; then echo "*** No autoreconf found, please install it ***" exit 1 else autoreconf --force --install || exit $? fi cd "$prevdir" test -n "$NOCONFIGURE" || "$srcdir/configure" "$@" alternative-toolbar-0.16.3/configure.ac000066400000000000000000000023111264666532500200610ustar00rootroot00000000000000AC_INIT([alternative-toolbar], 0.16.3, [foss.freedom@gmail.com], [alternative-toolbar], [https://github.com/fossfreedom/alternative-toolbar]) AM_INIT_AUTOMAKE([-Wno-portability no-dist-gzip dist-xz foreign subdir-objects]) AC_PREFIX_DEFAULT(/usr/local) AM_SILENT_RULES([yes]) AC_CONFIG_MACRO_DIR([m4]) GLIB_GSETTINGS AC_CONFIG_FILES([Makefile po/Makefile.in]) IT_PROG_INTLTOOL([0.50.0]) GETTEXT_PACKAGE=alternative-toolbar AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [The prefix for gettext translation domains.]) AM_GLIB_GNU_GETTEXT # Pythonic checks AM_PATH_PYTHON([3.2]) AC_PYTHON_GI_MODULE(GObject, 2.0) AC_PYTHON_GI_MODULE(Gtk, 3.0) AC_PYTHON_GI_MODULE(Gio, 2.0) AC_PYTHON_GI_MODULE(RB, 3.0) AC_PYTHON_GI_MODULE(Pango, 1.0) AC_PYTHON_GI_MODULE(Peas, 1.0) AC_PYTHON_GI_MODULE(PeasGtk, 1.0) AC_OUTPUT AC_MSG_RESULT([ alternative-toolbar $VERSION ======== prefix: ${prefix} libdir: ${libdir} sysconfdir: ${sysconfdir} exec_prefix: ${exec_prefix} bindir: ${bindir} datarootdir: ${datarootdir} ]) alternative-toolbar-0.16.3/img/000077500000000000000000000000001264666532500163525ustar00rootroot00000000000000alternative-toolbar-0.16.3/img/audio-radio-symbolic.svg000066400000000000000000000057161264666532500231200ustar00rootroot00000000000000 image/svg+xml alternative-toolbar-0.16.3/img/audio-x-playlist-automatic-symbolic.svg000066400000000000000000000070311264666532500261040ustar00rootroot00000000000000 image/svg+xml alternative-toolbar-0.16.3/img/audio-x-playlist-recently-added-symbolic.svg000066400000000000000000000061421264666532500270040ustar00rootroot00000000000000 image/svg+xml alternative-toolbar-0.16.3/img/audio-x-playlist-recently-played-symbolic.svg000066400000000000000000000057271264666532500272310ustar00rootroot00000000000000 image/svg+xml alternative-toolbar-0.16.3/img/audio-x-playlist-symbolic.svg000066400000000000000000000063201264666532500241200ustar00rootroot00000000000000 image/svg+xml alternative-toolbar-0.16.3/img/audio-x-queue-symbolic.svg000066400000000000000000000053231264666532500234050ustar00rootroot00000000000000 image/svg+xml alternative-toolbar-0.16.3/img/lastfm-symbolic.svg000066400000000000000000003131131264666532500222020ustar00rootroot00000000000000 image/svg+xmlalternative-toolbar-0.16.3/img/librefm-symbolic.svg000066400000000000000000000166441264666532500223450ustar00rootroot00000000000000 image/svg+xml Gnome Symbolic Icon Theme Gnome Symbolic Icon Theme alternative-toolbar-0.16.3/img/rb-symbolic-icons.tar.gz000066400000000000000000000247521264666532500230460ustar00rootroot000000000000004U[s㶲_<(-Ѹ_lX]dZoWlZWwr6ϗ|ķYËd|^_\]/gy^s1.r'2/'777L{ĉCsuw66=*`|N mqNW +_g"Uy"_N|l3]Z ѼX]@eOL'O0H>Og=?&џuk:9A7Dxd3@& W1BPcv?~<>rG 3.kHC~2>)GOMNf\6bE9;ϧol3VN:]ϊTgV8݈6;b=ky'8!e\YﻏtBE*еT\^z]Ίh,\.a5_O'ESB=yuEOIyso HVۋczn3]]]}*o+g_ڗ-S^c`\KDܶ{26A1 ޯ0GK1 Ԧ!`W,#qyD9 a\Dy`ųm'Ӎ0A,w3(#pEdx5{譌-qpTUpU᪮FOVU˼\,r9B4^5sʍQV*-8%T\^TϬ(cU8pȥaJbi@xVprg2s98g'67kF70\*ϽWLH%Ux"g,^9o9H gcd͙CR1 1 <@&FeHg x*¥S[xN!R Ȥ$VC@r GX->(U⃀b%⃀,54e05Ha&g84Q0ms MbW0\a$J qxPAS>X8hP(XAT+8 B DAm}Xx8`9 .赂8q500~Ck&!3M<BgfiL$0@8PZH DA :4(C 8`aN1/$% 'DU^zIBz{"Q3G;P0cl p\eUfc*{xej{xvς]z]z:~%e?,BrۆUY$5'hKE2$s+:1|sH]^  MZ5wx3}߭J؈="@DAq %tNa=sSl)P0L| EBic^0XPpXb`=nA3TCw! 6J%4ZTP aPUF81q>9uW2cᦸ!j[3@?)-ʭCy5s#@heU. 9JYnfrk}Z*&h~)ll~8R#yBR^N2*klel:3سHyC]/L4VHwM4öO7fր~LB'%q e"@4-D744iNtm8a(< G[a+$k\?G ֓l=!.ro' v?54Sz<9DbMZf"s<2F;<N!,1Aoت#0=;|xO}H15!M5lFH^nHh}y֕fb=.uih\~p>\SX;K.gh\@Q~MIP~u9<Й]P21HuQcax݊&d>ڶU#larz9]tg궺8 bEP@n-YկQѓƶWS5#ؗzΆۺ`o7@9|ZQ,Co:g$M+tĂ λ6JV#]F;aVX kƵIw z[n=Ant  Zq#^XP`( :7{QRN`e%J`^(J46^@v0-7ٍé&~0>AY_jA6e\oCE-1*~Zs>M=< Q'rDBt[LS"Tkcwy$~(B[1E:>1g[Pw{% DZK8r z.D`"q1f!h9-;q7DNRǟuqQNݧ,܍f)Z!b%("@ bfz],qbAÝ܏ Lqmg廋Y9cx,/AKBet}f9]C)CBcOKYj}pNy^Ka`Z=s}yAËDr19k( |:; dnX1 wU0cCC$W0B% XskQ}δ^T'PʉPUT \.E&BDåKYpT0~UyCz+zFlu|b?^w]@u 9tWH"Wa_r- WC.ZVJVo_zVEWmˌND!VJ jiA*Ҥc;JCv+FwZ9d \v!{躁iqz-GВmLt3ؽw d u0_ [<puw;3\Җd#KdE#EmCB! 6wCxIra1r3ZWwb%kq$:zWp,gx$}"\ Hޏ?~޼߼z!nEN~ yg"ܹWBe}O4K|I)Ƌ5>Z%wjHkvl?X݅]ݷ]1K\ 2 -~ Ɍ<8.%;SsU.fA=KD4b`&V\eYLJV}3nHה~2aZ5i|k#hǶbu-,gYY"D8 ~coc3N9єQ!g [Oi hJBJM0DcPq;>7Q"96^C-NI'(*.L1bEP40G VY,&J/vJV(ONRX 1vW" Qژ|l[HcQCEKz*d .ev$N>,[= %PHټ CiC$g) B¡1c("O콦ᗎB:FHXjz=Cs2L[pHk6Ѵ`$[Q!k%IddTsA%ӜL0H~akzI<4}%E6n'CgIDXvIL'ӝbZdZ>1NLwisi;10<Ӊ1i!;1Ӈmd`;1Ӈmd. !}DNns "q`fr+<Dۗ4?4+-\}rEtDǡ[lݽ W]]ɟk3H*ѯ8p| C*v:a$FQiz;UkwvrPxQ=_y/U]5u{f5Pͯö!(!Ox۱9O']Feƥ\' .#lamBow}M\*O{{6 ==!?6 =% "ަGxBo xBۢ[Boot~O'ďFMC>o xB-!Owq| xwos>o xBۢ[B1?6%=%3ަGxb<1a[b[b<10mn1-1OwqfsoxbÌܢ[b<10m6O';x-xēL"<~4Ͳ߸Ϊ?Am OxxoSԣ[b<10㭾1-1OwqxoExb<1aln-1Ow6[K'F &N = )ïgmo^<>}n@C-dQp7}^9I|b<1)[b<1.mZzO'ƻʸ`1-1Ow6ǘ-1Ow6[O'ƻxͭr~Kis{)$7r(suQ&ȵymKns/ ċ7BcPVf v_7Vn7ՍVGC;{bMwe:;rgnD;z~z Ә`h~{M13l^<㼧?qy6 0$on30Ay~74nT+a9oh nc^pc]"DګH46ofP>h?$>F$KDbE4{;@7l9@ (L#"Zjᨀz;DU|4}$B0"nKDw}5>lhBH@;Dt"…l!U o9DaXâ5t;FCЍѵ$2|Y&k,S`aF29%_d^«LE,Cg&KsaAEiYr<3ڤ'z`~fӝZ! ekS Z.T!ӏ8읅m*\ S]N1e* {K3);cI}0u-3\fV f$ S!FJT7% h>d ?bR`3L4 , #P4E rgFT  $$AA_X<a`A qkhU1hjj *d/&&wY AwV~HI8ӝBʰpg " s#! S4Eߐ0(2 t!*sc7+uAüDaWS30ىq]YӼQVJ N GX Bǥ{QJ=aAqX a@/ȥz//qZ܇YqZ|.d.,ay5Ow<>Ybc5]r(r9_/?K#~eoսk>뻫bu2Lj6MWn8Lpu7(gqc}\ of+%+!a&c_˻j=ZBSenPuz,\,Wrqփժq9..zz2ZLFr/>|&.bu:>W''WY^./O&bVaN`8m7b~.|^.VbVc&{O8Mr\GGM \69tRu*"_q+E>D6&V1ՂSk$0+X*N֟`yZ58-'!S1s8^Tr-:r:)زʀ B|Kh2Z6[I#<0ZO~<>rF PGOAt>,phdm}]agdr9)Uk')n01_X( bfWStR4%sWWԘ47g=q?fa5{P7mJ A\Fh\ w\A) 5ޠ z?=<uX J>o0HL 3dЃ+U Ej!6DsRAw] y IKkfc@=G)/4~1$C陂2-k+.P%[lͣMe2a+@-YD U0a\2fjAibBIae-8u@'8(8+P(1/q`X{wB$w i3Hk XqG$҈"E쒵a|b3kpk5p%U[t`ф phBxʙAqݖ4pjݳH(`pvMS3ftk\p#.adk6jg9ŸO4_F+qp`U1^z?7OQɾ?d!?|LGot6"\J6}z/FJez #H9"X~-8zj'q5L{֎g2E_ᬧEky^%ȻA^j1tQ.f{fri:M{s`6(fg_pf{X\.y9)-v%3؈Lt?Tbv:{rop8V6 \*^SzFIt4tL"7(''x>ax6TLC*K6Gq , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-05-24 19:14+0000\n" "Last-Translator: hjvdw \n" "Language-Team: Afrikaans \n" "Language: af\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "Liedjies" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Kategorië" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "Herbegin die toepassing om die veranderinge te sien." #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Nutsbalk:" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "Meer geskik vir werkskerm\n" "omgewings soos Gnome en Elementary." #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "Modern" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "Gebruik kompakte opstelling" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" "Vertoon die terugspeelknoppies in die nutsbalk met 'n meer kompakte styl as " "die standaard rhythmbox styl.\n" "Altyd aan vir die moderne opstelling." #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "Toon:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "Album/styl/jaar van die huidige liedjie" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "Vertoon album/styl/jaar eerder as liedjie-kunstenaar-album. nuttig vir " "werksbladomgewings waar liedjie-kunstenaar-album reeds in die titelbalk " "vertoon word." #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "Nutsbeskrywings vir die terugspeelknoppies" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "Vertoon of verberg die nutsbeskywings vir die terugspeelknoppies" #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "Volume verstelling" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "Vertoon of verberg die volume verstelling" #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Terugspeelknoppies" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "" #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Gebruik:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "" #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "" #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" #: alttoolbar_controller.py:187 msgid "View All" msgstr "" #: alttoolbar_controller.py:343 msgid "Import" msgstr "" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "" #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "" #: alttoolbar_type.py:986 msgid "Browse" msgstr "" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "" alternative-toolbar-0.16.3/po/bg.po000066400000000000000000000255341264666532500171550ustar00rootroot00000000000000# Bulgarian translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-05-22 13:11+0000\n" "Last-Translator: George Karavasilev \n" "Language-Team: Bulgarian \n" "Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "Песни" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Категории" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "Рестартрайте плеъра за прилагане на промените." #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Тулбар:" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "Работещо на добре в\n" "десктоп среди като Гном и Елементари." #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "Модерен" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "Използване на компактни контроли" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" "Показване на контролите за изпълнението на песента в конпактен стил вместо в " "стандартния стил на Ритъмбокс.\n" "Винаги разрешено за модерен тулбар." #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "Показване на:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "Албум/жанр/година за изпълняваната песен" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "Показване на албума/жанра/годината вместо на песен-изпълнител-албум. Полезно " "за тези работни среди където песен-изпълнител-албум е показвано в заглавието " "на прозореца." #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "Подсказки за контролите на изпълнение на песента" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "Показване или скриване на контролите на изпълнение на песента." #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "Сила на звука" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "Показване или скриване на бутонът за силата на звука." #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Контроли за изпъление на песента" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "Показване или скриване на контролите за изпъление на песента." #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Използване на:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "Имена на песен/изпълнител в една колона" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" "Показване на имента за песен и изпълнител в една колона преди слайдера за " "прогрес на песента. Ако не се използва, те се показват на слайдера за " "прогрес на песента." #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "Компактен слайдер за прогрес на песента" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" "Показване и изполване на компактен слайдер з прогрес на песента. Полезно в " "случаите, в които темата която използвате показва прекалено голям слайдер за " "прогрес на песента." #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "Подобрена странична лента" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" "Показване или скриване на подобрена странична лента за плеъра. Тя има " "подобрени символни иконки, по-добра организация на източници и възжможност " "за показване и скриване на категории." #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "Подобрен диалог за приставки" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" "Показване или скриване на подбрен диалог за управление на приставките. Той " "използва превклюватели вместо чекбоски и малък тулбар със символни иконки. " "Работи най-добре с Гноме базирани работни среди." #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "Изпълняване на предишния запис" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "Старт или пауза на изпълнението" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "Изпълняване на следващия запис" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "Повтаряне на текущия запис" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "Изпълняване на записите в случаен ред" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "Превъртане назад" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "Превъртане назад в текущия запис с 5 секунди" #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "Превъртане напред" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "Превъртане напред в текущия запис с 5 секунди" #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "Превъртане назад в текущия запис с 5 секунди" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "Показване или скриване на тулбара с контролите за изпълнение" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "Показване на тулбара с източници" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "Показване или скриване на тулбара с източници" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "Алтернативен Тулбар" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" "Заместване на големият тулбар на Ритъмбокс с CSD или конпактен тулбар, който " "може да бъде скрит" #: alttoolbar_controller.py:187 msgid "View All" msgstr "Преглед на всички" #: alttoolbar_controller.py:343 msgid "Import" msgstr "Внасяне" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "Станции" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "Най-високо оценени" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "Наскоро добавени" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "Наскоро изпълнявани" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Подкасти" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "Тази приставка не може да бъде разрешена" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "Настройки на приставките" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "Относно тази приставка" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "Версия: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "Разработчик:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "Дизайнер:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "Помощ" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "Интернет страница" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "Рестартиране" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "Локална колекция" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "Онлайн източници" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "Други източници" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "Плейлисти" #: alttoolbar_type.py:986 msgid "Browse" msgstr "Разглеждане" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "Повтаряне на всички записи" alternative-toolbar-0.16.3/po/ca.po000066400000000000000000000212401264666532500171360ustar00rootroot00000000000000# Catalan translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-05-22 16:24+0000\n" "Last-Translator: VPablo \n" "Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "Temes" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Categories" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "Reinicie el reproductor per que els canvis tinguen efecte." #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Barra d'eines:" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "Mes adequat per entorns\n" "d'escriptori con GNOME o Elementary." #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "Modern" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "Usa controls compactes" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" "Mostra els controls de reproducció a la barra d'eines amb un estil visual " "compacte en lloc de l'estil rhythmboc estàndard.\n" "Sempre activat per al mode de la barra d'eines modern." #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "Mostra:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "Àlbum/gènere/any per la cançó en reproducció" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "Mostra àlbum/gènere/any en lloc de cançò-artista-àlbum. Útil per entorns " "d'escriptori on cançò-artista-àlbum ja es mostra la títol de la finestra." #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "Consells per als controls de reproducció." #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "Mostra o oculta els consells per als controls de reproducció." #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "Control de volum" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "Mostra o oculta el control de volum." #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Controls de reproducció" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "Mostra o oculta els controls de reproducció a la pantalla inicial." #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Usa:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "Etiqueta de cançó/artista en línia." #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" "Mostra etiquetes de Cançó i Artista abans del control lliscant de progrés. " "Si no està activat, es mostraran damunt del control de progrés." #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "Lliscador de progrés compacte" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" "Mostra i usa un lliscador de progrés compacte de pista - útil quan el " "lliscador de progrés del tema per defecte és visualment massa gran." #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "Barra lateral millorada" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" "Mosta o oculta la barra lateral redissenyada per al reproductor. Ofereix " "icones simbòliques millorades, millor organització de fonts i la capacitat " "de expandir i contraure categories." #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "Diàleg de complements millorat" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" "Mostra o oculta el diàleg de complements redissenyat. Ofereix interruptors " "en lloc de caselles i la barra lateral en línia amb icones simbòliques. " "Funciona millor amb entorns d'escriptori basats en GNOME." #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "Reprodueix la pista anterior" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "Continua o pausa la reproducció" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "Reprodueix la pista següent" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "Repeteix la pista actual" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "Reprodueix les pistes en ordre aleatori" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "Cerca enrere" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "Cerca enrere, a la pista actual, per 5 segons." #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "Cerca endavant" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "Cerca endavant, a la pista actual, per 10 segons." #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "Mostra la barra d'eines de Reproducció-Controls" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "Mostra o oculta la barra d'eines de reproducció-controls" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "Mostra la Barra d'eines de Fonts" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "Mostra o oculta la barra d'eines de fonts" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "Barra d'eines Alternativa" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" "Reemplaça la barra gran de Rhythmbox per una Barra d'eines Decorada per la " "Part-Client o Compacta que es pot amagar" #: alttoolbar_controller.py:187 msgid "View All" msgstr "Mostra-ho tot" #: alttoolbar_controller.py:343 msgid "Import" msgstr "Importa" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "Estacions" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "Les millor puntuades per mi" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "Afegits recents" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "Reproduccions recents" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Podcasts" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "No es pot activar el complement" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "Configuració dels Complements" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "Quant a aquest Complement" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "Versió: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "Desenvolupador:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "Dissenyador:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "Ajuda" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "Pàgina web" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "Reinicia" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "Col·lecció local" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "Fonts en línia" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "Altres fonts" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "Llistes de reproducció" #: alttoolbar_type.py:986 msgid "Browse" msgstr "Navega" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "Repeteix totes les pistes" alternative-toolbar-0.16.3/po/de.po000066400000000000000000000207611264666532500171520ustar00rootroot00000000000000# German translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-05-26 17:58+0000\n" "Last-Translator: fossfreedom \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "Titel" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Kategorien" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "Änderungen werden nach Neustart wirksam" #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Werkzeugleiste" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "Am besten geeignet für Desktopumgebungen\n" "wie GNOME und Pantheon" #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "Moderner Stil" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "Kompakte Wiedergabesteuerung" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" "Gegenüber dem Rhythmbox-Standard kompaktere Wiedergabesteuerung.\n" "Für den modernen Stil stets wirksam." #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "Zeige:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "Album, Genre und Jahr des abgespielten Titels" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "Zeige Album, Genre und Jahr anstelle von Titel, Künstler und Album. Nützlich " "wenn Titel, Künstler und Album bereits in der Titelleiste gezeigt werden." #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "Minihilfe zu Steuerungselementen" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "Minihilfe anzeigen?" #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "Lautstärkeregelung" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "Lautstärkeregelung anzeigen?" #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Wiedergabesteuerung" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "Wiedergabesteuerung beim Start von Rhythmbox anzeigen?" #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Verwende:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "Kompakte Anzeige von Titel und Künstler" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" "Zeigt Angaben zu Titel und Künstler links vor der Fortschrittsanzeige. Falls " "nicht ausgewählt, erscheinen die Angaben oberhalb der Fortschrittsanzeige." #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "Kompakte Fortschrittsanzeige" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" "Kompakte Darstellung des Wiedergabefortschritts - nützlich falls die " "standardmäßige Darstellung zu groß erscheint." #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "Überarbeitete Seitenleiste" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" "Überarbeitete Seitenleiste mit verbesserten symbolischen Icons, verbesserter " "Organisation der Musikquellen, sowie der Möglichkeit Kategorien hinzu- und " "abzuschalten." #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "Überarbeitete Plugin-Verwaltung" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" "Die überarbeitete Plugin-Verwaltung bietet Schalter anstelle von " "Kontrollkästchen und eine integrierte Werkzeugleiste mit symbolischen Icons. " "Funktioniert am besten mit GNOME-basierten Desktopumgebungen." #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "Vorherigen Titel abspielen" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "Wiedergabe pausieren oder fortsetzen" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "Nächsten Titel abspielen" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "Aktuellen Titel wiederholen" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "Titel in zufälliger Reihenfolge abspielen" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "Rückwärts suchen" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "Von der aktuellen Wiedergabeposition 5 Sekunden zurück suchen" #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "Vorwärts suchen" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "Von der aktuellen Wiedergabeposition 10 Sekunden vorwärts suchen" #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "Leiste mit Wiedergabesteuerung anzeigen" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "Wiedergabesteuerung anzeigen?" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "Wiedergabequellenleiste anzeigen" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "Leiste mit Wiedergabequellen anzeigen?" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "Alternatives Erscheinungsbild" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" "Ersetzt die großen Schaltflächen durch eine kombinierte Werkzeugleiste/" "Titelleiste (Moderner Stil) oder eine kompakte ausblendbare Werkzeugleiste." #: alttoolbar_controller.py:187 msgid "View All" msgstr "Alle anzeigen" #: alttoolbar_controller.py:343 msgid "Import" msgstr "Importieren" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "Sender" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "Beste Bewertung" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "Zuletzt hinzugefügt" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "Zuletzt gespielt" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Podcasts" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "Dieses Plugin kann nicht aktiviert werden." #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "Erweiterungen konfigurieren" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "Über dieses Plugin" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "Version: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "Entwickler:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "Designer:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "Hilfe" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "Internetseite" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "Neustart" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "Lokale Sammlung" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "Onlinequellen" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "Andere Quellen" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "Wiedergabelisten" #: alttoolbar_type.py:986 msgid "Browse" msgstr "Durchsuchen" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "Alle Titel wiederholen" alternative-toolbar-0.16.3/po/el.po000066400000000000000000000250071264666532500171600ustar00rootroot00000000000000# Greek translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-10-01 15:06+0000\n" "Last-Translator: Panos Lyrakis \n" "Language-Team: Greek \n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-10-01 18:32+0000\n" "X-Generator: Launchpad (build 17783)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "Τραγούδια" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Κατηγορίες" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "Κάντε επανεκκίνηση στον player για να ισχύσουν οι αλλαγές." #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Γραμμή εργαλείων" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "Μοντέρνο" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "Προβολή:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "Άλμπουμ / Είδος / έτος για το τραγούδι που αναπαράγεται" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "Εμφάνιση Άλμπουμ / Είδος / έτος, αντί του τραγουδιού-καλλιτέχνη-άλμπουμ. " "Χρήσιμο για γραφικά περιβάλλοντα όπου το τραγούδι-καλλιτέχνης-άλμπουμ " "εμφανίζεται ήδη στον τίτλο του παραθύρου." #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "Εμφάνιση ή απόκρυψη των tooltips στα χειριστήρια αναπαραγωγής." #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "Χειριστήριο έντασης" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "Εμφάνιση ή απόκρυψη του χειριστηρίου έντασης" #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Χειριστήρια αναπαραγωγής" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "Εμφάνιση ή απόκρυψη των χειριστηρίων αναπαραγωγής κατά την εκκίνηση" #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Χρήση:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "Ενσωμάτωση ετικέτας τραγούδι/καλλιτέχνης" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" "Εμφάνιση ετικέτας Τραγούδι και Καλλιτέχνης πριν τον ολισθητήρα προόδου " "(progress slider). Στην περίπτωση που δεν ενεργοποιήσετε αυτή την επιλογή, " "οι ετικέτες θα εμφανίζονται πάνω από τον ολισθητήρα." #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "Διακριτικός ολισθητήρας προόδου" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" "Εμφανίστε και χρησιμοποιήστε έναν πιο διακριτικό ολισθητήρα προόδου. " "Κατάλληλο όταν το προκαθορισμένο θέμα του ολισθητήρα είναι μεγάλο οπτικά." #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" "Εμφανίστε ή αποκρύψτε ένα επανασχεδιασμένο sidebar ( πλαϊνή γραμμή " "εργαλείων ) στον player. Διαθέτει βελτιωμένα εικονίδια, καλλήτερη οργάνωση " "πηγών καθώς και δυνατότητα να αναπτύξετε και να συμπτύξετε κατηγορίες." #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "Ενισχυμένα πρόσθετα διαλόγου" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" "Εμφανίστε ή αποκρύψτε τον επανασχεδιασμένο διάλογο προσθέτων. Τα κουτάκια " "επιλογής έχουν αντικατασταθεί με διακόπτες και διαθέτει ενσωματομένη γραμμή " "εργαλείων με εικονίδια. Λειτουργεί καλύτερα σε γραφικά περιβάλλοντα " "βασισμένα στο Gnome." #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "Αναπαραγωγή προηγούμενου κομματιού" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "Συνέχιση ή παύση της αναπαραγωγής" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "Αναπαραγωγή επόμενου κομματιού" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "Επανάληψη του τρέχοντος κομματιού" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "Αναπαραγωγή των κομματιών με τυχαία σειρά" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "Αναζήτηση πίσω" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "Αναζήτηση προς τα πίσω, στο τρέχον κομμάτι, ανά 5 δευτ/τα." #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "Αναζήτηση μπροστά" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "Αναζήτηση προς τα εμρπός, στο τρέχον καμμάτι, ανά 10 δευτ/τα." #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "Εμφάνιση γραμμής εργαλείων με τα χειριστήρια αναπαραγωγής" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "" "Εμφάνιση ή απόκρυψη της γραμμής εργαλείων με τα χειριστήρια αναπαραγωγής" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "Εμφάνιση εργαλείων προέλευσης" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "Εμφάνιση ή απόκρυψη εργαλείων σχετικά με την προέλευση των κομματιών" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "εναλλακτική γραμμή εργαλείων" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" #: alttoolbar_controller.py:187 msgid "View All" msgstr "Προβολή όλων" #: alttoolbar_controller.py:343 msgid "Import" msgstr "Εισαγωγή" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "Σταθμοί" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "Κορυφαία βαθμολογημένα από μένα" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "Προστέθηκαν πρόσφατα" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "Πρόσφατες αναπαραγωγές" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Φορητές εκπομπές (Podcasts)" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "Το πρόσθετο δεν μπορεί να ενεργοποιηθεί" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "Ρύθμιση προσθέτων" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "Σχετικά με αυτό το πρόσθετο" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "Έκδοση: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "Δημιουργός:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "Σχεδιαστής:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "Βοήθεια" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "Ιστοσελίδα" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "Επανεκκίνηση" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "Τοπική συλλογή" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "Πηγές από το διαδίκτυο" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "Άλλες πηγές" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "Λίστες αναπαραγωγής" #: alttoolbar_type.py:986 msgid "Browse" msgstr "Πλοήγηση" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "Επανάληψη όλων των κομματιών" alternative-toolbar-0.16.3/po/en_GB.po000066400000000000000000000203741264666532500175340ustar00rootroot00000000000000# English translations for PACKAGE package # English (United Kingdom) translations for PACKAGE package. # Copyright (C) 2015 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2015. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-05-22 12:56+0000\n" "Last-Translator: fossfreedom \n" "Language-Team: none\n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "Songs" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Categories" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "Restart the player for the changes to take effect." #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Toolbar:" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "Best suitable for desktop\n" "environments like GNOME and elementary." #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "Modern" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "Use compact controls" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" "Display the playback controls in the toolbar in visually compact style, " "instead of the standard Rhythmbox style.\n" "Always enabled for modern toolbar mode." #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "Show:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "Album/genre/year for playing song" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "Tooltips for the playback controls" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "Show or hide the tooltips for the playback controls." #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "Volume control" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "Show or hide the volume control." #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Playback controls" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "Show or hide the playing controls on player start-up." #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Use:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "Inline song/artist label" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" "Display Song and Artist labels before the progress slider. If not ticked, " "they are displayed above the progress slider." #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "Compact progress slider" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "Enhanced sidebar" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "Enhanced plug-ins dialogue" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" "Show or hide redesigned plug-ins dialogue. It features switches instead of " "checkboxes, and inline toolbar with symbolic icons. Works best with Gnome " "based desktop environments." #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "Play the previous track" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "Resume or pause the playback" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "Play the next track" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "Repeat the current track" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "Play the tracks in random order" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "Seek Backwards" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "Seek backwards, in current track, by 5 seconds." #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "Seek Forwards" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "Seek forwards, in current track, by 10 seconds." #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "Show Play-Controls Toolbar" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "Show or hide the play-controls toolbar" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "Show Source Toolbar" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "Show or hide the source toolbar" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "Alternative Toolbar" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" #: alttoolbar_controller.py:187 msgid "View All" msgstr "View All" #: alttoolbar_controller.py:343 msgid "Import" msgstr "Import" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "Stations" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "My Top Rated" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "Recently Added" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "Recently Played" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Podcasts" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "The plug-in cannot be enabled" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "Configure Plug-ins" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "About this plug-in" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "Version: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "Developer:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "Designer:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "Help" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "Homepage" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "Restart" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "Local collection" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "Online sources" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "Other sources" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "Playlists" #: alttoolbar_type.py:986 msgid "Browse" msgstr "Browse" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "Repeat all tracks" alternative-toolbar-0.16.3/po/en_US.po000066400000000000000000000202631264666532500175700ustar00rootroot00000000000000# English translations for PACKAGE package. # Copyright (C) 2015 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2015. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-05-22 12:57+0000\n" "Last-Translator: fossfreedom \n" "Language-Team: none\n" "Language: en_US\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "Songs" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Categories" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "Restart the player for the changes to take effect." #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Toolbar:" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "Best suitable for desktop\n" "environments like Gnome and Elementary." #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "Modern" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "Use compact controls" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "Show:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "Album/genre/year for playing song" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "Tooltips for the playback controls" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "Show or hide the tooltips for the playback controls." #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "Volume control" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "Show or hide the volume control." #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Playback controls" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "Show or hide the playing controls on player startup." #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Use:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "Inline song/artist label" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "Compact progress slider" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "Enhanced sidebar" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "Enhanced plugins dialog" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "Play the previous track" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "Resume or pause the playback" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "Play the next track" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "Repeat the current track" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "Play the tracks in random order" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "Seek Backward" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "Seek backward, in current track, by 5 seconds." #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "Seek Forward" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "Seek forward, in current track, by 10 seconds." #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "Show Play-Controls Toolbar" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "Show or hide the play-controls toolbar" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "Show Source Toolbar" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "Show or hide the source toolbar" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "Alternative Toolbar" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" #: alttoolbar_controller.py:187 msgid "View All" msgstr "View All" #: alttoolbar_controller.py:343 msgid "Import" msgstr "Import" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "Stations" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "My Top Rated" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "Recently Added" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "Recently Played" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Podcasts" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "The plugin cannot be enabled" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "Configure Plugins" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "About this plugin" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "Version: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "Developer:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "Designer:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "Help" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "Homepage" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "Restart" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "Local collection" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "Online sources" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "Other sources" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "Playlists" #: alttoolbar_type.py:986 msgid "Browse" msgstr "Browse" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "Repeat all tracks" alternative-toolbar-0.16.3/po/eo.po000066400000000000000000000144151264666532500171640ustar00rootroot00000000000000# Esperanto translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-06-16 09:47+0000\n" "Last-Translator: Adolfo Jayme \n" "Language-Team: Esperanto \n" "Language: eo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Kategorioj" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "" #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Ilpanelo:" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "" #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "" #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Regiloj por ludado" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "" #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Uzi:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "Ludi la antaŭan trakon" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "Ludi la sekvan trakon" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "Serĉi malantaŭen" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "" #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "Serĉi antaŭen" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "" #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" #: alttoolbar_controller.py:187 msgid "View All" msgstr "" #: alttoolbar_controller.py:343 msgid "Import" msgstr "Enporti" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "Versio: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "Helpo" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "Ludlistoj" #: alttoolbar_type.py:986 msgid "Browse" msgstr "" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "" alternative-toolbar-0.16.3/po/es.po000066400000000000000000000215341264666532500171700ustar00rootroot00000000000000# Spanish translations for PACKAGE package. # Copyright (C) 2015 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2015. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-05-22 12:39+0000\n" "Last-Translator: Oscar Fabian Prieto Gonzalez \n" "Language-Team: none\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "Canciones" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Categorías" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "Reinicie el reproductor para que los cambios tengan efecto" #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Barra de herramientas:" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "Mas adecuado para entornos de\n" "escritorio como GNOME o elementary." #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "Moderna" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "Usar controles compactos" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" "Mostrar los controles de reproducción en la barra de herramientas en el " "estilo visual compacta en lugar del estilo Rhythmbox estándar.\n" "Siempre activada para el modo de barra de herramientas moderno." #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "Mostrar:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "Álbum/género/año para la canción en reproducción" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "Mostrar álbum/genero/año en vez de la canción-artista-álbum. Útil para " "aquellos entornos donde desktop-canción-artista-álbum ya está representada " "en el título de la ventana." #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "Consejos en los controles de reproducción" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "Mostrar o ocultar los cosejos para los controles de reproducción." #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "Control de volumen" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "Mostrar o ocultar el control de volumen." #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Controles de reproducción" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "Mostrar u ocultar los controles de juego en el arranque reproductor." #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Usar:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "canción en linea/ etiqueta del artista" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" "Mostrar etiquetas canción y el artista antes de que el control deslizante de " "progreso. Si no está activada, se muestran por encima de la barra de " "progreso." #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "Deslizador de progreso compacto" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" "Muestra y usa un control deslizante del progreso de pista - útil cuando el " "el control deslizante de progreso es visualmente demasiado grande." #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "Barra lateral mejorada" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" "Mostrar u ocultar la barra lateral re diseñada para el reproductor. Ofrece " "iconos simbólicos mejorados, una mejor organización de fuentes y la " "capacidad de expandir y contraer categorías." #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "Diálogo de complementos mejorado" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" "Mostrar u oculta los plugin de dialogo rediseñado. Ofrece interruptores en " "vez de casillas de verificación y la barra de herramientas en línea con " "iconos simbólicos. Funciona mejor con los entornos de escritorio basados en " "Gnome." #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "Reproducir la pista anterior" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "Continuar o pausar la reproducción" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "Reproducir la pista siguiente" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "Repetir la pista actual" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "Reproducir las pistas en orden aleatorio" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "Buscar hacia atrás" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "Busque hacia atrás, en la pista actual, por 5 segundos." #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "Buscar hacia delante" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "Busque hacia adelante, en la pista actual, por 10 segundos." #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "Mostrar la barra de Herramientas Reproducir-controles" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "Muestra u oculta la barra de Herramientas Reproducir-controles" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "Muestra la Barra de Herramientas fuente" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "Mostrar u ocultar la barra de herramientas de fuente" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "Barra de herramientas alternativa" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" "Remplazar la gran barra de herramientas de Rhythmbox por una barra de " "herramientas compacta que puede ser escondida" #: alttoolbar_controller.py:187 msgid "View All" msgstr "Ver todas" #: alttoolbar_controller.py:343 msgid "Import" msgstr "Importar" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "Estaciones" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "Mejores calificados" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "Añadidas recientemente" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "Reproducidas recientemente" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Podcasts" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "No se puede activar el complemento" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "Configurar los complementos" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "Acerca de este complemento" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "Versión: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "Desarrollador:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "Diseñador:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "Ayuda" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "Página de inicio" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "Reinicar" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "Colección local" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "Fuentes en línea" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "Otras fuentes" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "Listas de reproducción" #: alttoolbar_type.py:986 msgid "Browse" msgstr "Navegar" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "Repetir todas las pistas" alternative-toolbar-0.16.3/po/fi.po000066400000000000000000000166431264666532500171640ustar00rootroot00000000000000# Finnish translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-05-22 13:18+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "Kappaleet" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Luokat" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "Käynnistä soitin uudelleen, jotta muutokset tulevat voimaan." #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Työkalupalkki:" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "Sopii parhaiten Gnomen\n" "ja Elementaryn tapaisille työpöydille." #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "Moderni" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "Käytä kompakteja säätimiä" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "Näytä:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "Albumi/tyyli/vuosi nykyisestä kappaleesta" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "Työkaluvihjeet toiston säätimille" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "Näytä tai piilota työkaluvihjeet toiston säätimille." #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "Äänenvoimakkuuden säätö" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "Näytä tai piilota äänenvoimakkuuden säätö." #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Toiston säätimet" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "" #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Käytä:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "Sisennetyt kappale- ja esittäjätiedot" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "Kompakti edistymissäädin" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "Paranneltu sivupalkki" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "Paranneltu liitännäisikkuna" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "Toista edellinen kappale" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "Jatka tai keskeytä toisto" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "Toista seuraava kappale" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "Kertaa nykyinen kappale" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "Toista kappaleet satunnaisessa järjestyksessä" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "Siirry taaksepäin" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "Siirry taaksepäin 10 sekuntia nykyisessä kappaleessa." #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "Siirry eteenpäin" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "Siirry eteenpäin 10 sekuntia nykyisessä kappaleessa." #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "Toistosäädinten työkalupalkki" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "Näytä tai piilota toistosäädinten työkalupalkki" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "Lähteen työkalupalkki" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "Vaihtoehtoinen työkalupalkki" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" #: alttoolbar_controller.py:187 msgid "View All" msgstr "Näytä kaikki" #: alttoolbar_controller.py:343 msgid "Import" msgstr "Tuo" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "Kanavat" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "Parhaiten arvostellut" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "Äskettäin lisätyt" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "Toistettu äskettäin" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Podcastit" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "Tätä liitännäistä ei voi ottaa käyttöön" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "Liitännäisten määrittelyt" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "Tietoja liitännäisestä" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "Versio: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "Kehittäjä:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "Suunnittelu:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "Ohje" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "Verkkosivusto" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "Käynnistä uudelleen" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "Paikallinen kokoelma" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "Verkkolähteet" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "Muut lähteet" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "Soittolistat" #: alttoolbar_type.py:986 msgid "Browse" msgstr "Selaa" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "Kertaa kaikki kappaleet" alternative-toolbar-0.16.3/po/fr.po000066400000000000000000000217511264666532500171710ustar00rootroot00000000000000# French translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-08-02 18:12+0000\n" "Last-Translator: Philippe Loctaux \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-08-02 20:52+0000\n" "X-Generator: Launchpad (build 17656)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "Morceaux" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Catégories" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "Redémarrez le lecteur pour que les changements prennent effet." #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Barre d’outils :" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "Fonctionne mieux avec les environnements\n" "de bureau comme Gnome et Elementary." #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "Moderne" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "Utiliser des contôles compacts" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" "Afficher les commandes du lecteur dans la barre d’outils dans un style " "visuel compact au lieu du style standard de Rhythmbox.\n" "Toujours activé en mode barre d’outils moderne." #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "Afficher :" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "Album/genre/année pour la chanson en lecture" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "Afficher album/genre/année au lieu de chanson-artiste-album. Utile pour les " "environnements de bureau dans lesquels chanson-artiste-album est déjà " "affiché dans la barre de titre de la fenêtre." #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "Bulles d’aide pour les commandes du lecteur" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "Afficher ou masquer les bulles d’aide pour les commandes du lecteur." #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "Commande de volume" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "Afficher ou masquer la commande de volume." #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Commandes de lecture" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "Afficher ou masquer les commandes de lecture au lancement du lecteur." #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Utiliser :" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "Étiquette uniligne chanson/artiste" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" "Afficher les étiquettes Chanson et Artiste avant le curseur progressif. Si " "cette option n’est pas cochée, elles seront affichées au-dessus de celui-ci." #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "Curseur progressif compact" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" "Afficher et utiliser un curseur progressif compact de pistes — utile là où " "le curseur progressif du thème par défaut est visuellement trop large." #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "Barre latérale améliorée" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" "Afficher ou masquer la barre latérale repensée pour le lecteur. Elle inclut " "des icônes symboliques améliorées, de meilleures sources d’organisation et " "la possibilité d’agrandir ou de réduire les catégories." #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "Boîte de dialogue des extensions améliorée" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" "Afficher ou masquer la boîte de dialogue des extensions repensée. Elle " "inclut des boutons à deux options au lieu de cases à cocher ainsi qu’une " "barre d’outils uniligne avec des icônes symboliques. Fonctionne mieux avec " "les environnements de bureau basé sur Gnome." #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "Lire la piste précédente" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "Reprendre ou mettre en pause la lecture" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "Lire la piste suivante" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "Répéter la piste courante" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "Lire les pistes en ordre aléatoire" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "Reculer" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "Reculer de 5 secondes dans la piste courante." #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "Avancer" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "Avancer de 10 secondes dans la piste courante." #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "Afficher les commandes de lecture de la barre d’outils" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "Afficher ou masquer les commandes de lecture de la barre d’outils" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "Afficher la barre d’outils des sources" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "Afficher ou masquer la barre d’outils des sources" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "Barre d’outils alternative" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" "Remplacer la grosse barre d’outils de Rhythmbox par une barre d’outils " "décorée côté client ou une barre d’outils compacte qui peut être masquée" #: alttoolbar_controller.py:187 msgid "View All" msgstr "Afficher tout" #: alttoolbar_controller.py:343 msgid "Import" msgstr "Importer" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "Stations" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "Mes pistes préférées" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "Récemment ajoutées" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "Récemment lues" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Podcasts" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "L’extension ne peut être activée" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "Configurer les extensions" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "À propos de cette extension" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "Version : " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "Développeur :" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "Modéliste :" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "Aide" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "Page d’accueil" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "Redémarrer" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "Collection locale" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "Sources en ligne" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "Autres sources" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "Listes de lecture" #: alttoolbar_type.py:986 msgid "Browse" msgstr "Parcourir" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "Répéter toutes les pistes" alternative-toolbar-0.16.3/po/id.po000066400000000000000000000207111264666532500171510ustar00rootroot00000000000000# Indonesian translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-06-06 04:48+0000\n" "Last-Translator: zmni \n" "Language-Team: Indonesian \n" "Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "Lagu" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Kategori" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "Mulai ulang pemutar agar perubahan terdampak." #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Bilah Alat:" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "Paling cocok untuk lingkungan\n" "destop seperti Gnome dan Elementary." #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "Modern" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "Gunakan pengendali ringkas" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" "Tampilkan pengendali pemutaran pada bilah alat dengan gaya visual ringkas " "daripada gaya standar rhythmbox.\n" "Selalu aktif untuk mode bilah alat modern." #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "Tampilkan:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "Album/jenis musik/tahun untuk lagu yang diputar" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "Tampilkan album/jenis musik/tahun ketimbang lagu-jenis musik-tahun. Berguna " "untuk lingkungan destop yang lagu-jenis musik-tahun sudah ditampilkan di " "judul jendela." #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "Tip alat untuk pengendali pemutaran" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "Tampilkan atau sembunyikan tip alat untuk pengendali pemutaran." #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "Pengendali volume" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "Tampilkan atau sembunyikan pengendali volume." #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Pengendali pemutaran" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "" "Tampilkan atau sembunyikan pengendali pemutaran pada saat memulai pemutar." #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Gunakan:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "Label lagu/artis sebaris" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" "Tampilkan label Lagu dan Artis sebelum penyusur laju. Jika tidak dicentang, " "label ditampilkan di atas penyusur laju." #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "Penyusur laju ringkas" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" "Tampilkan dan gunakan penyusur laju trek ringkas - berguna untuk tema bawaan " "penyusur laju yang secara visual terlalu besar." #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "Bilah sisi dipertingkat" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" "Tampilkan atau sembunyikan bilah sisi pemutar yang didesain ulang. Dengan " "fitur ikon simbolik yang disempurnakan, organisasi sumber yang lebih baik, " "dan kemampuan untuk meluaskan dan meruntuhkan kategori." #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "Dialog pengaya dipertingkat" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" "Tampilkan atau sembunyikan dialog pengaya yang didesain ulang. Dengan fitur " "sakelar ketimbang kotak centang dan batang alat sebaris dengan ikon " "simbolik. Sangat cocok dengan lingkungan destop berbasis Gnome." #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "Putar trek sebelumnya" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "Lanjut atau jeda pemutaran" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "Putar trek selanjutnya" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "Ulangi trek saat ini" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "Putar trek secara acak" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "Cari Mundur" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "Cari mundur, di trek saat ini, per 5 detik." #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "Cari Maju" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "Cari maju, di trek saat ini, per 10 detik." #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "Tampilkan Batang Alat Pengontrol-Putar" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "Tampilkan atau sembunyikan batang alat pengontrol-putar" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "Tampilkan Batang Alat Sumber" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "Tampilkan atau sembunyikan batang alat sumber" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "Batang Alat Alternatif" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" "Ganti batang alat besar Rhythmbox dengan Dekorasi Sisi-Klien atau Batang " "Alat Ringkas yang dapat disembunyikan" #: alttoolbar_controller.py:187 msgid "View All" msgstr "Lihat Semua" #: alttoolbar_controller.py:343 msgid "Import" msgstr "Impor" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "Stasiun" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "Pilihan Top" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "Baru Saja Ditambahkan" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "Baru Saja Diputar" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Podcast" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "Plugin tidak dapat diaktifkan" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "Konfigurasi Plugin" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "Tentang plugin ini" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "Versi: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "Pengembang:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "Perancang:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "Bantuan" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "Halaman Beranda" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "Mulai Ulang" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "Koleksi Lokal" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "Sumber Daring" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "Sumber Lainnya" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "Daftar Putar" #: alttoolbar_type.py:986 msgid "Browse" msgstr "Ramban" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "Ulangi semua trek" alternative-toolbar-0.16.3/po/it.po000066400000000000000000000215201264666532500171700ustar00rootroot00000000000000# Italian translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-08-10 08:33+0000\n" "Last-Translator: Claudio Arseni \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-08-10 18:44+0000\n" "X-Generator: Launchpad (build 17686)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "Brani" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Categorie" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "Riavviare il riproduttore per rendere effettive le modifiche." #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Barra degli strumenti:" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "Più adatta per ambienti\n" "desktop come Gnome ed Elementary." #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "Moderna" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "Usare controlli compatti" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" "Mostra i controlli di riproduzione nella barra degli strumenti con uno stile " "compatto al posto di quello standard di Rhythmbox.\n" "Sempre abilitato per la modalità «Moderna» della barra degli strumenti." #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "Mostra:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "Album/genere/anno per i brani in riproduzione" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "Mostra Albun/Genere/Anno al posto di Brano/Artista/Album. Utile per quelli " "ambienti desktop dove Brano/Artista/Album viene mostrato nella barra del " "titolo." #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "Suggerimenti per i controlli di riproduzione" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "Mostra o nasconde i suggerimenti per i controlli di riproduzione." #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "Controllo del volume" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "Mostra o nasconde il controllo del volume." #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Controlli di riproduzione" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "" "Mostra o nasconde i controlli di riproduzione all'avvio del riproduttore." #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Uso:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "Etichetta brano/artista in linea" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" "Mostra le etichette «Brano» e «Artista» prima dell'indicatore di " "riproduzione. Se non selezionato, verranno mostrate sopra l'indicatore di " "riproduzione." #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "Indicatore di riproduzione compatto" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" "Mostra e usa un indicatore di riproduzione compatto. Utile quando " "l'indicatore predefinito è visivamente troppo largo." #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "Barra laterale migliorata" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" "Mostra o nasconde la barra laterale del riproduttore ridisegnata. È dotata " "di icone migliorate, migliore organizzazione delle sorgenti e della capacità " "di espandere e comprimere le categorie." #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "Dialogo dei plugin migliorato" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" "Mostra o nasconde il dialogo dei plugin ridisegnato. Offre la possibilità di " "usare pulsanti di attivazione al posto delle caselle di spunta e una barra " "degli strumenti in linea con icone simboliche. Funziona meglio con ambienti " "desktop basati su GNOME." #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "Riproduce la traccia precedente" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "Riprende o mette in pausa la riproduzione" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "Riproduce la traccia successiva" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "Ripete la traccia corrente" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "Riproduce le tracce in ordine casuale" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "Sposta indietro" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "Sposta indietro, nella traccia corrente, di 5 secondi." #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "Sposta avanti" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "Sposta avanti, nella traccia corrente, di 10 secondi." #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "Mostrare i controlli di riproduzione nella barra degli strumenti" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "" "Mostra o nasconde i controlli di riproduzione nella barra degli strumenti" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "Mostra barra degli strumenti sorgente" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "Mostra o nasconde la barra degli strumenti sorgente" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "Barra degli strumenti alternativa" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" "Sostituisce la grande barra degli strumenti di Rhythmbox con una decorata " "lato client o con una compatta che può essere nascosta" #: alttoolbar_controller.py:187 msgid "View All" msgstr "Mostra tutto" #: alttoolbar_controller.py:343 msgid "Import" msgstr "Importa" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "Stazioni" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "Miglior giudizio" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "Aggiunti di recente" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "Ascoltati di recente" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Podcast" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "Impossibile abilitare il plugin" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "Configura plugin" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "Informazioni sul plugin" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "Versione: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "Sviluppatore:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "Designer:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "Aiuto" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "Pagina iniziale" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "Riavvia" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "Collezione locale" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "Risorse online" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "Altre risorse" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "Playlist" #: alttoolbar_type.py:986 msgid "Browse" msgstr "Sfoglia" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "Ripete tutte le tracce" alternative-toolbar-0.16.3/po/ja.po000066400000000000000000000161631264666532500171550ustar00rootroot00000000000000# Japanese translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-11-05 12:38+0000\n" "Last-Translator: BALLOON a.k.a. Fu-sen. \n" "Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-11-06 10:00+0000\n" "X-Generator: Launchpad (build 17838)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "曲" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "カテゴリー" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "変更を反映するためプレーヤーを再起動してください" #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "ツールバー:" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "モダン" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "小さな操作部を使用" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "表示:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "" #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "音量コントロール" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "音量コントロールの表示・非表示" #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "プレイバックコントロール" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "" #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "使用:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "前のトラックを再生" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "次のトラックを再生" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "現在のトラックをリピート" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "ランダム順序でトラック再生" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "後方検索" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "" #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "前方検索" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "" #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "再生コントロールツールバーの表示" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "再生コントロールツールバーの表示・非表示" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "ソースツールバーの表示" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "ソールツールバーの表示・非表示" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" #: alttoolbar_controller.py:187 msgid "View All" msgstr "すべて表示" #: alttoolbar_controller.py:343 msgid "Import" msgstr "インポート" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "ステーション" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "高評価したもの" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "最近追加したもの" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "最近再生したもの" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Podcast" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "プラグインが有効にできません" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "プラグインの設定" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "このプラグインについて" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "バージョン: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "開発者:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "デザイン:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "ヘルプ" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "ホームページ" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "再起動" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "ローカルコレクション" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "オンラインソース" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "他のソース" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "プレイリスト" #: alttoolbar_type.py:986 msgid "Browse" msgstr "参照" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "全トラックをリピート" alternative-toolbar-0.16.3/po/ko.po000066400000000000000000000213741264666532500171740ustar00rootroot00000000000000# Korean translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-05-23 03:51+0000\n" "Last-Translator: minwook shin \n" "Language-Team: Korean \n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "노래들" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "카테고리" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "변경 사항을 적용하려면 플레이어를 다시 시작합니다." #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "툴바" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "데스크탑으로 가장 적당함\n" "그놈과 엘리멘터리랑 비슷한 환경" #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "모던" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "맞춤 제어 사용" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" "시각적으로 맞추는 스타일 대신에 표준 리듬 박스 스타일 의 도구 모음에서 재생 " "컨트롤을 넓히다 .\n" "항상 현대적인 도구 모음 모드를 사용할 수 있습니다 ." #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "보기:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "재생중인 노래의 앨범/장르/년도" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "앨범 / 장르 / 년 대신 노래 아티스트 앨범을 보입니다. 데스크탑 환경에 유용하" "게 노래-아티스트-앨범이 창 제목 에 표시됩니다." #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "재상 제어를 위한 툴팁" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "재생 제어에 대한 설명 을 보이거나 숨기기." #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "볼륨 조절" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "볼륨 조절을 보이거나 숨기기" #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "재생목록 제어" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "플레이어 시작시 재생 컨트롤을 보이거나 숨기기" #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "사용:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "인라인 노래 / 아티스트 레이블" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" "진행 슬라이더 전에 노래와 아티스트 라벨을 표시합니다 . 선택하지 않은 경우 , " "진행 슬라이더 위에 표시됩니다 ." #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "맞춤 진행 슬라이더" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" "표시와 소형 트랙 진행 슬라이더를 사용 - 기본 테마 진행 슬라이더가 시각적으로 " "너무 큰 경우 유용합니다 ." #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "향상된 사이드 바" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" "플레이어에 대한 재 설계된 기사를 보이거나 숨길 수 있습니다. 그것은 상징적인 " "아이콘, 더 나은 소스 조직과 확장 범주를 축소 할 수있는 향상 기능을 제공합니" "다." #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "강화 된 플러그인 다이얼로그" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" "재 설계 플러그인 대화 상자를 보이거나 숨깁니다. 그것은 상징적인 아이콘 스위" "치 대신 체크 박스와 인라인 도구 모음을 제공합니다. 그놈 기반 데스크탑 환경과 " "가장 잘 작동합니다." #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "이전 트랙 재생" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "다시 시작 하거나 재생을 일시 정지" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "다음 트랙 재생" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "현재 트랙 을 반복" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "임의의 순서로트랙을 재생" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "되감기" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "5초로 , 현재 트랙 에서 뒤로 탐색 ." #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "빨리감기" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "10초로 , 현재 트랙에서 앞으로 탐색." #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "재생-제어 툴바 보기" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "재생-제어 툴바를 보거나 숨기기" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "소스 툴바 보기" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "소스 툴바를 보거나 숨기기" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "대체 도구 모음" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" "클라이언트-측 장식 또는 숨길수있는 소형 도구 모음가 있는 리듬박스 큰 툴바를 " "재 배치할수있습니다" #: alttoolbar_controller.py:187 msgid "View All" msgstr "모두 보기" #: alttoolbar_controller.py:343 msgid "Import" msgstr "가져오기" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "역" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "나의 가장 높은 점수순" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "최근에 추가됨" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "최근 연주된 것" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "팟캐스트" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "플러그인이 활성화되지못함" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "플러그인 설정" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "이 플러그인의 정보" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "버전: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "개발자 :" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "디자이너:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "도움" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "홈페이지" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "다시 시작" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "로컬 컬랙션" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "온라인 소스" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "다른 소스" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "재생목록" #: alttoolbar_type.py:986 msgid "Browse" msgstr "찾아보기" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "모든 트랙 다시듣기" alternative-toolbar-0.16.3/po/ms.po000066400000000000000000000205331264666532500171760ustar00rootroot00000000000000# Malay translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-06-09 01:13+0000\n" "Last-Translator: abuyop \n" "Language-Team: Malay \n" "Language: ms\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "Lagu" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Kategori" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "Mula semula pemain supaya perubahan berkesan." #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Palang Alat:" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "Terbaik untuk persekitaran\n" "desktop seperti Gnome dan Elementary." #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "Modern" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "Guna kawalan padat" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" "Papar kawalan mainbalik dalam palang alat dalam gaya padat secara visual " "selain dari gaya rhythmbox biasa.\n" "Sentiasa dibenarkan untuk mod palang alat modern." #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "Tunjuk:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "Album/genre/tahun lagu yang dimainkan" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "Papar album/genre/tahun selain dari lagu-artis-album. Berguna bagi " "persekitaran-desktop yang mana lagu-artis-album sudah dipapar dalam tajuk " "tetingkap." #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "Tip alat untuk kawalan mainbalik" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "Tunjuk atau sembunyi tip alat untuk kawalan mainbalik." #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "Kawalan volum" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "Tunjuk atau sembunyi kawalan volum." #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Kawalan mainbalik" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "Tunjuk atau sembunyi kawalan main ketika permulaan pemain." #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Guna :" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "Label lagu/artis dalaman" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" "Papar Label Lagu dan Artis sebelum pelungsur kemajuan. Jika tidak ditanda, " "ia dipapar atas pelungsur kemajuan." #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "Pelungsur kemajuan padat" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" "Papar dan guna pelungsur kemajuan trek padat - berguna pada pelungsur " "kemajuan tema lalai yang mana ia terlalu besar." #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "Palang sisi dipertingkat" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" "Tunjuk atau sembunyi palang sisi yang direka semula untuk pemain. Ia " "fiturkan ikon simbolik yang diperkemas, organisasi sumber lebih baik dan " "keupayaan mengembang dan menguncupkan kategori." #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "Dialog pemalam dipertingkat" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" "Tunjuk atau sembunyi dialog pemalam yang diperkemas. Ia fiturkan suis selain " "dari kotak tanda dan palang alat dalam-garis dengan ikon simbolik. Berfungsi " "dengan baik dalam persekitaran desktop berasaskan Gnome." #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "Main trek terdahulu" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "Sambung atau jeda mainbalik" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "Main trek berikutnya" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "Ulang trek semasa" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "Main trek dalam tertib rawak" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "Jangkau Mengundur" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "Jangkau mengundur, dalam trek semasa, sebanyak 5 saat." #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "Jangkau Maju" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "Jangkau maju, dalam trek semasa, sebanyak 10 saat." #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "Tunjuk Palang Alat Kawalan-Main" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "Tunjuk atau sembunyi palang alat kawalan-main" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "Tunjuk Palang Alat Sumber" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "Tunjuk atau sembunyi palang alat sumber" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "Palang Alat Alternatif" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" "Ganti palang alat besar Rhythmbox dengan Palang Alat Hiasan Sisi-Klien atau " "Padat yang boleh disembunyikan" #: alttoolbar_controller.py:187 msgid "View All" msgstr "Lihat Semua" #: alttoolbar_controller.py:343 msgid "Import" msgstr "Import" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "Stesen" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "Penarafan Tertinggi Saya" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "Baru Ditambah" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "Baru Dimainkan" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Podcast" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "Pemalam tidak dapat dibenarkan" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "Konfigur Pemalam" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "Perihal pemalam ini" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "Versi: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "Pembangun:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "Pereka:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "Bantuan" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "Laman Rumah" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "Mula Semula" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "Koleksi setempat" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "Sumber atas-talian" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "Sumber lain" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "Senarai Main" #: alttoolbar_type.py:986 msgid "Browse" msgstr "Layar" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "Ulang semua trek" alternative-toolbar-0.16.3/po/pt.po000066400000000000000000000212261264666532500172020ustar00rootroot00000000000000# Portuguese translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-05-14 13:14+0000\n" "Last-Translator: asensio \n" "Language-Team: Portuguese \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "Músicas" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Categorias" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "Reiniciar o Rhythmbox para as mudanças terem efeito" #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Barra de Ferramentas" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "Mais adequado para ambientes\n" "de trabalho como o Gnome ou Elementary." #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "Moderno" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "Usar controlos compactos" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" "Mostrar os controlos de reprodução da barra de ferramentas no estilo " "compacto em vez do estilo normal do rhythmbox.\n" "Sempre activado para o modo moderno da barra de ferramentas." #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "Mostrar:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "Álbum/género/ano para a música actual" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "Mostrar álbum/género/ano em vez de música/artista/album. Útil para os " "ambientes de trabalho onde música/artista/album já é visível na barra de " "título" #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "Dicas de contexto para os controlos de reprodução" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "Mostrar ou esconder dicas de contexto para os controlos de reprodução" #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "Controlo de volume" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "Mostrar ou esconder controlo de volume" #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Controlos de reprodução" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "Mostrar ou esconder os controlos de reprodução no início" #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Utilização:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "Etiqueta música/artista alinhada" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" "Mostrar Música e Artista antes da barra deslizante de progresso. Se esta " "opção não for escolhida, serão mostrados acima da barra deslizante" #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "Barra deslizante de progresso compacta" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" "Mostrar e usar uma barra de progresso de faixa compacta - útil se o tema, " "por defeito, da barra deslizante for visualmente demasiado larga" #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "Barra lateral melhorada" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" "Mostrar ou esconder a barra lateral redesenhada. Possui ícones simbólicos " "melhorados, melhor organização de fontes e a capacidade de expandir ou " "encolher categorias." #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "Diálogo de extensões melhorado" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" "Mostrar ou esconder o diálogo de extensões melhorado. Possui \"switches\" em " "vez de \"checkboxes\" e barra de ferramenta alinhada com ícones simbólicos. " "Funciona melhor num ambiente de trabalho Gnome." #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "Reproduzir faixa anterior" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "Continuar ou pausar a reprodução" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "Reproduzir faixa seguinte" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "Repetir faixa actual" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "Tocar faixas aleatoriamente" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "Procurar para trás" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "Procurar para trás, na faixa actual, 5 segundos" #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "Procurar para a frente" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "Procurar para a frente, na faixa actual, 10 segundos" #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "Mostrar barra de ferramenta de controlos" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "Mostrar ou esconder a barra de ferramenta de controlos" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "Mostrar barra de ferramentas de fontes" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "Mostrar ou esconder barra de ferramentas de fontes" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "Barra de Ferramentas Alternativa" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" "Substituir a barra de ferramentas larga do Rhythmbox por uma barra de " "ferramentas compacta que pode ser escondida." #: alttoolbar_controller.py:187 msgid "View All" msgstr "Ver Tudo" #: alttoolbar_controller.py:343 msgid "Import" msgstr "Importar" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "Estações" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "Meus Melhores Classificados" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "Adicionados recentemente" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "Tocados Recentemente" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Podcasts" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "Extenções não podem ser habilitadas" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "Configurar Extensões" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "Acerca desta extensão" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "Versão: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "Programador:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "Designer:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "Ajuda" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "Página web" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "Reiniciar" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "Colecção local" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "Fontes online" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "Outras fontes" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "Listas de reprodução" #: alttoolbar_type.py:986 msgid "Browse" msgstr "Navegar" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "" alternative-toolbar-0.16.3/po/pt_BR.po000066400000000000000000000173011264666532500175640ustar00rootroot00000000000000# Brazilian Portuguese translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-05-24 12:02+0000\n" "Last-Translator: Marcelo Sanches Cavassani \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "Músicas" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Categorias" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "Reinicie o player para que as mudanças tenham efeito." #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Barra de ferramentas" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "Mais adequado para uso em ambientes\n" "de trabalho como Gnome e Elementary." #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "Moderno" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "Usar controles compactos" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" "Mostrar os controles de reprodução na barra de ferramentas em um estilo mais " "compacto ao invés do estilo tradicional do rhythmbox.\n" "Sempre ativo no modo barra de ferramentas moderna." #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "Exibir:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "Ordenar músicas em Álbum/genero/ano" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "Mostrar álbum/gênero/ano ao invés de música-artista-álbum. Útil em ambientes " "de trabalho onde música-artista-álbum já é mostrado na barra de título." #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "Dicas de ferramentas dos controles de reprodução" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "" "Mostrar ou esconder as dicas de ferramentas dos controles de reprodução." #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "Controle do volume" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "Mostrar ou esconder o controle do volume." #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Controles de Reprodução" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "Mostrar ou esconder os controles ao iniciar o player." #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Usar:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "Alinhar nomes de música/artista" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" "Mostrar nomes de Música e do Artista antes da barra de progresso. Se " "desmarcado, eles serão mostrados acima da barra de progresso." #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "Barra de progresso compacta" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" "Mostrar e usar a barra de progresso compacta - útil quando o tema padrão da " "barra de progresso é visualmente muito grande." #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "Reproduzir a faixa anterior" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "Reproduzir a próxima faixa" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "Repetir a faixa atual" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "Tocar as faixas em ordem aleatória" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "" #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "" #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" #: alttoolbar_controller.py:187 msgid "View All" msgstr "Mostrar Tudo" #: alttoolbar_controller.py:343 msgid "Import" msgstr "Importar" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "Estações" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "Minhas Preferidas" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "Adicionadas Recentemente" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "Reproduzidas Recentemente" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Podcasts" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "O plugin não pode ser ativado" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "Configurar plugins" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "Sobre este plugin" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "Versão: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "Desenvolvedor:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "Designer:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "Ajuda" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "Página inicial" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "Reinicie" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "Coleção Local" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "" #: alttoolbar_type.py:986 msgid "Browse" msgstr "" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "" alternative-toolbar-0.16.3/po/ru.po000066400000000000000000000260041264666532500172040ustar00rootroot00000000000000# Russian translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-05-22 14:30+0000\n" "Last-Translator: ☠Jay ZDLin☠ \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "Композиции" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Категории" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "Перезапустите плеер, чтобы изменения вступили в силу." #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Панель инструментов:" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "Лучше всего подходит для среды\n" "рабочего стола Gnome и Elementary." #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "Современный" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "Компактные элементы управления" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" "Компактное отображение элементов управления воспроизведением на панели " "инструментов, вместо стандартного вида rhythmbox.\n" "Всегда включено в современном режиме панели инструментов." #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "Показывать:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "Альбом/жанр/год для проигрываемой композиции" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "Отображать альбом/жанр/год вместо композиции-исполнителя-альбома. Полезно " "для среды рабочего стола, где композиция-исполнитель-альбом уже отображаются " "в заголовке окна." #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "Подсказки для элементов управления" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "" "Показать или скрыть подсказки для элементов управления воспроизведением." #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "Регулятор громкости" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "Показать или скрыть регулятор громкости." #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Кнопки воспроизведения" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "" "Показать или скрыть элементы управления воспроизведением при запуске плеера." #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Использовать:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "Композиция/Исполнитель в строке" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" "Отображение названия композиции и исполнителя перед ползунком " "воспроизведения. Если функция не выбрана, отображаются над ползунком." #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "Компактный слайдер воспроизведения" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" "Отображать и использовать компактный слайдер воспроизведения композиции; " "полезно в стандартных темах, в которых используется визуально слишком " "большой слайдер." #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "Расширенная боковая панель" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" "Показать или скрыть обновленную боковую панель плеера. Панель содержит новые " "значки, обеспечивает лучшую организацию ресурсов, а также позволяет " "разворачивать категории." #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "Новое диалоговое окно плагинов" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" "Показать или скрыть новое, переработанное диалоговое окно плагинов. Оно " "содержит переключатели вместо полей с флажками, а также встроенную панель " "инструментов с символическими значками. Лучше всего подходит для рабочих " "столов на основе Gnome." #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "Воспроизвести предыдущую композицию" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "Возобновить или приостановить воспроизведение" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "Воспроизвести следующую композицию" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "Повторить текущую композицию" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "Воспроизвести композиции в произвольном порядке" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "Перемотать назад" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "Перемотать назад текущую композицию на 5 сек." #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "Перемотать вперёд" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "Перемотать вперёд текущую композицию на 10 сек." #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "Показать панель управления воспроизведением" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "Показать или скрыть панель управления воспроизведением" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "Показать панель ресурсов" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "Показать или скрыть панель инструментов для ресурсов" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "Альтернативная панель инструментов" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" "Заменить большую панель инструментов Rhythmbox на клиентскую декорированную " "или компактную скрываемую панель." #: alttoolbar_controller.py:187 msgid "View All" msgstr "Показать всё" #: alttoolbar_controller.py:343 msgid "Import" msgstr "Импорт" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "Станции" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "Моё избранное" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "Недавно добавленное" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "Последние воспроизводившиеся" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Подкасты" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "Модуль не может быть включён" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "Настройка модулей" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "О плагине" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "Версия: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "Разработал:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "Дизайн:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "Справка" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "Домашняя страница" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "Перезапустить" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "Локальная коллекция" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "Интернет-ресурсы" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "Другие ресурсы" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "Списки воспроизведения" #: alttoolbar_type.py:986 msgid "Browse" msgstr "Обзор" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "Повтор всех композиций" alternative-toolbar-0.16.3/po/sl.po000066400000000000000000000211051264666532500171710ustar00rootroot00000000000000# Slovenian translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-05-24 09:18+0000\n" "Last-Translator: Blaž Mežnaršič \n" "Language-Team: Slovenian \n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "Skladbe" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Kategorije" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "Znova zaženi predvajalnik, da bodo spremembe začele veljati." #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Orodna vrstica" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "Najbolj primerno za namizna \n" "okolja, kot sta Gnome in elementary." #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "Moderno" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "Uporabi kompaktne nadzorne tipke" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" "Prikaži nadzorne tipke predvajanja na orodni vrstici v vizualno kompaktnem " "stilu namesto standardnega.\n" "Vedno omogočeno za način moderne orodne vrstice." #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "Pokaži:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "Album/žanr/leto za predvajanje skladbe" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "Pokaži album/žanr/leto namesto pesem-umetnik-album. Uporabno za tista " "namizna okolja, kjer so pesem-umetnik-album že prikazani v naslovu okna." #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "Orodni namigi za nadzorne tipke predvajanja" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "Pokaži ali skrij orodne namige za nadzorne tipke predvajanja." #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "Nadzor glasnosti" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "Pokaži ali skrij nadzor glasnosti." #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Nadzor predvajanja" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "Pokaži ali skrij nadzorne tipke predvajanja ob zagonu predvajalnika." #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Uporabi:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "Znotrajvrstična oznaka pesem/umetnik" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" "Pokaži oznake Pesem in Umetnik pred drsnikom za prikaz napredka. Če ni " "obkljukano, so prikazane nad drsnikom." #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "Kompakten drsnik napredka" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" "Pokaži in uporabi kompakten drsnik napredka skladbe - uporabno, kjer je " "privzeta tema drsnika napredka vizualno prevelika." #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "Izboljšana stranska vrstica" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" "Pokaži ali skrij preoblikovano stransko vrstico za predvajalnik. Nudi " "izboljšane simbolne ikone, boljšo organizacijo virov in sposobnost za " "razširitev in strnitev kategorij." #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "Izboljšano pogovorno okno vstavkov" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" "Pokaži ali skrij preoblikovano pogovorno okno vstavkov. Nudi stikala namesto " "označnih polj in znotrajvrstično orodno vrstico s simbolnimi ikonami. " "Najbolje deluje z namiznimi okolji, ki temeljijo na GNOME." #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "Predvajaj predhodno skladbo" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "Nadaljuj ali ustavi predvajanje" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "Predvajaj naslednjo skladbo" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "Ponovno predvajaj trenutno skladbo" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "Predvajaj skladbe v naključnem vrstnem redu" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "Previj nazaj" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "Previj trenutno skladbo nazaj za 5 sekund." #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "Previj naprej" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "Previj trenutno skladbo naprej za 5 sekund." #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "Pokaži orodno vrstico z nadzornimi tipkami predvajanja" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "Pokaži ali skrij orodno vrstico z nadzornimi tipkami predvajanja" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "Pokaži izvorno orodno vrstico" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "Pokaži ali skrij izvorno orodno vrstico" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "Nadomestna orodna vrstica" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" "Zamenjaj Rhythmboxovo veliko orodno vrstico s tako, ki je okrašena na " "odjemalčevi strani ali pa s kompaktno, ki je lahko skrita" #: alttoolbar_controller.py:187 msgid "View All" msgstr "Pokaži vse" #: alttoolbar_controller.py:343 msgid "Import" msgstr "Uvozi" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "Postaje" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "Moje najvišje ocenjene" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "Nedavno dodano" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "Nedavno predvajano" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Poddaje" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "Vstavek ne more biti omogočen" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "Nastavi vstavke" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "O vstavku" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "Različica: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "Razvijalec:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "Oblikovalec:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "Pomoč" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "Domača stran" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "Ponovno zaženi" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "Lokalna zbirka" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "Spletni viri" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "Drugi viri" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "Seznami predvajanja" #: alttoolbar_type.py:986 msgid "Browse" msgstr "Brskaj" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "Ponovi vse skladbe" alternative-toolbar-0.16.3/po/th.po000066400000000000000000000206241264666532500171730ustar00rootroot00000000000000# Thai translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-10-11 19:00+0000\n" "Last-Translator: Rockworld \n" "Language-Team: Thai \n" "Language: th\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-10-12 09:20+0000\n" "X-Generator: Launchpad (build 17802)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "เพลง" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "ประเภท" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "เริ่มต้นเครื่องเล่นใหม่เพื่อให้การเปลี่ยนแปลงมีผล" #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "แถบเครื่องมือ:" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "เข้ากันได้ดีที่สุดกับสภาพแวดล้อม\n" "เดสก์ท็อปต่าง ๆ เช่น Gnome และ Elementary" #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "ทันสมัย" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "ใช้คอนโทรลที่มีขนาดกะทัดรัด" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" "แสดงคอนโทรลการเล่นในแถบเครื่องมือในรูปแบบกะทัดรัดแทนรูปแบบมาตรฐานของ Rhythmbox\n" "เปิดใช้งานสำหรับโหมดแถบเครื่องมือแบบทันสมัยเสมอ" #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "แสดง:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "อัลบั้ม/แนว/ปี ของเพลงที่กำลังเล่นอยู่" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "" #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "ตัวควบคุมระดับเสียง" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "" #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "" #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "การใช้งาน:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "เล่นเพลงก่อนหน้า" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "พักการเล่น หรือเล่นต่อ" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "เล่นเพลงต่อไป" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "เล่นเพลงนี้ซ้ำ" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "สุ่มเล่นเพลง" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "ค้นหาย้อนหลัง" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "ค้นหาย้อนหลัง ในเพลงนี้ 5 วินาที" #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "ค้นหาไปข้างหน้า" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "ค้นหาไปข้างหน้า ในเพลงนี้ 10 วินาที" #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "แสดงแถบเครื่องมือควบคุมการเล่น" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "แสดงหรือซ่อนแถบเครื่องมือควบคุมการเล่น" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "แสดงแถบเครื่องมือแหล่งข้อมูล" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "แสดงหรือซ่อนแถบเครื่องมือแหล่งข้อมูล" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "แถบเครื่องมืออื่น ๆ" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" #: alttoolbar_controller.py:187 msgid "View All" msgstr "แสดงทั้งหมด" #: alttoolbar_controller.py:343 msgid "Import" msgstr "นำเข้า" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "คะแนนสูงสุด" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "เพิ่มล่าสุด" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "เล่นล่าสุด" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "พอดคาสต์" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "ตั้งค่าปลั๊กอิน" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "รุ่น: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "นักพัฒนา:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "วิธีใช้" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "โฮมเพจ" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "เริ่มใหม่" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "" #: alttoolbar_type.py:986 msgid "Browse" msgstr "" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "" alternative-toolbar-0.16.3/po/tr.po000066400000000000000000000173471264666532500172150ustar00rootroot00000000000000# Turkish translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-05-10 17:23+0000\n" "Last-Translator: Utku Birkan \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" " and golelcintolga@gmail.comLanguage-Team: Turkish \n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "Şarkılar" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Kategoriler" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "Değişikliklerin etkisini göstermesi için oynatıcıyı yeniden başlatın." #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Araç çubuğu:" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "En iyi Elementary ya da Gnome benzeri masaüstü ortamlarında çalışır." #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "Modern" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "Kompakt kontrolleri kullan" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "Göster:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "Çalan şarkı için albüm/tarz/yıl" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "Sarkı-sanatçı-albüm yerine albüm/tarz/yıl'ı görüntüle. Sarkı-sanatçı-" "albüm'ün pencere başlığı olarak görüntülendiği masaüstü ortamları için ideal" #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "Oynatma kontrolleri için ipuçları" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "Oynatma kontrolleri için ipuçlarını göster ya da gizle" #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "Ses denetimi" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "Ses denetimini göster ya da gizle" #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Oynatma kontrolleri" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "Oynatma kontrollerini oynatıcı başlangıcında göster ya da gizle" #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Kullan:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "Satır içi sarkı/sanatçı etiketi" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" "Şarkı ve Sanatçı etiketlerini ilerleme çubuğundan önce göster. Seçili " "değilse, etiketler ilerleme çubuğunun üzerinde gösterilir." #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "Kompakt ilerleme göstergesi" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "Yeniden tasarlanan kenar çubuğu" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "Yeniden tasarlanan eklenti yönetimi" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "Önceki parçayı çal" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "Çalmayı duraklat veya devam et" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "Sonraki parçayı çal" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "Çalan parçayı tekrarla" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "Parçalar karışık bir şekilde çalacak" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "Geri Sar" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "Geçerli parçayı 5 saniye geriye sarın." #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "İleri Sar" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "Geçerli parçayı 10 saniye ileri sarın." #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "Oynatım Konrollerini Göster" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "Kaynak araç çubuğunu göster veya gizle" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "Alternatif Araç çubuğu" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" #: alttoolbar_controller.py:187 msgid "View All" msgstr "Tümünü Göster" #: alttoolbar_controller.py:343 msgid "Import" msgstr "İçeri aktar" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "İstasyonlar" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "En Beğenilenler" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "Son Eklenen" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "Son Çalınan" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Podcasts" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "Bu eklenti etkinleştirilemez" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "Eklenti Ayarları" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "Eklenti hakkında" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "Sürüm:" #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "Geliştirici:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "Tasarımcı:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "Yardım" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "Anasayfa" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "Yeniden başlat" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "Yerel Koleksiyon" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "Çevrimiçi kaynaklar" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "Diğer kaynaklar" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "Oynatma Listesi" #: alttoolbar_type.py:986 msgid "Browse" msgstr "Tarayıcı" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "Tüm parçaları tekrarla" alternative-toolbar-0.16.3/po/uk.po000066400000000000000000000261741264666532500172050ustar00rootroot00000000000000# Ukrainian translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-05-22 15:21+0000\n" "Last-Translator: JF-X \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "Композиції" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "Категорії" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "Перезавантажити програвач, щоб зміни набули чинності." #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "Панель інструментів:" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "Найкраще пасує для настільних\n" "середовищ, таких як: Gnome та Elementary." #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "Сучасна" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "Використовувати компактні елементи керування" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" "Відображати керування відтворенням на панелі інструментів у візуально " "компактному стилі, замість стандартного стилю rhytmbox.\n" "Завжди увімкнене для режиму сучасної панелі інструментів." #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "Показати:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "Альбом/жанр/рік для композиції, що відтворюється" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "Відображати альбом/жанр/рік замість композиція-виконавець-альбом. Корисне " "для таких настільних середовищ у яких композиція-виконавець-альбом вже " "відображається у вікні заголовку." #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "Підказки для елементів керування відтворенням." #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "Показати або приховати підказки для елементів керування відтворенням." #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "Керування гучністю" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "Показати або приховати керування гучністю." #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "Керування відтворенням" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "" "Показати або приховати елементи керування відтворенням при завантаженні " "програвача." #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "Використовувати:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "Вмістити мітку композиція/виконавець" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" "Відображати мітки Композиція та Виконавець перед повзунком поступу " "відтворення." #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "Компактний повзунок поступу відтворення" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" "Відображати та використовувати компактний повзунок поступу відтворення - " "корисний, якщо вбудована тема повзунка поступу відтвореня є візуально надто " "великою." #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "Покращена бічна панель" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" "Показати або приховати змінену бічну панель програвача. Вона оснащена " "поліпшеними символічними іконками, кращою організацією джерел та здатністю " "до розгортання та згортання категорій." #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "Покращене діалогове вікно додатків" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" "Показати або приховати змінене діалогове вікно додатків. Воно оснащене " "перемикачами замість прапорців та вбудованою панеллю інструментів з " "символічними іконками. Краще всього працює з настільними середовищами на " "базі Gnome." #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "Відтворити попередню композицію" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "Поновити або призупинити відтворення" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "Відтворити наступну композицію" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "Повторити поточну композицію" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "Відтворити композицію в довільному порядку" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "Перемотати назад" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "Перемотати назад, поточну композицію, на 5 секунд" #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "Перемотати вперед" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "Перемотати вперед, поточну композицію, на 10 секунд" #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "Показати панель інструментів керування відтворенням" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "Показати або приховати панель інструментів керування відтворенням" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "Показати панель інструментів джерел" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "Показати або приховати панель інструментів джерел" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "Альтернативна панель інструментів" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" "Замінити велику панель інструментів Rhythmbox оформленням зі сторони " "користувача або компактною панеллю інструментів, яка може бути прихована" #: alttoolbar_controller.py:187 msgid "View All" msgstr "Показати всі" #: alttoolbar_controller.py:343 msgid "Import" msgstr "Імпортувати" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "Станції" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "Мої Високо Оцінені" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "Нещодавно долучені" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "Нещодавно відтворені" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Радіотрансляції" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "Додаток не може бути активований" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "Налаштування додатків" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "Про цей додаток" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "Версія: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "Розробник:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "Дизайнер:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "Допомога" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "Домашня сторінка" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "Перезавантажити" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "Локальні колекції" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "Онлайн джерела" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "Інші джерела" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "Списки відтворення" #: alttoolbar_type.py:986 msgid "Browse" msgstr "Огляд" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "Повторити усі композиції" alternative-toolbar-0.16.3/po/zh_CN.po000066400000000000000000000144261264666532500175640ustar00rootroot00000000000000# Chinese (Simplified) translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-05-22 16:19+0000\n" "Last-Translator: Xiaoxing Ye \n" "Language-Team: Chinese (Simplified) \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "歌曲" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "类别" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "重新启动播放器来应用设置。" #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "工具栏:" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "适用于类似 Gnome 和\n" "Elementary 等桌面环境。" #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "现代" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "显示:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "" #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "音量控制" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "" #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "" #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "使用:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "" #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "" #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" #: alttoolbar_controller.py:187 msgid "View All" msgstr "" #: alttoolbar_controller.py:343 msgid "Import" msgstr "" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "" #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "" #: alttoolbar_type.py:986 msgid "Browse" msgstr "" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "" alternative-toolbar-0.16.3/po/zh_TW.po000066400000000000000000000203541264666532500176130ustar00rootroot00000000000000# Chinese (Traditional) translation for alternative-toolbar # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the alternative-toolbar package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: alternative-toolbar\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-22 13:08+0100\n" "PO-Revision-Date: 2015-05-27 17:27+0000\n" "Last-Translator: Christian Y. S. Chung \n" "Language-Team: Chinese (Traditional) \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-07-15 21:48+0000\n" "X-Generator: Launchpad (build 17628)\n" #: tmp/altlibrary.ui.h:1 alttoolbar_type.py:923 msgid "Songs" msgstr "歌曲" #: tmp/altlibrary.ui.h:2 alttoolbar_type.py:928 msgid "Categories" msgstr "分類" #: tmp/altpreferences.ui.h:1 msgid "Restart the player for the changes to take effect." msgstr "請重新啟動播放器來讓變動生效。" #: tmp/altpreferences.ui.h:2 msgid "Toolbar:" msgstr "工具列:" #: tmp/altpreferences.ui.h:3 msgid "" "Best suitable for desktop\n" "environments like Gnome and Elementary." msgstr "" "最適合 Gnome、Elementary\n" "這類的桌面環境。" #: tmp/altpreferences.ui.h:5 msgid "Modern" msgstr "現代" #: tmp/altpreferences.ui.h:6 msgid "Use compact controls" msgstr "使用精簡控制項" #: tmp/altpreferences.ui.h:7 msgid "" "Display the playback controls in the toolbar in visually compact style " "instead of the standard rhythmbox style.\n" "Always enabled for modern toolbar mode." msgstr "" "在工具列中以精簡的視覺風格顯示播放控制項,而非標準的 rhythombox 風格。\n" "現代工具列模式下都會啟用這個項目。" #: tmp/altpreferences.ui.h:9 msgid "Show:" msgstr "顯示:" #: tmp/altpreferences.ui.h:10 msgid "Album/genre/year for playing song" msgstr "播放歌曲的專輯/曲風/年代" #: tmp/altpreferences.ui.h:11 msgid "" "Display album/genre/year instead of song-artist-album. Useful for those " "desktop-environments where song-artist-album is already displayed in the " "window title." msgstr "" "顯示專輯/曲風/年代而非曲目-演出者-專輯。對於那些已在視窗標題中顯示歌曲-演出" "者-專輯的桌面環境來說很有用。" #: tmp/altpreferences.ui.h:12 msgid "Tooltips for the playback controls" msgstr "播放控制項的提示框" #: tmp/altpreferences.ui.h:13 msgid "Show or hide the tooltips for the playback controls." msgstr "顯示或隱藏播放控制項的提示框。" #: tmp/altpreferences.ui.h:14 msgid "Volume control" msgstr "音量控制" #: tmp/altpreferences.ui.h:15 msgid "Show or hide the volume control." msgstr "顯示或隱藏音量控制項。" #: tmp/altpreferences.ui.h:16 msgid "Playback controls" msgstr "播放控制項" #: tmp/altpreferences.ui.h:17 msgid "Show or hide the playing controls on player startup." msgstr "播放器啟動時是要顯示或隱藏播放控制項。" #: tmp/altpreferences.ui.h:18 msgid "Use:" msgstr "使用:" #: tmp/altpreferences.ui.h:19 msgid "Inline song/artist label" msgstr "列內歌曲/演出者標籤" #: tmp/altpreferences.ui.h:20 msgid "" "Display Song and Artist labels before the progress slider. If not checked, " "they are displayed above the progress slider." msgstr "" "在進度滑動列的前方顯示歌曲與演出者標籤。若未勾選,則在進度滑動列上方顯示。" #: tmp/altpreferences.ui.h:21 msgid "Compact progress slider" msgstr "精簡進度滑動列" #: tmp/altpreferences.ui.h:22 msgid "" "Display and use a compact track progress slider - useful where the default " "theme progress slider is visually too large." msgstr "" "顯示並使用精簡的簡曲目進度滑動列 - 若預設進度滑動列看起來過於巨大時很有用。" #: tmp/altpreferences.ui.h:23 msgid "Enhanced sidebar" msgstr "強化式側邊欄" #: tmp/altpreferences.ui.h:24 msgid "" "Show or hide redesigned sidebar for the player. It features improved " "symbolic icons, better sources organisation and ability to expand and " "collapse categories." msgstr "" "顯示或隱藏重新設計過的播放器側邊欄。它擁有改良過的符號化圖示、來源整理得更" "好、具備展開與收納分類的能力等。" #: tmp/altpreferences.ui.h:25 msgid "Enhanced plugins dialog" msgstr "強化式外掛對話盒" #: tmp/altpreferences.ui.h:26 msgid "" "Show or hide redesigned plugins dialog. It features switches instead of " "checkboxes and inline toolbar with symbolic icons . Works best with Gnome " "based desktop environments." msgstr "" "顯示或隱藏重新設計過的外掛對話盒。它採用切換開關而非勾選方框,並採用符號化圖" "示的列內工具列。這個功能與 Gnome 為基礎的桌面環境最搭。" #: tmp/alttoolbar.ui.h:1 msgid "Play the previous track" msgstr "播放上一首曲目" #: tmp/alttoolbar.ui.h:2 msgid "Resume or pause the playback" msgstr "繼續播放或暫停播放" #: tmp/alttoolbar.ui.h:3 msgid "Play the next track" msgstr "播放下一首曲目" #: tmp/alttoolbar.ui.h:4 alttoolbar_repeat.py:96 alttoolbar_repeat.py:207 msgid "Repeat the current track" msgstr "重複播放目前曲目" #: tmp/alttoolbar.ui.h:5 msgid "Play the tracks in random order" msgstr "隨機播放曲目" #: alternative-toolbar.py:199 msgid "Seek Backward" msgstr "往回搜尋" #: alternative-toolbar.py:201 msgid "Seek backward, in current track, by 5 seconds." msgstr "往回搜尋,目前曲目,一次倒退 5 秒。" #: alternative-toolbar.py:203 msgid "Seek Forward" msgstr "往前搜尋" #: alternative-toolbar.py:205 msgid "Seek forward, in current track, by 10 seconds." msgstr "往前搜尋,目前曲目,一次前進 10 秒。" #: alternative-toolbar.py:212 msgid "Show Play-Controls Toolbar" msgstr "顯示播放控制項工具列" #: alternative-toolbar.py:215 msgid "Show or hide the play-controls toolbar" msgstr "顯示或隱藏播放控制項工具列" #: alternative-toolbar.py:218 msgid "Show Source Toolbar" msgstr "顯示來源工具列" #: alternative-toolbar.py:221 msgid "Show or hide the source toolbar" msgstr "顯示或隱藏來源工具列" #. define .plugin text strings used for translation #: alternative-toolbar.py:479 alttoolbar_plugins.py:364 msgid "Alternative Toolbar" msgstr "替代工具列" #: alternative-toolbar.py:481 msgid "" "Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact " "Toolbar which can be hidden" msgstr "" "使用可隱藏的客戶端裝飾工具列或精簡工具列,來取代 Rhythmbox 的大型工具列" #: alttoolbar_controller.py:187 msgid "View All" msgstr "檢視全部" #: alttoolbar_controller.py:343 msgid "Import" msgstr "匯入" #: alttoolbar_controller.py:520 msgid "Stations" msgstr "電臺" #: alttoolbar_controller.py:546 msgid "Libre.fm" msgstr "Libre.fm" #: alttoolbar_controller.py:586 msgid "My Top Rated" msgstr "我的最高評價" #: alttoolbar_controller.py:589 msgid "Recently Added" msgstr "最近加入" #: alttoolbar_controller.py:592 msgid "Recently Played" msgstr "最近播放" #: alttoolbar_controller.py:624 msgid "Podcasts" msgstr "Podcast" #: alttoolbar_plugins.py:115 msgid "The plugin cannot be enabled" msgstr "無法啟用該外掛" #: alttoolbar_plugins.py:231 msgid "Configure Plugins" msgstr "設定外掛" #: alttoolbar_plugins.py:312 msgid "About this plugin" msgstr "關於此外掛" #: alttoolbar_plugins.py:344 msgid "Version: " msgstr "版本: " #: alttoolbar_plugins.py:369 msgid "Developer:" msgstr "開發者:" #: alttoolbar_plugins.py:379 msgid "Designer:" msgstr "設計者:" #: alttoolbar_plugins.py:400 msgid "Help" msgstr "求助" #: alttoolbar_plugins.py:408 msgid "Homepage" msgstr "首頁" #: alttoolbar_preferences.py:281 msgid "Restart" msgstr "重新啟動" #: alttoolbar_sidebar.py:76 msgid "Local collection" msgstr "本地端收藏集" #: alttoolbar_sidebar.py:77 msgid "Online sources" msgstr "線上來源" #: alttoolbar_sidebar.py:78 msgid "Other sources" msgstr "其他來源" #: alttoolbar_sidebar.py:79 msgid "Playlists" msgstr "播放清單" #: alttoolbar_type.py:986 msgid "Browse" msgstr "瀏覽" #: alttoolbar_repeat.py:94 alttoolbar_repeat.py:187 msgid "Repeat all tracks" msgstr "重覆所有曲目" alternative-toolbar-0.16.3/readme.html000066400000000000000000000167401264666532500177310ustar00rootroot00000000000000
alternative-toolbar Version Support
Replace the Rhythmbox large toolbar with a Client-Side Decorated or Compact toolbar which can be hidden. v0.16.3 Flattr This! PayPal Donate
Email foss.freedom@gmail.com
Website https://github.com/fossfreedom

Replace the current standard toolbar:

pic

with either a compact toolbar:

pic

or with the new Gnome-style client-side decoration:

pic

Features

  • Move columns via Drag-and-Drop using a views' column headers
  • Toggle compact or standard toolbar on or off
  • Volume Control can be switched on or off for all toolbars
  • Source Toolbars can be toggled (CTRL + T)
  • Seek forward (fast-forward) through a track (ALT + Right Arrow)
  • Seek backward through a track (ALT + Left Arrow)
  • Redesigned sidebar
  • Redesigned plugin window, about box and plugin preferences window
  • Repeat button can now switch between repeat tracks and repeat-one-song mode
  • Plugin translated completely into 15 languages and locales (10 more on the way)

The plugin preferences allows you to define which toolbars are used:

Plugin

Keyboard shortcuts

| Key | Action | |---------------------|----------------------------------------------| | CTRL + T | Toggled source toolbar. | | CTRL + F | Toggle search bar. | | CTRL + P | Start/Stop current track. | | CTRL + R | Open repeat menu. | | CTRL + K | Toggle play queue. | | CTRL + A/? | Select all songs in playlist. | | ALT + Right Arrow | Seek forward (fast-forward) through a track. | | ALT + Left Arrrow | Seek backward through a track. |

After installation enable the plugin in the plugins window:

Enable plugin

If you need to enable the player controls & source menu, this can be done from the menu:

  • Menu ->
    • View ->
      • Show Play-Controls Toolbar
      • Show Source and Media Toolbars

Installation

Latest Stable Release via source code compilation Navigate to the archive and grab the newest .tar.gz from https://github.com/fossfreedom/alternative-toolbar/releases bash cd ~/Downloads sudo apt-get install intltool tar -zxvf alternative-toolbar*.tar.gz cd alternative-toolbar* ./autogen.sh --prefix=/usr make sudo make install

This will install a system-wide installation. If you have a previous locally installed version of the plugin, remove it:

rm -rf ~/.local/share/rhythmbox/plugins/alternative-toolbar

Install Latest Development Release via Git bash cd ~/Downloads sudo apt-get install intltool git git clone https://github.com/fossfreedom/alternative-toolbar.git cd alternative-toolbar ./autogen.sh --prefix=/usr make sudo make install

This will install a system-wide installation. If you have a previous locally installed version of the plugin, remove it:

rm -rf ~/.local/share/rhythmbox/plugins/alternative-toolbar

Ubuntu PPA - latest stable release

If you are using Ubuntu you can install alternative-toolbar via a PPA. bash sudo add-apt-repository ppa:fossfreedom/rhythmbox-plugins sudo apt-get update sudo apt-get install rhythmbox-plugin-alternative-toolbar

Arch AUR - latest development release

If you are using Arch you can install alternative-toolbar via the rhythmbox-plugin-alternative-toolbar-git package

Gentoo ebuild

If you are using Gentoo you can install alternative-toolbar by adding the ebuild located in the gentoo branch gentoo/x11-plugins/alternative-toolbar to your local overlay (/usr/local/portage).

i.e.

``` git clone https://github.com/fossfreedom/alternative-toolbar -b gentoo

add the ebuild

git checkout master ```

Use the following to ebuild

$ ebuild alternative-toolbar-9999.ebuild digest $ emerge alternative-toolbar

To uninstall.

If installed via Git you need the original code to uninstall the plugin. bash cd ~/Downloads/alternative-toolbar* sudo make uninstall

Contribute

Please help out with translating

We need you to help us translate the english text to your native language.

Don't worry - it is easier that you think. Just visit:

  • https://translations.launchpad.net/alternative-toolbar

Remember to set your preferred language and then just submit your translation.

Credits

Thank you to:

  • me4oslav - design inspiration for the header-bar vision
  • our Translators: Launchpad Translation team
  • Julian Richen - revamped README
  • Ikey Doherty - AutoTools installer

As well as:

  • sergioad - for the initial translation (spanish) used for testing translations
  • Thanks to the rhythmbox-seek project for the track-seeking code.
  • Thanks to the repeat-one-song project for the repeat-one-song code
  • gipawu - improved progress slider code
alternative-toolbar-0.16.3/schema/000077500000000000000000000000001264666532500170365ustar00rootroot00000000000000alternative-toolbar-0.16.3/schema/org.gnome.rhythmbox.plugins.alternative_toolbar.gschema.xml000066400000000000000000000061051264666532500326250ustar00rootroot00000000000000 0 Type of display Type of display false Start toolbar in hidden state Start toolbar in hidden state true Show compact toolbar Show compact toolbar false Show album/genre/year for playing label Show album/genre/year for playing label false volume-control volume-control true inline album label display album label before progress bar instead of above it false compact progressbar Use the compact progressbar instead of the stock progress bar true use the enhanced sidebar Use the enhanced sidebar rather than the stock sidebar '{1:True}' expanders status expanders open or close status true show tooltips Show or hide tooltips used in the plugin true show enhanced plugins dialog Use the enhanced plugins dialog 2 Repeat Button Type Icon and functionality for the repeat toggle-button true show source toolbar Show or hide source toolbar alternative-toolbar-0.16.3/ui/000077500000000000000000000000001264666532500162135ustar00rootroot00000000000000alternative-toolbar-0.16.3/ui/altlibrary.ui000066400000000000000000000043611264666532500207230ustar00rootroot00000000000000 True False True True False True Songs True True False 0 True False True True 1 Categories True True False 0 True False library_song_radiobutton True True 1 False True 0 alternative-toolbar-0.16.3/ui/altpreferences.ui000066400000000000000000000405641264666532500215650ustar00rootroot00000000000000 True False 10 10 vertical 5 True False vertical 5 True True False 5 False 6 end True False Restart the player for the changes to take effect. True True 5 0 False False 0 False True False dialog-information-symbolic False True 0 False False 0 False True 0 True False 6 0 Toolbar: False True 1 True False 5 True False Best suitable for desktop environments like Gnome and Elementary. Modern False True 0 True True Best suitable for desktop environments like Gnome and Elementary. False True end 1 True True 5 2 Use compact controls True True False Display the playback controls in the toolbar in visually compact style instead of the standard rhythmbox style. Always enabled for modern toolbar mode. 0 True False True 3 True False 6 6 0 Show: False True 4 Album/genre/year for playing song True True False Display album/genre/year instead of song-artist-album. Useful for those desktop-environments where song-artist-album is already displayed in the window title. 0 True False True 5 Tooltips for the playback controls True True False Show or hide the tooltips for the playback controls. 0 True False True 6 Volume control True True False Show or hide the volume control. 0 True False True 7 Playback controls True True True Show or hide the playing controls on player startup. 0 True False True 8 False True 5 0 True False vertical 5 True False 6 6 0 Use: False True 0 Inline song/artist label True True False Display Song and Artist labels before the progress slider. If not checked, they are displayed above the progress slider. 0 True False True 1 Compact progress slider True True False Display and use a compact track progress slider - useful where the default theme progress slider is visually too large. 0 True False True 2 Enhanced sidebar True True False Show or hide redesigned sidebar for the player. It features improved symbolic icons, better sources organisation and ability to expand and collapse categories. 0 True False True 3 Enhanced plugins dialog True True False Show or hide redesigned plugins dialog. It features switches instead of checkboxes and inline toolbar with symbolic icons . Works best with Gnome based desktop environments. 0 True False True 4 True False vertical False True 5 5 False True 1 alternative-toolbar-0.16.3/ui/alttoolbar.ui000066400000000000000000000343001264666532500207150ustar00rootroot00000000000000 38 False False False False False 12 True False False False Play the previous track False 5 media-skip-backward-symbolic False True 0 False False Resume or pause the playback False 5 media-playback-start-symbolic False True 1 False False Play the next track False 5 media-skip-forward-symbolic False True 2 False False False False 12 True True False False False True 12 12 False True 0 False 6 18 vertical True False True 1 False True vertical True False True 0 0 end False True 0 True False 12 True False 0 True False False 0 False True 1 False True 2 True False 4 True True False False 3 True False False True False True True True Repeat the current track 5 True False 5 media-playlist-repeat-symbolic False True 1 True False Play the tracks in random order False 5 media-playlist-shuffle-symbolic False True 2 False False False 5 9 True False True True True False vertical button audio-volume-muted-symbolic audio-volume-high-symbolic audio-volume-low-symbolic audio-volume-medium-symbolic + True True none - True True none False True 0 False False