pax_global_header00006660000000000000000000000064135602611540014515gustar00rootroot0000000000000052 comment=e23a68d42cad37f0e2d4798df38cdc9690f16795 celluloid-0.18/000077500000000000000000000000001356026115400134215ustar00rootroot00000000000000celluloid-0.18/.github/000077500000000000000000000000001356026115400147615ustar00rootroot00000000000000celluloid-0.18/.github/CONTRIBUTING.md000066400000000000000000000013421356026115400172120ustar00rootroot00000000000000Reporting Bugs ============== - Make sure you're using the latest release. - If possible, also check if the problem has already been fixed in git master. - Don't report multiple unrelated/barely related bugs in one issue. - Attach a log file. - You can make celluloid print log messages by running `G_MESSAGES_DEBUG=all celluloid` - If the issue involves crashing, include a backtrace in the report. - You can create a backtrace by running `gdb -ex 'set pagination off' -ex run -ex bt celluloid` and perform the action that triggers the crash. - If the issue is a regression, it would be very helpful if you could perform a [bisect](https://git-scm.com/docs/git-bisect) to locate the commit that introduces the regression. celluloid-0.18/.github/ISSUE_TEMPLATE.md000066400000000000000000000001731356026115400174670ustar00rootroot00000000000000Overview Description: Steps to Reproduce: 1. 2. 3. Actual Results: Expected Results: Version: Additional Information: celluloid-0.18/.gitignore000066400000000000000000000014351356026115400154140ustar00rootroot00000000000000# Files generated by autotools /autom4te.cache /aclocal.m4 /compile /configure /configure.sub /config.* /depcomp /install-sh /intltool-* /ltmain.sh /missing /ar-lib /libtool /test-driver /stamp-h1 /m4 Makefile.in.in Makefile.in Makefile config.* po/POTFILES po/stamp-it /po/Makevars.template /po/*~ /po/*.sed /po/*.sin /po/*.header /po/Rules-quot /ABOUT-NLS # Files generated by `make` *.o *.stamp *.la *.so *.dll *.a *.exe *.lo *.log *.trs *.test *.tar.xz .deps/ .libs/ data/*.valid data/celluloid.appdata.xml data/celluloid.desktop data/org.gnome-mpv.gschema.xml data/io.github.celluloid_player.Celluloid.appdata.xml data/io.github.celluloid_player.Celluloid.desktop po/celluloid.pot po/*.gmo po/.intltool-merge-cache .dirstamp src/celluloid src/authors.h src/marshal.* src/mpris/mpris_gdbus.* celluloid-0.18/AUTHORS000066400000000000000000000004731356026115400144750ustar00rootroot00000000000000# Feel free to add/edit your name below. # The names in this file will be shown in the about dialog. # Format: name # is optional. Connor Duncan Gaurav Narula Harenome Ranaivoarivony Razanajato Michael Heyns Mingye Wang (Arthur2e5) Patrick Griffis Sun gipawu gnome-mpv tista500 xuzhen celluloid-0.18/COPYING000066400000000000000000001045141356026115400144610ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . celluloid-0.18/Makefile.am000066400000000000000000000027571356026115400154700ustar00rootroot00000000000000AUTOMAKE_OPTIONS = foreign SUBDIRS = src data docs po EXTRA_DIST = README.md AUTHORS meson.build docs/meson.build meson-post-install.py po/meson.build UPDATE_DESKTOP = update-desktop-database -q || : UPDATE_ICON = gtk-update-icon-cache -q $(datadir)/icons/hicolor/ || : # Ensure that the dist tarball does not contain own/group from build system TAR_OPTIONS = --owner=0 --group=0 export TAR_OPTIONS # Extract version numbers in appdata XML and the main meson build file APPDATA_VERSION = $(shell xmllint $(top_srcdir)/data/io.github.celluloid_player.Celluloid.appdata.xml.in \ --xpath /component/releases/release/@version | \ sed 's/version="\([^s]\+\)"/\1/g;s/ /\n/g' | \ sort -rn | \ head -1) MESON_VERSION = $(shell $(AWK) -F "'" \ '/\yversion:/{print $$2}' \ $(top_srcdir)/meson.build) # Abort if the version numbers are not the same dist-hook: if [ "$(APPDATA_VERSION)" != "$(VERSION)" -o \ "$(MESON_VERSION)" != "$(VERSION)" ]; \ then \ echo "Version numbers in appdata XML, meson.build, and" \ "configure.ac do not match" 1>&2; \ exit 1; \ fi # Test building with Meson distcheck-hook: mkdir $(PACKAGE)-$(VERSION)/_build/meson \ $(PACKAGE)-$(VERSION)/_inst/meson && \ cd $(PACKAGE)-$(VERSION) && \ meson _build/meson \ --prefix $(abs_top_srcdir)/$(PACKAGE)-$(VERSION)/_inst/meson && \ ninja -C _build/meson install && \ rm -rf _build/meson _inst/meson install-data-hook: $(UPDATE_DESKTOP) $(UPDATE_ICON) uninstall-hook: $(UPDATE_DESKTOP) $(UPDATE_ICON) celluloid-0.18/README.md000066400000000000000000000137731356026115400147130ustar00rootroot00000000000000# Celluloid Celluloid (formerly GNOME MPV) is a simple GTK+ frontend for mpv. Celluloid interacts with mpv via the client API exported by libmpv, allowing access to mpv's powerful playback capabilities. ![Screenshot](https://celluloid-player.github.io/images/screenshot-0.png) ## Dependencies - appstream-glib[[1]](#note1) (build) - autoconf >= 2.69[[1]](#note1) (build) - autoconf-archive[[1]](#note1) (build) - automake >= 1.12[[1]](#note1) (build) - pkg-config (build) - gcc (build) - glib >= 2.44 - gtk >= 3.22 - mpv >= 0.27 - epoxy - lua (optional) - youtube-dl (optional) [1]: Not required when building from release tarballs ## Installation ### GNU/Linux packages - Arch Linux: https://www.archlinux.org/packages/celluloid - Arch Linux (Git): https://aur.archlinux.org/packages/celluloid-git - Debian testing: https://packages.debian.org/testing/gnome-mpv - Debian unstable: https://packages.debian.org/sid/gnome-mpv - Fedora (rpmfusion): https://admin.rpmfusion.org/pkgdb/package/free/celluloid/ - OpenSUSE: https://software.opensuse.org/package/celluloid - Gentoo: https://packages.gentoo.org/packages/media-video/gnome-mpv - Guix: http://guix.info/packages/gnome-mpv-0.16 - Solus: https://packages.getsol.us/shannon/g/gnome-mpv/ - Ubuntu: https://launchpad.net/~xuzhen666/+archive/ubuntu/gnome-mpv ### Flatpak [Flatpak](https://flatpak.org) packages support multiple distributions and are sandboxed. Flatpak 0.9.5+ is recommended for best integration. Stable releases are hosted on [Flathub](https://flathub.org): ```sh flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak install flathub io.github.celluloid_player.Celluloid ``` Development versions are also packaged: ```sh flatpak install https://dl.tingping.se/flatpak/gnome-mpv.flatpakref ``` ### Source code Run the following command in the source code directory to build and install: ```sh meson build && cd build && ninja && sudo ninja install ``` Alternatively, you can use Autotools: ```sh ./autogen.sh && make && sudo make install ``` When building from release tarballs, replace `./autogen.sh` with `./configure`: ```sh ./configure && make && sudo make install ``` ## Usage ### Opening files There are 4 ways to open files in Celluloid. 1. Passing files and/or URIs as command line arguments. 2. Using the file chooser dialog box, accessible via the "Open" menu item. 3. Typing URI into the "Open Location" dialog box, accessible via the menu item with the same name. 4. Dragging and dropping files or URIs onto Celluloid. ### Manipulating playlist The playlist is hidden by default. To show the playlist, click the "Playlist" menu item or press F9. Files can be added by dragging and dropping files or URIs onto the playlist. Dropping files or URIs onto the video area will replace the content of the playlist. Playlist files or online playlists (eg. YouTube's playlist) will be automatically expanded into individual items when loaded. Items in the playlist can be reordered via drag-and-drop. To remove items from the playlist, select the item by clicking on it then press the delete button on your keyboard. ### Configuration Celluloid can be configured using the preferences dialog accessible via the "Preferences" menu item. Additional configuration options can be set from an external file using the same syntax as mpv's `mpv.conf`. See mpv's man page for the full list of options. The file must be specified and enabled in the preferences dialog under the "MPV Configuration" section. Options can also be set using the "Extra MPV Options" text box in the preferences dialog. The syntax used is the same as mpv's command line options. ### User Scripts Celluloid can use most mpv user scripts as-is. Some user scripts may define keybindings that conflict with Celluloid, in which case you'll need to resolve the conflict by explicitly defining new keybindings using `input.conf`. See [mpv's manual](https://mpv.io/manual/stable/#lua-scripting-[,flags]]%29) for more details. User scripts can be installed by switching to the "Plugins" tab in the preferences dialog and dropping the files there. A list of mpv user scripts can be found [here](https://github.com/mpv-player/mpv/wiki/User-Scripts). ### Keybindings Celluloid defines a set of keybindings in the macro `DEFAULT_KEYBINDS`, which can be found in [src/gmpv_def.h](https://github.com/celluloid/celluloid/blob/master/src/gmpv_def.h). The syntax used is exactly the same as mpv's `input.conf`. These keybindings are applied on top of default keybindings provided by mpv. Additional keybindings can be defined in an external file using mpv's `input.conf` syntax. The file can be set in the preferences dialog under the "Keybindings" section. ## Contributing Translations Celluloid uses [Zanata](https://zanata.org) to coordinate translations. You can find Celluloid's page [here](https://translate.zanata.org/iteration/view/celluloid/master). To start translating, follow the instructions [here](http://docs.zanata.org/en/release/user-guide/translator-guide/). If you'd like to add a new language, open an issue on GitHub. While translating, you will find the string `translator-credits`. You should not translate this string. Instead, you should put your name, and optionally your email address, in the following format: `FirstName LastName `. Your name will then appear in the About dialog when your translation is active. ## License Celluloid 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. Celluloid 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 Celluloid. If not, see . celluloid-0.18/autogen.sh000077500000000000000000000011301356026115400154150ustar00rootroot00000000000000#!/bin/sh # Run this to generate all the initial makefiles, etc. srcdir=`dirname $0` test -z "$srcdir" && srcdir=. (test -f $srcdir/configure.ac) || { echo -n "**Error**: Directory "\`$srcdir\'" does not look like the top-level directory" exit 1 } aclocal --install -I m4 || exit 1 autoreconf --force --install -Wno-portability || exit 1 if [ "$NOCONFIGURE" = "" ]; then $srcdir/configure "$@" || exit 1 if [ "$1" = "--help" ]; then exit 0 else echo "Now type \`make\' to compile" || exit 1 fi else echo "Skipping configure process." fi set +x celluloid-0.18/configure.ac000066400000000000000000000056051356026115400157150ustar00rootroot00000000000000AC_PREREQ([2.69]) AC_INIT( [celluloid], [0.18], [http://github.com/celluloid-player/celluloid/issues], [celluloid], [http://github.com/celluloid/celluloid] ) AC_CONFIG_SRCDIR([src/celluloid-main.c]) AC_CONFIG_MACRO_DIR([m4]) AC_USE_SYSTEM_EXTENSIONS AM_INIT_AUTOMAKE([1.12 tar-pax dist-xz no-dist-gzip subdir-objects foreign -Wall -Wno-portability]) AM_SILENT_RULES([yes]) AM_MAINTAINER_MODE([enable]) # i18n GETTEXT_PACKAGE=celluloid AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [GETTEXT package name]) AM_GNU_GETTEXT_VERSION([0.20]) AM_GNU_GETTEXT([external]) GLIB_GSETTINGS AC_ARG_ENABLE([debug], AS_HELP_STRING([--enable-debug], [turn on debugging]), [enable_debug=$enableval], [enable_debug=no]) AC_DEFUN([GM_CHECK_MACRO], [m4_ifndef([$1], [m4_fatal($1[ is not defined. Is ]$2[ installed?])])]) GM_CHECK_MACRO([AX_APPEND_COMPILE_FLAGS], [autoconf-archive]) GM_CHECK_MACRO([AX_APPEND_LINK_FLAGS], [autoconf-archive]) GM_CHECK_MACRO([AX_REQUIRE_DEFINED], [autoconf-archive]) GM_CHECK_MACRO([APPSTREAM_XML], [appstream-glib]) APPSTREAM_XML AS_IF([test "x$enable_debug" = "xyes"], [ AX_APPEND_COMPILE_FLAGS([-O0 -g]) ], [ AX_APPEND_COMPILE_FLAGS([-O2]) ]) AX_APPEND_COMPILE_FLAGS([ \ -std=gnu99 \ -funsigned-char \ -fstack-protector-strong \ -fPIE \ -fPIC \ -Wall \ -Wextra \ -Wconversion \ -Winline \ -Wno-padded \ -Wno-unused-parameter \ -Wstrict-prototypes \ -Wmissing-prototypes \ -Werror=implicit-function-declaration \ -Werror=pointer-arith \ -Werror=init-self \ -Werror=format-security \ -Werror=format=2 \ -Werror=missing-include-dirs \ -Werror=date-time \ ]) AX_APPEND_LINK_FLAGS([ \ -pie \ -Wl,-z,relro \ -Wl,-z,now \ ]) # Checks for programs. AC_PROG_CC AC_PROG_CC_STDC AC_PROG_AWK AC_PROG_SED AC_PATH_PROG(GDBUS_CODEGEN, [gdbus-codegen], []) AC_PATH_PROG(GLIB_GENMARSHAL, [glib-genmarshal], []) AS_IF([test "x$GDBUS_CODEGEN" = "x"], [ AC_MSG_ERROR([Could not find gdbus-codegen]) ]) AS_IF([test "x$GLIB_GENMARSHAL" = "x"], [ AC_MSG_ERROR([Could not find glib-genmarshal]) ]) PKG_CHECK_MODULES(DEPS, [gtk+-3.0 >= 3.22.23 glib-2.0 >= 2.44 mpv >= 1.101 epoxy]) AC_SEARCH_LIBS([sqrt], [m]) AC_DEFINE([GLIB_VERSION_MIN_REQUIRED], [GLIB_VERSION_2_44], [Dont warn using older APIs]) AC_DEFINE([GLIB_VERSION_MAX_ALLOWED], [GLIB_VERSION_2_44], [Prevents using newer APIs]) AC_DEFINE([GDK_VERSION_MIN_REQUIRED], [GDK_VERSION_3_22], [Dont warn using older APIs]) AC_DEFINE([GDK_VERSION_MAX_ALLOWED], [GDK_VERSION_3_22], [Prevents using newer APIs]) # Checks for header files. AC_CHECK_HEADERS([string.h stdio.h stdlib.h locale.h],[],[ AC_MSG_ERROR([Could not find required headers]) ]) AC_CHECK_FUNCS([setlocale],[],[ AC_MSG_ERROR([Could not find required functions]) ]) AC_CONFIG_FILES([Makefile src/Makefile data/Makefile docs/Makefile po/Makefile.in]) AC_OUTPUT echo " $PACKAGE $VERSION prefix ........: $prefix debug .........: $enable_debug " celluloid-0.18/data/000077500000000000000000000000001356026115400143325ustar00rootroot00000000000000celluloid-0.18/data/Makefile.am000066400000000000000000000027751356026115400164010ustar00rootroot00000000000000gsettings_SCHEMAS = io.github.celluloid_player.Celluloid.gschema.xml io.github.GnomeMpv.gschema.xml @GSETTINGS_RULES@ appstream_in_files = io.github.celluloid_player.Celluloid.appdata.xml.in appstream_XML = $(appstream_in_files:.xml.in=.xml) %.appdata.xml: %.appdata.xml.in $(AM_V_GEN)$(MSGFMT) --xml --template $< -d $(top_srcdir)/po -o $@ @APPSTREAM_XML_RULES@ dbusservicedir = $(datadir)/dbus-1/services dbusservice_in_files = io.github.celluloid_player.Celluloid.service.in dbusservice_DATA = $(dbusservice_in_files:.service.in=.service) %.service: %.service.in Makefile $(AM_V_GEN) sed -e "s|\@bindir\@|$(bindir)|" $< > $@ desktopdir = $(datadir)/applications desktop_in_files = io.github.celluloid_player.Celluloid.desktop.in desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) %.desktop: %.desktop.in $(AM_V_GEN)$(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@ icondir = $(datadir)/icons/hicolor/scalable/apps icon_DATA = io.github.celluloid_player.Celluloid.svg symicondir = $(datadir)/icons/hicolor/symbolic/apps symicon_DATA = io.github.celluloid_player.Celluloid-symbolic.svg EXTRA_DIST = $(appstream_in_files) \ $(desktop_in_files) \ $(dbusservice_in_files) \ io.github.celluloid_player.Celluloid.svg \ io.github.celluloid_player.Celluloid-symbolic.svg \ io.github.GnomeMpv.gschema.xml \ io.github.celluloid_player.Celluloid.gschema.xml \ celluloid-mpris-gdbus.xml \ celluloid-marshal.lst \ meson.build DISTCLEANFILES = $(appstream_XML) $(desktop_DATA) $(dbusservice_DATA) celluloid-0.18/data/celluloid-marshal.lst000066400000000000000000000002371356026115400204610ustar00rootroot00000000000000VOID:POINTER,BOOLEAN VOID:STRING,POINTER VOID:INT,INT VOID:INT64,INT64 VOID:INT,STRING,STRING VOID:INT,POINTER VOID:BOOLEAN,BOOLEAN,POINTER,POINTER VOID:INT64 celluloid-0.18/data/celluloid-mpris-gdbus.xml000066400000000000000000000063451356026115400212720ustar00rootroot00000000000000 celluloid-0.18/data/io.github.GnomeMpv.gschema.xml000066400000000000000000000105421356026115400221030ustar00rootroot00000000000000 false Whether the settings has already been migrated from the previous version true Enable or disable dark theme true Enable or disable client-side decorations false Whether or not to use floating controls in windowed mode false Whether or not to autohide mouse cursor in windowed mode false Whether or not to use skip buttons for controlling playlist false Whether or not to make file chooser dialog remember last folder accessed false Whether or not to create new windows when there is already an instance '' Options to pass to mpv '' Path to mpv configuration file false Load or don't load mpv configuration file '' Path to mpv input configuration file false Load or don't load mpv input configuration file true Whether or not to enable MPRIS support true Whether or not to enable GNOME-Settings-Daemon-based media keys support true Whether or not to prefetch metadata for non-current playlist entries 640 Width of the window 480 Height of the window 1.0 Volume of player 250 Width of the playlist true Show or not show the controls false Show or not show the playlist '' URI of the last folder accessed celluloid-0.18/data/io.github.celluloid_player.Celluloid-symbolic.svg000066400000000000000000000062631356026115400260330ustar00rootroot00000000000000 image/svg+xml Gnome Symbolic Icon Theme Gnome Symbolic Icon Theme celluloid-0.18/data/io.github.celluloid_player.Celluloid.appdata.xml.in000066400000000000000000000130721356026115400262270ustar00rootroot00000000000000 io.github.celluloid_player.Celluloid CC-BY-SA-4.0 GPL-3.0+ Celluloid GTK+ frontend for mpv io.github.celluloid_player.Celluloid.desktop celluloid io.github.GnomeMpv.desktop

Celluloid is a simple media player that can play virtually all video and audio formats. It supports playlists and MPRIS2 media player controls. The design of Celluloid follows the GNOME Human Interface Guidelines, but can also be adapted for other systems that don't use client-side decorations (CSD). It is based on the mpv library and GTK.

Features:

  • Drag and drop playlist
  • Loading external mpv configuration files
  • MPRIS2 D-Bus interface

This release contains the following changes:

  • Add Persian translation by @danialbehzadi
  • Add Ukranian translation by @vl-nix
  • Add support for showing/hiding window decorations using the mpv option --border
  • Add menu item for opening discs
  • Block cursor autohide when volume popup is open in windowed mode
  • Fix crash with mpv 0.30

This listing is incomplete. See git log for complete changelog.

This release contains the following changes:

  • Rename project to Celluloid
  • Add Turkish translation by @TeknoMobil
  • Add Esperanto translation by @F3nd0
  • Migrate from opengl-cb to the new render API
  • Handle numpad keybindings
  • Handle unicode keybindings
  • Forward media key events to mpv
  • Add dconf key for controlling cursor speed at which controls are unhidden
  • Add option for suppressing playback errors

This listing is incomplete. See git log for complete changelog.

This release contains the following changes:

  • Split up the General tab in the preferences dialog
  • Improve behavior when toggling playlist under tiling window managers
  • Move app menu items to primary menu
  • Use separate MPRIS DBus connection for each window
  • Add support for MPRIS property LoopStatus
  • Add option --mpv-options for setting arbitrary mpv options from the command-line

This listing is incomplete. See git log for complete changelog.

This release contains the following changes:

  • Set default screenshot directory to XDG_PICTURES_DIR
  • Improve handling of --window-scale, --autofit, --autofit-larger, and --autofit-smaller
  • Add command line option for setting WM_ROLE
  • Add context menu item for removing playlist items
  • Add context menu item for copying location of playlist items

This listing is incomplete. See git log for complete changelog.

This release contains the following changes:

  • Add option to make skip buttons change playlist entries rather than chapters
  • Make the file chooser accept non-local locations
  • Add right-click menu entry for looping a single file
  • Handle property change events for fullscreen and window-scale
  • Add option to autohide mouse cursor in windowed mode

This listing is incomplete. See git log for complete changelog.

http://celluloid-player.github.io/images/screenshot-0.png The main window showing the application in action http://celluloid-player.github.io/images/screenshot-1.png The main window with CSD disabled http://celluloid-player.github.io/images/screenshot-2.png The main window with playlist open http://celluloid-player.github.io http://github.com/celluloid-player/celluloid/issues gnome-mpv_at_teknik.io
celluloid-0.18/data/io.github.celluloid_player.Celluloid.desktop.in000066400000000000000000000051731356026115400254720ustar00rootroot00000000000000[Desktop Entry] Version=1.0 Name=Celluloid GenericName=Multimedia Player Comment=Play movies and videos Exec=celluloid %U # Translators: This is an icon name, don't translate! Icon=io.github.celluloid_player.Celluloid Terminal=false Type=Application StartupNotify=true StartupWMClass=Celluloid DBusActivatable=true Categories=GTK;GNOME;AudioVideo;Player;Video;TV; # Translators: Search terms to find this application. Don't translate the semicolons! The list MUST also end with a semicolon! Keywords=Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv; MimeType=application/mpeg4-iod;application/mpeg4-muxcodetable;application/mxf;application/ogg;application/ram;application/sdp;application/streamingmedia;application/vnd.apple.mpegurl;application/vnd.ms-asf;application/vnd.rn-realmedia;application/vnd.rn-realmedia-vbr;application/x-extension-m4a;application/x-extension-mp4;application/x-flac;application/x-flash-video;application/x-matroska;application/x-ogg;application/x-streamingmedia;audio/3gpp;audio/3gpp2;audio/aac;audio/ac3;audio/amr;audio/amr-wb;audio/basic;audio/dv;audio/eac3;audio/flac;audio/m4a;audio/midi;audio/mp1;audio/mp2;audio/mp3;audio/mp4;audio/mpeg;audio/mpegurl;audio/mpg;audio/ogg;audio/opus;audio/scpls;audio/vnd.dolby.heaac.1;audio/vnd.dolby.heaac.2;audio/vnd.dolby.mlp;audio/vnd.dts;audio/vnd.dts.hd;audio/vnd.rn-realaudio;audio/wav;audio/webm;audio/x-aac;audio/x-aiff;audio/x-ape;audio/x-flac;audio/x-gsm;audio/x-it;audio/x-m4a;audio/x-matroska;audio/x-mod;audio/x-mp1;audio/x-mp2;audio/x-mp3;audio/x-mpeg;audio/x-mpegurl;audio/x-mpg;audio/x-ms-asf;audio/x-ms-wma;audio/x-musepack;audio/x-pn-aiff;audio/x-pn-au;audio/x-pn-realaudio;audio/x-pn-wav;audio/x-real-audio;audio/x-realaudio;audio/x-s3m;audio/x-scpls;audio/x-shorten;audio/x-speex;audio/x-tta;audio/x-vorbis;audio/x-vorbis+ogg;audio/x-wav;audio/x-wavpack;audio/x-xm;video/3gp;video/3gpp;video/3gpp2;video/divx;video/dv;video/fli;video/flv;video/mp2t;video/mp4;video/mp4v-es;video/mpeg;video/mpeg-system;video/msvideo;video/ogg;video/quicktime;video/vnd.mpegurl;video/vnd.rn-realvideo;video/webm;video/x-avi;video/x-flc;video/x-fli;video/x-flv;video/x-m4v;video/x-matroska;video/x-mpeg;video/x-mpeg-system;video/x-mpeg2;video/x-ms-asf;video/x-ms-wm;video/x-ms-wmv;video/x-ms-wmx;video/x-msvideo;video/x-nsv;video/x-ogm+ogg;video/x-theora;video/x-theora+ogg;x-content/audio-cdda;x-content/audio-player;x-content/video-dvd;x-scheme-handler/mms;x-scheme-handler/mmsh;x-scheme-handler/rtmp;x-scheme-handler/rtp;x-scheme-handler/rtsp; X-KDE-Protocols=ftp,http,https,mms,rtmp,rtsp,sftp,smb Actions=new-window; [Desktop Action new-window] Name=New Window Exec=celluloid --new-window celluloid-0.18/data/io.github.celluloid_player.Celluloid.gschema.xml000066400000000000000000000115641356026115400256230ustar00rootroot00000000000000 false Whether the settings has already been migrated from the previous version true Enable or disable dark theme true Enable or disable client-side decorations false Whether or not to use floating controls in windowed mode false Whether or not to autohide mouse cursor in windowed mode 0 The minimum cursor speed at which floating controls will be unhidden. false Whether or not to use skip buttons for controlling playlist false Whether or not to make file chooser dialog remember last folder accessed false Whether or not to create new windows when there is already an instance "" Options to pass to mpv "" Path to mpv configuration file false Load or don't load mpv configuration file "" Path to mpv input configuration file false Load or don't load mpv input configuration file true Whether or not to enable MPRIS support true Whether or not to enable GNOME-Settings-Daemon-based media keys support true Whether or not to prefetch metadata for non-current playlist entries false Whether or not to display an error message when playback of a file ends with an error 640 Width of the window 480 Height of the window 1.0 Volume of player 250 Width of the playlist true Show or not show the controls false Show or not show the playlist "" URI of the last folder accessed celluloid-0.18/data/io.github.celluloid_player.Celluloid.service.in000066400000000000000000000001511356026115400254500ustar00rootroot00000000000000[D-BUS Service] Name=io.github.celluloid_player.Celluloid Exec=@bindir@/celluloid --gapplication-service celluloid-0.18/data/io.github.celluloid_player.Celluloid.svg000066400000000000000000000233271356026115400242140ustar00rootroot00000000000000 Adwaita Icon Template image/svg+xml GNOME Design Team Adwaita Icon Template celluloid-0.18/data/meson.build000066400000000000000000000037051356026115400165010ustar00rootroot00000000000000 schemadir = join_paths(get_option('datadir'), 'glib-2.0/schemas') install_data([ 'io.github.GnomeMpv.gschema.xml', 'io.github.celluloid_player.Celluloid.gschema.xml', ], install_dir: schemadir) appdata = i18n.merge_file( input: 'io.github.celluloid_player.Celluloid.appdata.xml.in', output: 'io.github.celluloid_player.Celluloid.appdata.xml', po_dir: '../po', install: true, install_dir: join_paths(get_option('datadir'), 'metainfo') ) desktop = i18n.merge_file( input: 'io.github.celluloid_player.Celluloid.desktop.in', output: 'io.github.celluloid_player.Celluloid.desktop', type: 'desktop', po_dir: '../po', install: true, install_dir: join_paths(get_option('datadir'), 'applications') ) icondir = join_paths(get_option('datadir'), 'icons/hicolor') install_data('io.github.celluloid_player.Celluloid.svg', install_dir: join_paths(icondir, 'scalable/apps') ) install_data('io.github.celluloid_player.Celluloid-symbolic.svg', install_dir: join_paths(icondir, 'symbolic/apps') ) service_conf = configuration_data() service_conf.set('bindir', join_paths(get_option('prefix'), get_option('bindir'))) configure_file( input: 'io.github.celluloid_player.Celluloid.service.in', output: 'io.github.celluloid_player.Celluloid.service', configuration: service_conf, install_dir: join_paths(get_option('datadir'), 'dbus-1', 'services') ) appstream_util = find_program('appstream-util', required: false) if appstream_util.found() test('Validate appstream file', appstream_util, args: ['validate', '--nonet', appdata]) endif desktop_file_validate = find_program('desktop-file-validate', required: false) if desktop_file_validate.found() test('Validate desktop file', desktop_file_validate, args: [desktop]) endif glib_compile_schemas = find_program('glib-compile-schemas', required: false) if glib_compile_schemas.found() test('Validate schema file', glib_compile_schemas, args: ['--strict', '--dry-run', meson.current_source_dir()] ) endif celluloid-0.18/docs/000077500000000000000000000000001356026115400143515ustar00rootroot00000000000000celluloid-0.18/docs/Makefile.am000066400000000000000000000000611356026115400164020ustar00rootroot00000000000000man_MANS=celluloid.1 EXTRA_DIST = $(man_MANS) celluloid-0.18/docs/celluloid.1000066400000000000000000000031201356026115400164030ustar00rootroot00000000000000.\"Copyright (c) 2017-2019 gnome-mpv .\" .\"This file is part of Celluloid. .\" .\"Celluloid 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. .\" .\"Celluloid 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 Celluloid. If not, see . .TH celluloid 1 "19 July 2017" .SH NAME celluloid \- A simple GTK+ frontend for mpv .SH SYNOPSIS .B celluloid [\fIoptions...\fR] [\fIfilenames\fR|\fIURIs\fR] .SH DESCRIPTION \fBCelluloid\fR is a simple GTK+ frontend for \fBmpv\fR. \fBCelluloid\fR interacts with \fBmpv\fR via the client API exported by libmpv, allowing access to \fBmpv\fR's powerful playback capabilities. .SH OPTIONS .TP \fB\-?, \-h, \-\-help\fR Show help options. .TP \fB\--new-window\fR Create a new window if there is already a running instance. The option has no effect otherwise. .TP \fB\--enqueue\fR Append the given files or URIs to the playlist if there is a running instance. The option has no effect otherwise. .TP \fB\--mpv-options=OPTIONS\fR Pass arbitrary options to mpv. .TP \fB\--version\fR Print the release version and exit. .SH BUGS Please report bugs at https://github.com/celluloid-player/celluloid/issues. celluloid-0.18/docs/meson.build000066400000000000000000000000331356026115400165070ustar00rootroot00000000000000install_man('celluloid.1') celluloid-0.18/meson-post-install.py000077500000000000000000000012031356026115400175420ustar00rootroot00000000000000#!/usr/bin/env python3 import os import subprocess prefix = os.environ.get('MESON_INSTALL_PREFIX', '/usr/local') datadir = os.path.join(prefix, 'share') # Packaging tools define DESTDIR and this isn't needed for them if not 'DESTDIR' in os.environ: print('Compiling gsettings schemas...') subprocess.call(['glib-compile-schemas', os.path.join(datadir, 'glib-2.0', 'schemas')]) print('Updating icon cache...') subprocess.call(['gtk-update-icon-cache', '-qtf', os.path.join(datadir, 'icons', 'hicolor')]) print('Updating desktop database...') subprocess.call(['update-desktop-database', '-q', os.path.join(datadir, 'applications')]) celluloid-0.18/meson.build000066400000000000000000000024701356026115400155660ustar00rootroot00000000000000project('celluloid', 'c', version: '0.18', meson_version: '>= 0.40.0', default_options: [ 'warning_level=2', 'c_std=gnu99', ] ) i18n = import('i18n') cc = meson.get_compiler('c') test_cflags = [ '-funsigned-char', '-fstack-protector-strong', '-fPIE', '-fPIC', '-Wconversion', '-Winline', '-Wno-padded', '-Wno-unused-parameter', '-Wstrict-prototypes', '-Wmissing-prototypes', '-Werror=implicit-function-declaration', '-Werror=pointer-arith', '-Werror=init-self', ['-Werror=format-security', '-Werror=format=2'], # Must be checked together '-Werror=missing-include-dirs', '-Werror=date-time' ] global_cflags = [] foreach cflag : test_cflags if cc.has_multi_arguments(cflag) global_cflags += cflag endif endforeach if cc.has_header('execinfo.h') global_cflags += '-DHAVE_EXECINFO_H' endif add_project_arguments(global_cflags, language: 'c') test_ldflags = [ '-pie', '-Wl,-z,relro', '-Wl,-z,now' ] global_ldflags = [] foreach ldflag : test_ldflags if cc.has_argument(ldflag) global_ldflags += ldflag endif endforeach add_project_link_arguments(global_ldflags, language: 'c') if not cc.has_function('setlocale') error('Could not find setlocale()') endif subdir('src') subdir('data') subdir('docs') subdir('po') meson.add_install_script('meson-post-install.py') celluloid-0.18/po/000077500000000000000000000000001356026115400140375ustar00rootroot00000000000000celluloid-0.18/po/LINGUAS000066400000000000000000000001431356026115400150620ustar00rootroot00000000000000bg ca cs da de_DE eo es fa fr hr hu it ja nl pl pt_BR pt_PT ro ru sr sr@latin sv tr uk zh_CN zh_TW celluloid-0.18/po/Makevars000066400000000000000000000007101356026115400155310ustar00rootroot00000000000000subdir = po top_builddir = .. DOMAIN = $(PACKAGE) XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2 --keyword=g_dngettext:2,3 --add-comments COPYRIGHT_HOLDER = Celluloid PACKAGE_GNU = no MSGID_BUGS_ADDRESS = https://github.com/celluloid/celluloid/issues EXTRA_LOCALE_CATEGORIES = USE_MSGCTXT = no MSGMERGE_OPTIONS = --quiet MSGINIT_OPTIONS = PO_DEPENDS_ON_POT = no DIST_DEPENDS_ON_UPDATE_PO = no celluloid-0.18/po/POTFILES.in000066400000000000000000000016021356026115400156130ustar00rootroot00000000000000data/io.github.celluloid_player.Celluloid.gschema.xml data/io.github.celluloid_player.Celluloid.appdata.xml.in data/io.github.celluloid_player.Celluloid.desktop.in src/celluloid-application.c src/celluloid-common.c src/celluloid-control-box.c src/celluloid-controller-actions.c src/celluloid-controller.c src/celluloid-controller-input.c src/celluloid-file-chooser.c src/celluloid-header-bar.c src/celluloid-main.c src/celluloid-main-window.c src/celluloid-menu.c src/celluloid-metadata-cache.c src/celluloid-model.c src/celluloid-mpv.c src/celluloid-mpv-wrapper.c src/celluloid-open-location-dialog.c src/celluloid-player.c src/celluloid-player-options.c src/celluloid-playlist-widget.c src/celluloid-plugins-manager.c src/celluloid-plugins-manager-item.c src/celluloid-preferences-dialog.c src/celluloid-seek-bar.c src/celluloid-shortcuts-window.c src/celluloid-video-area.c src/celluloid-view.c celluloid-0.18/po/bg.po000066400000000000000000001125371356026115400150000ustar00rootroot00000000000000# cybercop , 2019. #zanata # gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: 0.6\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-10-14 04:57+0000\n" "Last-Translator: cybercop \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" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "Дали настройките вече са прехвърлени от предишната версия" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Включване или изключване на тъмната тема" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Включване или изключване на Gnome 3 декорацията" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "Да се ползват ли плаващи контролери в прозоречен режим" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "Да се скрива ли автоматично курсора на мишката в прозоречен режим" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" "Минималната скорост на курсора, при която да се покажат плаващите " "контролери." #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "Дали да се използват бутони за пропускане за управление на списъка" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "Да бъде ли запомнян последния избран файл или посетена папка" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "Да се създават ли нови прозорци, когато вече има такъв" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Внасяне на настройки от MPV" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Път до конфигурационен файл на MPV" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "Да се зареди ли конфигурационния файл от MPV" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Път до внесения конфигурационен файл на MPV" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "Да се зареди ли внесен MPV конфигурационен файл" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "Разрешена ли е поддръжка на MPRIS" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" "Включена ли е поддръжка на мултимедийни клавиши в GNOME-Settings-Daemon" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "" "Да се извличат ли метаданни за елементи от вече несъществуващи списъци" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" "Да се показва ли съобщение, когато възпроизвеждането на файл завършва с " "грешка" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Ширина на прозореца" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Височина на прозореца" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "Сила на звука на плеъра" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Ширина на спъсъка за изпълнение" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "Да се показват ли контролерите" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Показване и скриване на списъка за изпълнение" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "Адрес на последната посещавана папка" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "GTK+ интерфейс за MPV" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" "Celluloid е прост медиен плеър, който може да възпроизвежда практически " "всички видео и аудио формати. Той поддържа плейлисти и MPRIS2 контроли на " "медийния плеър. Дизайнът на Celluloid следва GNOME Human интерфейса, но може" " да бъде адаптиран и за други системи, които не използват декорации от " "страна на клиента (CSD). Той е базиран на MPV и GTK библиотеките." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Опции:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "Поддръжка на Drag'n'Drop" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "Зареждане на външни MPV конфигурационни файлове" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "MPRIS2 D-Bus интерфейс" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "Това издание съдържа следните промени:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "Проектът е преименуван на Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "Добавен е превод на турски от @TeknoMobil" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "Добавен е превод на есперанто от @F3nd0" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "Миграция от opengl-cb към нов API за рендиране" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "Препращане на медийни ключови събития към mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 #, fuzzy msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" "Минималната скорост на курсора, при която да се покажат плаващите " "контролери." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 #, fuzzy msgid "Add option for suppressing playback errors" msgstr "Игнориране на грешки при възпроизвеждане" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "Списъкът не е завършен. Вижте Git лога за пълния списък с промени." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "Разделен е разделът Общи в диалога с настройките" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" "Подобряване на поведението при превключване на списъка за изпълнение при " "тилинг мениджъри на прозорци " #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "Преместени са елементите от менюто на програмите в основното меню" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "Използвана е отделна MPRIS DBus връзка за всеки прозорец" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "Добавена е поддръжка за свойствата на MPRIS LoopStatus" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" "Добавете опция --mpv-options за задаване на произволни mpv опции от команден" " ред" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "" "Задаване на директорията за снимки на екрана по подразбиране в " "XDG_PICTURES_DIR" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" "Подобряване на обработката на мащаба на - Window, --autofit, --autofit-large" " и --autofit-small" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "Добавяне опцията за команден ред за настройка на WM_ROLE" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" "Добавена е опция в контекстното меню за премахване на елементи от списъка за" " изпълнение" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" "Добавяне на елемент от контекстното меню за копиране на местоположението на " "елементите от списъка за изпълнение" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" "Добавена е опция, бутона за пропускане да променя елементите от списъка, а " "не не заглавията" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "Файловия браузър има възможност да избира не-локални местоположение" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" "Добавяне на елемент в менюто при десен бутон на мишката за превъртане на " "единичен файл" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" "Обработване на събития за промяна на свойствата за цял екран и мащаб на " "прозореца" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "Добавена е опция за скриване на курсора на мишката в прозоречен режим" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "Основният прозорец показва програмата в действие" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "Главният прозорец с изключен CSD" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "Главният прозорец с отворен спъсък за изпълнение" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "Мултимедиен плеър" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "Изпълнение на филми и видеоклипове" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "io.github.celluloid_player.Celluloid" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "Видео;Кино;Филм;Клип;Сериал;Плеър;DVD;TV;Диск, Албум;Музика;Gnome;MPV" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "Нов прозорец" #: src/celluloid-application.c:421 msgid "Playing" msgstr "Изпълнение" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Покажи текущата версия" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "На опашка" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "Създаване на нов прозорец" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "ОПЦИИ" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "Задаване роля на прозореца" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "Не свързвайте към вече стартиран екземпляр" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Пауза" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Изпълнение" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Спиране" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Напред" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Назад" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Следващо заглавие" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Предишно заглавие" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "Превъртане на списъка" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Включване/изключване режима на цял екран" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Грешка" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "Всички файлове" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "Мултимедийни файлове" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "Аудио файлове" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "Видео файлове" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "Файлове с изображения" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "Фалове със субтитри" #: src/celluloid-menu.c:106 msgid "None" msgstr "Няма" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Неизвестно" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "_Зареждане на външен…" #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 #, fuzzy msgid "No disc found" msgstr "Не са намерени разширения" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Файл" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "_Отваряне..." #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "Отваряне на _местоположение..." #: src/celluloid-menu.c:236 #, fuzzy msgid "Open _Disc…" msgstr "Отваряне на _местоположение..." #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "_Запазване на списък за изпълнение" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "_Нов прозорец" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "_Редактиране" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Предпочитания" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "_Видео запис" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "_Аудио запис" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "_Файл със субтитри" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_Преглед" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "Включване/изключване на _контролерите" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "Включване/изключване на _списъка за изпълнение" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Режим на цял екран" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Помощ" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "_Клавишни комбинации" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "_Относно Celluloid" #: src/celluloid-menu.c:316 #, fuzzy msgid "Open _Disc" msgstr "Отваряне на файл" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "Възпрозвеждането беше спряно непредвидено. Причина: %s." #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Местоположение:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Отказ" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Отваряне" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "Не могат да бъдат приложени една или повече опции за MPV." #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "_Копиране на местоположението" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "_Премахване" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Добавяне…" #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "Добавяне на _местоположение…" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "_Разбъркано" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "Превъртане на _файл" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "Превъртане на _списък" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Списък за изпълнение" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "Добавяне на разширение" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "Lua разширения" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "JavaScript разширения" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "C - разширения" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "Неуспешно копиране на файл от '%s' в '%s'. Причина: %s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "Не са намерени разширения" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Премахване" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "" "Сигурен ли сте, че искате да премахнете този скрипт? Това действие не може " "да бъде отменено." #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "Неуспешно изтриване на файл '%s'. Причина: %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Включване на вградената Gnome 3 декорация" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Включване на тъмната тема" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "Използване на плаващи контролери в прозоречен режим" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "Автоматично скриване на курсора на мишката в прозоречен режим" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "Използване на бутони за прескачане за управление на списъка" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Запомняне на последното местоположение на файловете" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "Зареждане на MPV конфигурационен файл" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr " MPV конфигурационен файл:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "Зареждане на внесен MPV конфигурационен файл" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "Внесен MPV конфигурационен файл:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "Винаги да се отваря нов прозорец" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "Игнориране на грешки при възпроизвеждане" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "Предварително изтегляне на метаданни" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "Включване поддръжка на MPRIS" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "Включване поддръжка на мултимедийни клавиши" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Допълнителни опции за MPV:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "Интерфейс" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "Конфигурационни файлове" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "Разни" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "Разширения" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Запазване" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Предпочитания" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Отваряне на файл" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Отваряне на местоположение" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "Добавяне на файлове в списъка за изпълнение" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "Добавяне на местоположение в списъка за изпълнение" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Показване на диалога с настройките" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Показване/скриване на контролерите" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Показване/скриване на списъка за изпълнение" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Превключване в режим на цял екран" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Изход от режима на цял екран" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "" "Превключване в OSD режим между нормалното време и времето на " "възпроизвеждане/продължителност" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Показване името на файла в OSD" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "Показване на прогреса, оставащото време и продължителност в OSD" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "Прескачане назад/напред с 5 секунди" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Прецизно прескачане назад/напред с 1 секунда" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "Прескачане назад/напред с 1 минута" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "Прецизно прескачане назад/напред с 5 секунди" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "Преминаване към предишните/следващите субтитри" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Стъпка назад/напред с един кадър" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "Преминаване към предишното/следващото заглавие" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Намаляване/увеличаване скоростта на възпроизвеждане с 10%" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Намаляване наполовина/удвояване скоростта на изпълнение" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Нулиране скоростта на изпълнение до нормална стойност" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Отиване назад/напред в списъка за изпълнение" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Премахване на избраните елементи от списъка за изпълнение" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Запазване на списъка за изпълнение" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "Задай/изчисти точки на повторение A-B" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Включване/изключване на напрекъснатото повторение" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Пауза и възобновяване" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Изход" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Запазване на текущата позиция на възпроизвеждане и изход" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Превъртане през аудио записите" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Намаляване/увеличаване силата на звука" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "Заглушаване и пускане на звука" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Задържане на аудиото с + / - 0,1 секунди" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Превключване видимостта на субтитрите" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Превъртане през наличните субтитри" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Задържане на субтитрите с + / - 0,1 секунди" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "Превключване промяната стила на субтитрите SSA/ASS" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Преместване на субтитрите нагоре/надолу" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "Включване/изключване режим на VSFilter" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Превъртане през видео записите" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "Намаляване/увеличаване диапазона на обхващане и сканиране" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Направете снимка на екрана" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Направете снимка на екрана без субтитри" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Направете снимка на екрана с всичко в прозореца" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Оразмеряване на видеото в половината от оригиналния размер" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Оразмеряване на видеото в неговия оригинален размер" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "Оразмеряване на видеото в двоен размер спрямо оригинала" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Настройка на контраста" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Настройка на яркостта" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Настройка на гамата" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Настройка на наситеността" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Активирайте или деактивирайте деинтерлактора" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "Циклично презаписване на стойностите" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Потребителски интерфейс" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Видео" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Аудио" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Субтитри" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Възпроизвеждане" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Търсене" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" "Включването или изключването на вградената (Gnome 3) декорация изисква " "рестартиране за да влязат промените в сила." #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Добавяне на файл в списъка" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Отваряне на файл" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Добавяне местоположение до списък" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Отвори местоположение" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "Зареди аудио запис…" #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "Зареди файл със субтитри…" #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Запазване на списъка" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "GTK интерфейс за MPV" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "Kiril Kirilov " celluloid-0.18/po/ca.po000066400000000000000000000763571356026115400150040ustar00rootroot00000000000000# Toni Estevez , 2019. #zanata # gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-11-01 03:56+0000\n" "Last-Translator: Toni Estevez \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" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "Importa la configuració d'una versió anterior" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Activa el tema fosc" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Activa les decoracions del client" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "Utilitza controls flotants en el mode de finestra" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "Amaga automàticament el punter del ratolí en el mode de finestra" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" "La velocitat mínima del cursor a la qual s'amagaran els controls flotants." #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "Utilitza els botons de salt per controlar la llista de reproducció" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "Recorda la ubicació de l'últim fitxer obert" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "Crea finestres noves quan ja hi hagi una instància" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Opcions extra per a l'mpv:" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Fitxer de configuració de l'mpv:" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "Carrega el fitxer de configuració de l'mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Fitxer de configuració de l'entrada de l'mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "Carrega el fitxer de configuració de l'entrada de l'mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "Activa la compatibilitat amb la interfície MPRIS" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "Activa la compatibilitat amb les tecles multimèdia del GNOME" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "Precarrega les metadades de les llistes de reproducció no actuals" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" "Mostra un missatge d'error quan la reproducció d'un fitxer finalitza amb un" " error" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Amplada de la finestra" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Alçada de la finestra" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "Volum del reproductor" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Amplada de la llista de reproducció" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "Mostra els controls" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Mostra la llista de reproducció" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "Ubicació de l'última carpeta accedida" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Cel·luloide" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "Interfície GTK per al reproductor mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" "Cel·luloide és un reproductor multimèdia senzill que pot reproduir " "pràcticament qualsevol format de vídeo i àudio. Admet llistes de reproducció" " i controls de reproducció MPRIS2. El disseny del Cel·luloide segueix les " "guies d'interfície del GNOME, però també pot adaptar-se a altres entorns que" " no fan servir decoracions del client (CSD). Es basa en les biblioteques mpv" " i GTK." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Característiques:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "" "Es poden arrossegar i deixar anar les entrades de la llista de reproducció" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "Carrega fitxers de configuració externs de l'mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "Interfície de D-Bus de MPRIS2" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "Aquesta versió conté els canvis següents:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "Canvia el nom del projecte a Cel·luloide" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "Afegeix la traducció al turc feta per TeknoMobil" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "Afegeix la traducció a l'esperanto feta per F3nd0" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "Canvia de opengl-cb a la nova API de representació" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "Controla les combinacions de tecles de teclat numèric" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "Controla les assignacions de tecles de l'Unicode" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "Reenvia els esdeveniments de les tecles multimèdia a l'mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" "Afegeix una clau del dconf per controlar la velocitat del cursor a la qual " "s'amaguen els controls" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "Afegeix una opció per suprimir els errors de reproducció" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" "Aquest llistat és incomplet. Consulteu el registre del Git per obtenir un " "registre de canvis complet." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "Divideix la pestanya General al diàleg de preferències" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" "Millora el comportament en mostrar o ocultar la llista de reproducció en els" " gestors de finestra de mosaic" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "Desplaça els elements del menú d'aplicació al menú principal" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "" "Utilitza una connexió DBUS de la interfície MPRIS separada per a cada " "finestra" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "" "Afegeix compatibilitat amb la propietat LoopStatus de la interfície MPRIS" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" "Afegeix l'opció --mpv-options per configurar opcions arbitràries de l'mpv " "des de la línia d'ordres" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "" "Estableix com a carpeta de captures de pantalla predeterminada la carpeta " "XDG_PICTURES_DIR" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" "Millora el maneig de les opcions --window-scale, --autofit, --autofit-larger" " i --autofit-smaller" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "Afegeix una opció a la línia d'ordres per configurar WM_ROLE" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" "Afegeix un element al menú contextual per suprimir elements de la llista de " "reproducció" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" "Afegeix un element al menú contextual per copiar la ubicació dels elements " "de la llista de reproducció" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" "Afegeix una opció per fer que els botons de salt seleccionin les entrades de" " la llista de reproducció en lloc dels capítols" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "Fa que el selector de fitxers accepti ubicacions no locals" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" "Afegeix una entrada al menú contextual per reproduir en bucle un únic fitxer" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" "Gestiona els esdeveniments de canvi de propietat per a la pantalla completa " "i l'escala de la finestra" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "" "Afegeix una opció per amagar automàticament el punter del ratolí al mode de " "finestra" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "La finestra principal amb l'aplicació en acció" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "La finestra principal amb les decoracions del client desactivades" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "La finestra principal amb la llista de reproducció oberta" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "Reproductor multimèdia" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "Reprodueix pel·lícules i vídeos" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "io.github.celluloid_player.Celluloid" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" "vídeo;pel·lícula;film;clip;sèrie;reproductor;DVD;TV;disc;àlbum;música;GNOME;" " mpv;" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "Finestra nova" #: src/celluloid-application.c:421 msgid "Playing" msgstr "En reproducció" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Mostra la versió" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "A la cua" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "Crea una finestra nova" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "OPCIONS" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "Estableix el comportament de la finestra" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "No connectis a una instància que ja s'estigui executant" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Posa en pausa" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Reprodueix" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Atura" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Avança" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Rebobina" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Capítol següent" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Capítol anterior" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "Llista de reproducció en bucle" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Activa/desactiva la pantalla completa" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Error" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "Tots els fitxers" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "Fitxers multimèdia" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "Fitxers d'àudio" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "Fitxers de vídeo" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "Fitxers d'imatge" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "Fitxers de subtítols" #: src/celluloid-menu.c:106 msgid "None" msgstr "Cap" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Desconeguda" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "_Obre..." #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 msgid "No disc found" msgstr "No s'ha trobat cap disc" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Fitxer" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "_Obre..." #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "Obre _ubicació..." #: src/celluloid-menu.c:236 msgid "Open _Disc…" msgstr "Obre un _disc" #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "_Desa la llista de reproducció..." #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "Finestra _nova" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "_Edita" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Preferències" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "Pista de _vídeo" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "Pista d'à_udio" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "Pista de _subtítols" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_Vista" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "Mostra/amaga els _controls" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "Mostra/amaga la _llista de reproducció" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Pantalla completa" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Ajuda" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "Dreceres de _teclat" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "_Quant a" #: src/celluloid-menu.c:316 msgid "Open _Disc" msgstr "Obre un _disc" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "La reproducció ha acabat de forma anòmala. Motiu: %s" #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Ubicació:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Cancel·la" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Obre" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "No s'han pogut aplicar una o més opcions de l'mpv." #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "_Copia la ubicació" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "_Suprimeix" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Afegeix…" #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "Afegeix una _ubicació..." #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "_Mescla" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "_Fitxer en bucle" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "_Llista de reproducció en bucle" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Llista de reproducció" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "Afegeix un connector" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "Connectors Lua" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "Connectors JavaScript" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "Connectors C" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "No s'ha pogut copiar el fitxer de «%s» a «%s». Motiu: %s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "No s'ha trobat cap connector" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Suprimeix" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "" "Segur que voleu suprimir aquest script? Aquesta acció no es pot desfer." #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "No s'ha pogut suprimir el fitxer «%s». Motiu: %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Activa les decoracions del client" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Activa el tema fosc" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "Utilitza controls flotants al mode de finestra" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "Amaga automàticament el punter del ratolí al mode de finestra" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "Utilitza els botons de salt per controlar la llista de reproducció" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Recorda la ubicació de l'últim fitxer" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "Carrega un fitxer de configuració de l'mpv" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "Fitxer de configuració de l'mpv:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "Carrega un fitxer de configuració de l'entrada de l'mpv" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "Fitxer de configuració de l'entrada de l'mpv:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "Obre sempre una finestra nova" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "Ignora els errors de reproducció" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "Precarrega les metadades" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "Activa la compatibilitat amb la interfície MPRIS" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "Activa les tecles multimèdia" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Opcions addicionals de l'mpv:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "Interfície" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "Fitxers de configuració" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "Miscel·lània" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "Connectors" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Desa" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Preferències" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Obre un fitxer" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Obre una ubicació" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "Afegeix un fitxer a la llista de reproducció" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "Afegeix una ubicació a la llista de reproducció" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Mostra el diàleg de preferències" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Mostra/amaga els controls" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Mostra/amaga la llista de reproducció" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Activa/desactiva el mode de pantalla completa" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Surt del mode de pantalla completa" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "Mostra/amaga en pantalla el temps de reproducció i la durada" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Mostra en pantalla el nom del fitxer" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "Mostra en pantalla el progrés, el temps transcorregut i la durada" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "Salta 5 segons cap enrere/endavant" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Salta exactament 1 segon cap enrere/endavant" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "Salta 1 minut cap enrere/endavant" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "Salta exactament 5 segons cap enrere/endavant" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "Salta als subtítols anteriors/següents" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Retrocedeix/avança un sol fotograma" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "Salta al principi del capítol anterior/següent" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Disminueix/augmenta la velocitat de reproducció un 10%" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Redueix a la meitat o duplica la velocitat de reproducció" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Restableix la velocitat de reproducció" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Retrocedeix/avança a la llista de reproducció" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Suprimeix l'element seleccionat de la llista de reproducció" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Desa la llista de reproducció" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "Fixa/esborra els punts de bucle A-B" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Activa/desactiva la reproducció en bucle" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Posa en pausa o continua" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Surt" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Desa la posició de reproducció actual i surt" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Selecciona la pista d'àudio següent" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Disminueix/augmenta el volum" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "Silencia/activa el so" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Ajusta el retard de l'àudio en +/- 0.1 segons" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Mostra/amaga els subtítols" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Selecciona els subtítols següents" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Ajusta el retard dels subtítols en +/- 0.1 segons" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "Activa/desactiva l'anulació de l'estil dels subtítols SSA/ASS" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Mou els subtítols amunt/avall" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "Activa/desactiva el mode de compatibilitat d'aspecte del VSFilter" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Selecciona la pista de vídeo següent" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "Disminueix/augmenta el rang de reenquadrament (pan and scan)" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Fes una captura de pantalla" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Fes una captura de pantalla, sense subtítols" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Fes una captura de pantalla, tal com es mostra a la finestra" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Redimensiona el vídeo a la meitat de la mida original" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Redimensiona el vídeo a la mida original" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "Redimensiona el vídeo al doble de la mida original" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Ajusta el contrast" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Ajusta la brillantor" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Ajusta la correcció gamma" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Ajusta la saturació" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Activa/desactiva el desentrellaçat" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "Selecciona la relació d'aspecte següent" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Interfície d'usuari" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Vídeo" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Àudio" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Subtítols" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Reproducció" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Cerca" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" "Per activar o desactivar les decoracions del client cal reiniciar " "l'aplicació." #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Afegeix un fitxer a la llista de reproducció" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Obre un fitxer" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Afegeix una ubicació a la llista de reproducció" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Obre una ubicació" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "Carrega una pista d'àudio..." #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "Carrega una pista de subtítols..." #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Desa la llista de reproducció" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "Una interfície GTK per al reproductor mpv" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "" "Toni Estevez, toni.estevez@gmail.com\n" "Adolfo Jayme Barrientos, fitojb@ubuntu.com" celluloid-0.18/po/cs.po000066400000000000000000000710011356026115400150030ustar00rootroot00000000000000# Czech translations for gnome-mpv package # gnome-mpv # Copyright (C) 2015 THE gnome-mpv'S COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-mpv package. # Tomáš Marný, 2015. # Jaroslav Svoboda , 2019. #zanata # gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: gnome-mpv 0.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-10-09 12:54+0000\n" "Last-Translator: Copied by Zanata \n" "Language-Team: \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "Zda už byly předvolby konvertovány ze staré na novou verzi" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Zapnout nebo vypnout tmavý motiv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Zapnout nebo vypnout dekorace na straně klienta" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "Zda v okenním režimu použít plovoucí ovládací prvky" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "Zda schovávat kurzor myši v módu v okně" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "Zda používat tlačítka přeskočit pro ovládání seznamu přehrávání" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "Zda si má dialog pro výběr souborů pamatovat poslední umístění" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "Zda vytvořit nové okno pokud je již jedno otevřeno" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Přepínače pro mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Cesta ke konfiguračnímu souboru mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "Načíst nebo nenačíst konfigurační soubor mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Cesta ke konfiguračnímu souboru vstupu mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "Načíst nebo nenačíst konfigurační soubor vstupu mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "Zda zapnout podporu MPRIS" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" "Zda zapnout podporu pro multimediální klávesy podle démona GNOME Nastavení" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "" "Zda dopředu načítat metadata ne právě přehrávaných položek seznamu " "přehrávání" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Šířka okna" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Výška okna" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "Hlasitost přehrávání" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Šířka seznamu přehrávání" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "Zobrazit nebo nezobrazit ovládací tlačítka" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Zobrazit nebo nezobrazit seznam přehrávání" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "Cesta k poslední použité složce" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "GTK+ rozhraní nad mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Nabízí:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "Seznam přehrávání („playlist“) s možností přetáhnout soubory myší" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "Načítání externího konfiguračního souboru pro mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "Rozhraní MPRIS2 D-Bus" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "Tato verze obsahuje následující změny:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "Rozdělit Hlavní záložku v dialogu předvoleb" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "Přesunout položky menu aplikace do primátního menu" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 #, fuzzy msgid "Add option to autohide mouse cursor in windowed mode" msgstr "Automaticky skrývat kurzor v módu okna" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "Hlavní okno a aplikace v akci" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "Hlavní okno s vypnutými dekoracemi na straně klienta" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "Hlavní okno s otevřeným seznamem přehrávání" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" "Video;Snímek;Film;Klip;Seriál;Přehrávač;DVD;TV;Disk;Album;Hudba;GNOME;mpv;" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "Nové okno" #: src/celluloid-application.c:421 msgid "Playing" msgstr "Hraje" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Zobrazit verzi vydání" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "Zařadit do fronty" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "Vytvořit nové okno" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "MOŽNOSTI" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "Nastavit roli okna" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "Nepřipojovat k již běžící instanci" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Pozastavit" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Přehrát" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Zastavit" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Vpřed" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Zpět" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Další kapitola" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Předchozí kapitola" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "Opakovat playlist" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Zobrazení na celou obrazovku" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Chyba" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "Všechny soubory" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "Soubory médií" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "Soubory zvuku" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "Soubory videa" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "Soubory obrázků" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "Soubory titulků" #: src/celluloid-menu.c:106 msgid "None" msgstr "Nic" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Neznámý" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "_Načíst externí…" #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 #, fuzzy msgid "No disc found" msgstr "Nebyly nalezeny žádné pluginy" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Soubor" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "_Otevřít..." #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "Otevřít_umístění..." #: src/celluloid-menu.c:236 #, fuzzy msgid "Open _Disc…" msgstr "Otevřít_umístění..." #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "_Uložit seznam přehrávání" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "_Nové okno" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "Up_ravit" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Předvolby" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "Stopa _videa" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "Stopa _zvuku" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "_Titulky" #: src/celluloid-menu.c:244 msgid "_View" msgstr "Zo_brazit" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "Přepnout _ovládání" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "Přepnout seznam _přehrávání" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Celá obrazovka" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Nápověda" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "_Klávesové zkratky" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "_O Celluloidu" #: src/celluloid-menu.c:316 #, fuzzy msgid "Open _Disc" msgstr "Otevřít soubor" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "Přehrávání bylo nečekaně ukončeno. Důvod: %s." #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Umístění:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Zrušit" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Otevřít" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "Nebylo možno uplatnit jednu nebo více předvoleb MPV." #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "_Kopírovat umístění" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "_Odstranit" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Přidat…" #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "Přidat _umístění…" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "_Náhodně" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "Opakovat _soubor" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "Opakovat seznam _přehrávání" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Seznam přehrávání" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "Přidat plugin" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "Lua pluginy" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "JavaScriptové pluginy" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "Pluginy v C" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "Selhalo kopírování souboru z ‚%s‘ do ‚%s‘. Důvod: %s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "Nebyly nalezeny žádné pluginy" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Odstranit" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "Určitě si přejete tento skript odstranit? Akci nelze vrátit zpět." #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "Selhalo smazání souboru ‚%s‘. Důvod: %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Povolit dekorace na straně klienta" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Povolit tmavý motiv" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "Použít v okenním režimu plovoucí ovládání" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "Automaticky skrývat kurzor v módu okna" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "Použít tlačítko přeskočit pro ovládání seznamu skladeb" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Pamatovat si umístění posledního souboru" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "Načíst konfigurační soubor MPV" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "Konfigurační soubor MPV:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "Načíst vstupní konfigurační soubor MPV" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "Vstupní konfigurační soubor MPV:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "Vždy otevřít nové okno" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "Dopředu načíst metadata" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "Zapnout podporu MPRIS" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "Zapnout podporu multimediálních kláves" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Extra možnosti MPV:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "Rozhraní" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "Konfigurační soubory" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "Různé" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "Pluginy" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Uložit" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Předvolby" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Otevřít soubor" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Otevřít umístění" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "Přidat soubory do seznamu přehrávání" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "Přidat umístění do seznamu přehrávání" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Otevřít předvolby" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Přepnout ovládání" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Přepnout seznam přehrávání" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Přepnout zobrazení na celou obrazovku" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Opustit celou obrazovku" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "Přepnout zprávy na obrazovce (normální nebo čas přehrávání)" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Ukazovat na obrazovce název souboru" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "Ukazovat na obrazovce postup, uplynulý čas a celkový čas" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "Skok zpět o 5 sekund" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Přesný skok zpět o 1 sekundu" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "Skok zpět/vpřed o 1 minutu" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "Přesný skok zpět/vpřed o 5 sekund" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "Skok k předchozím/dalším titulkům" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Krok zpět/vpřed po jednotlivém snímku" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "Skok na začátek předchozí/další kapitoly" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Zpomalit/zrychlit přehrávání o 10 %" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Snížit na polovinu / zdvojnásobit rychlost přehrávání" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Obnovit normální rychlost přehrávání" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Jít v seznamu přehrávání zpět/vpřed" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Odstranit vybranou položku v seznamu přehrávání" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Uložit seznam přehrávání" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "Nastavit/smazat A-B body smyčky" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Přepnout opakování" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Pozastavit nebo hrát dál" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Ukončit" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Uložit pozici přehrávání a ukončit" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Procházet zvukové stopy" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Snížit/zvýšit hlasitost" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "Ztlumit nebo obnovit hlasitost" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Posunout zvukovou stupu o +/- 0,1 sekundy" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Přepnout viditelnost titulků" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Procházet načtené titulky" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Posunout stupu titulků o +/- 0,1 sekundy" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "Přepnout styl titulků SSA/ASS" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Posunout titulky nahoru/dolů" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "Přepnout mód kompatibility poměru stran VSFilter" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Procházet stopy videa" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "Snížit/zvýšit rozsah ořezávání videa s jiným poměrem stran" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Pořídit snímek obrazovky" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Pořídit snímek obrazovky, bez titulků" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Pořídit snímek obrazovky, tak, jak se okno zobrazuje" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Zmenšit na poloviční velikost videa" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Obnovit původní velikost videa" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "Zvětšit na dvojnásobnou velikost videa" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Upravit konstrast" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Upravit jas" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Upravit svítivost (gamma)" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Upravit sytost" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Zapnout nebo vypnout odstranění prokládání" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "Procházet přepsání poměru stran" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Uživatelské rozhraní" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Video" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Zvuk" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Titulky" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Přehrávání" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Posouvání" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" "Aby se projevilo povolení nebo zakázání dekorací na straně klienta, je nutný" " restart aplikace" #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "_Přidat soubory do seznamu přehrávání" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Otevřít soubor" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Přidat umístění do seznamu přehrávání" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Otevřít umístění" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "Načíst zvukovou stopu…" #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "Načíst stopu titulků…" #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "_Uložit seznam přehrávání" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "GTK frontend pro MPV" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "Tomáš Marný" celluloid-0.18/po/da.po000066400000000000000000000742761356026115400150030ustar00rootroot00000000000000# Danish translation for Celluloid # scootergrisen, 2017. # gnome-mpv , 2019. #zanata # scootergrisen , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: gnome-mpv 0.15\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-10-14 04:13+0000\n" "Last-Translator: scootergrisen \n" "Language-Team: Danish\n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "" "Hvorvidt indstillingerne allerede er blevet migreret fra den forrige version" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Aktivér eller deaktivér mørkt tema" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Aktivér eller deaktivér klientsidedekorationer" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "Hvorvidt der skal bruges flydende kontrolelementer i vinduestilstand" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "Om musemarkøren automatisk skal skjules i vinduestilstand" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" "Den laveste markørhastighed hvor flydende kontrolelementer ikke skjules." #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "" "Hvorvidt der skal bruges spring over-knapper til at styre afspilningsliste" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "" "Hvorvidt filvælger-dialogen skal huske mappen som der sidst var adgang til" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "Hvorvidt nye vinduer skal oprettes når der allerede er en instans" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Tilvalg som skal videregives til mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Stil til mpv-konfigurationsfil" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "Indlæs eller indlæs ikke mpv-konfigurationsfil" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Sti til mpv-input-konfigurationsfil" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "Indlæs eller indlæs ikke mpv-input-konfigurationsfil" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "Hvorvidt understøttelse af MPRIS skal aktiveres" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" "Hvorvidt understøttelse af GNOME-Settings-Daemon-baserede medietaster skal " "aktiveres" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "" "Hvorvidt metadata skal hentes på forhånd for poster som ikke er i brug" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" "Hvorvidt der skal vises en fejlmeddelelse når afspilningen af en fil slutter" " med en fejl" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Vinduets bredde" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Vinduets højde" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "Afspillerens lydstyrke" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Afspilningslistens bredde" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "Vis eller skjul kontrolelementerne" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Vis eller skjul afspilningsliste" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "URI'en til mappen som der sidst var adgang til" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "GTK+-frontend til mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" "Celluloid er en simpel medieafspiller som kan afspille næsten alle video- og" " lydformater. Den understøtter afspilningslister og " "MPRIS2-medieafspillerstyringer. Celluloids design følger GNOME Human " "Interface Guidelines men kan også tilpasses andre systemer der ikke bruger " "klientside-dekorationer (CSD). Den er baseret på mpv-biblioteket og GTK." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Funktionaliteter:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "Træk og slip afspilningsliste" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "Indlæser eksterne mpv-konfigurationsfiler" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "MPRIS2 D-Bus-grænseflade" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "Udgivelsen indeholder følgende ændringer:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "Omdøb projektet til Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "Tilføj tyrkisk oversættelse af @TeknoMobil" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "Tilføj esperanto oversættelse af @F3nd0" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "Migrer fra opengl-cb til den nye gengivelses API" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "Håndter tastebindinger for det numeriske tastatur" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "Håndter tastebindinger for unicode" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "Viderestil medietast-hændelser til mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" "Tilføj dconf-nøgle til styring af markørens hastighed hvor styringer skjules" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "Tilføj tilvalg til undertrykkelse af afspilningsfejl" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "Listen er ikke komplet. Se git-loggen for en komplet ændringslog." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "Opdeling af Generelt-fanebladet i præferencer-dialogen." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" "Forbedret opførsel når afspilningslisten vises/skjules under fliselæggende " "vindueshåndteringer" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "Flyt punkterne fra programmenuen til den primære menu" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "Brug separat MPRIS DBus-forbindelse til hvert vindue" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "Tilføj understøttelse af MPRIS-egenskaben LoopStatus" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" "Tilføj tilvalget --mpv-options til indstilling af vilkårlige tilvalg fra " "kommandolinjen" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "Indstil standardmappen for skærmbilleder til XDG_PICTURES_DIR" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" "Forbedret håndtering af --window-scale, --autofit, --autofit-larger og " "--autofit-smaller" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "Tilføj kommandolinjetilvalg for indstilling af WM_ROLE" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "Tilføj punkt i genvejsmenuen til fjernelse af afspilningslistepunkter" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" "Tilføj punkt i genvejsmenuen til kopiering af placering for " "afspilningslistepunkter" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" "Tilføjet valgmulighed for at få spring over-knappen til at ændre " "afspilningslistepunkter frem for kapitler." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "Fået filvælgeren til at accepterer placeringer som ikke er lokale" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "Tilføj menupunkt ved højreklik for at afspille en enkelt fil i løkke" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" "Håndter hændelser af egenskabsændring for fuldskærm og vinduesskalering" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "" "Tilføjet valgmulighed for automatisk at skjule musemarkøren i " "vinduestilstand" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "Hovedvinduet som viser programmet i funktion" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "Hovedvinduet med deaktiveret skærmdisplay" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "Hovedvinduet med åben afspilningsliste" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "Multimedieafspiller" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "Afspil film og videoer" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "io.github.celluloid_player.Celluloid" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "Video;Film;Klip;Serier;Afspiller;DVD;TV;Disk;Album;Musik;GNOME;mpv;" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "Nyt vindue" #: src/celluloid-application.c:421 msgid "Playing" msgstr "Afspiller" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Vis udgivelsesversion" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "Sæt i kø" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "Opret et nyt vindue" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "TILVALG" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "Sæt vinduesrollen" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "Opret ikke forbindelse til en instans som allerede kører" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Pause" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Afspil" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Stop" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Fremad" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Baglæns" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Næste kapitel" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Forrige kapitel" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "Afspil afspilningsliste i løkke" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Fuldskærm til/fra" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Fejl" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "Alle filer" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "Mediefiler" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "Lydfiler" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "Videofiler" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "Billedfiler" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "Undertekstfiler" #: src/celluloid-menu.c:106 msgid "None" msgstr "Intet" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Ukendt" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "_Indlæs eksternt…" #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 msgid "No disc found" msgstr "Ingen disk fundet" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Fil" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "_Åbn…" #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "Åbn _placering…" #: src/celluloid-menu.c:236 msgid "Open _Disc…" msgstr "Åbn _disk…" #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "_Gem afspilningsliste" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "_Nyt vindue" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "_Rediger" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Præferencer" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "_Videospor" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "_Lydspor" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "_Undertekstspor" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_Vis" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "_Kontrolelementer til/fra" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "_Afspilningsliste til/fra" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Fuldskærm" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Hjælp" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "_Tastaturgenveje" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "_Om Celluloid" #: src/celluloid-menu.c:316 msgid "Open _Disc" msgstr "Åbn _disk" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "Afspilningen blev afsluttet unormalt. Årsag: %s." #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Placering:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Annuller" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Åbn" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "Kunne ikke anvende et eller flere MPV-tilvalg." #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "_Kopíer placering" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "_Fjern" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Tilføj…" #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "Tilføj _placering…" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "_Bland" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "Løkke_fil" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "Afspil afspilningsliste i _løkke" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Afspilningsliste" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "Tilføj plugin" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "Lua-plugins" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "JavaScript-plugins" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "C-plugins" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "Kunne ikke kopiere fil fra '%s' til '%s'. Årsag: %s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "Ingen plugins fundet" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Fjern" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "" "Er du sikker på, at du vil fjerne dette script? Handlingen kan ikke " "fortrydes." #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "Kunne ikke slette filen '%s'. Årsag: %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Aktivér klientsidedekorationer" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Aktivér mørkt tema" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "Vis flydende kontrolelementer i vinduestilstand" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "Skjul automatisk musemarkøren i vinduestilstand" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "Brug spring over-knapper til at styre afspilningsliste" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Husk placeringen af den sidste fil" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "Indlæs MPV-konfigurationsfil" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "MPV-konfigurationsfil:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "Indlæs MPV-input-konfigurationsfil" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "MPV-input-konfigurationsfil:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "Åbn altid et nyt vindue" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "Ignorer fejl ved afspilning" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "Hent metadata på forhånd" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "Aktivér understøttelse af MPRIS" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "Aktivér understøttelse af medietaster" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Ekstra MPV-tilvalg:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "Grænseflade" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "Konfigurationsfiler" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "Diverse" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "Plugins" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Gem" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Præferencer" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Åbn fil" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Åbn placering" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "Tilføj fil til afspilningsliste" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "Tilføj placering til afspilningsliste" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Vis præferencer-dialogen" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Kontrolelementer til/fra" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Afspilningsliste til/fra" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Fuldskærmstilstand til/fra" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Forlad fuldskærmstilstand" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "Skærmdisplay-tilstande normal og afspilningstid/varighed til/fra" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Vis filnavn på skærmdisplayet" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "Vis forløb, forløbet tid og varighed på skærmdisplayet" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "Søg 5 sekunder baglæns/fremad" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Søg præcist 1 sekund baglæns/fremad" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "Søg 1 minut baglæns/fremad" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "Søg præcist 5 sekunder baglæns/fremad" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "Søg til forrige/næste undertekst" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Ét billede baglæns/fremad" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "Søg til begyndelsen af det forrige/næste kapitel" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Langsommere/hurtigere afspilningshastighed med 10%" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Halve/dobbelte af den nuværende afspilningshastighed" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Nulstil afspilningshastigheden til normal" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Gå baglæns/fremad i afspilningslisten" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Fjern den valgte post fra afspilningslisten" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Gem afspilningsliste" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "Sæt/ryd A-B-løkkens punkter" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Uendelig løkke til/fra" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Pause eller fjern fra pause" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Afslut" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Gem nuværende afspilningsposition og afslut" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Løb gennem lydspor" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Højere/lavere lydstyrke" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "Mute eller slå lyden til" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Juster lydens forsinkelse med +/- 0,1 sekunder" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Undertekst synlighed til/fra" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Løb gennem tilgængelige undertekster" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Juster underteksternes forsinkelse med +/- 0,1 sekunder" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "Tilsidesæt stilen af SSA/ASS-undertekster til/fra" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Flyt undertekster op/ned" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "Kompatibilitetstilstand af højde-bredde-forhold for VSFilter til/fra" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Løb gennem videospor" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "Lavere/højere område for pan-og-skan" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Tag et skærmbillede" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Tag et skærmbillede, uden undertekster" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Tag et skærmbillede, sådan som vinduet viser det" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Tilpas videoens størrelse til halvdelen af dens oprindelige størrelse" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Tilpas videoens størrelse til dens oprindelige størrelse" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "" "Tilpas videoens størrelse til det dobbelte af dens oprindelige størrelse" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Juster kontrast" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Juster lysstyrke" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Juster gamma" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Juster farvemætning" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Aktivér eller deaktivér afsammenfletter" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "Løb gennem tilsidesættelse af højde-bredde-forhold" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Brugerflade" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Video" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Lyd" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Undertekst" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Afspilning" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Søgning" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" "Aktivering eller deaktivering af klientsidedekorationer kræver genstart før " "ændringerne træder i kraft." #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Tilføj fil til afspilningsliste" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Åbn fil" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Tilføj placering til afspilningsliste" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Åbn placering" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "Indlæs lydspor…" #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "Indlæs undertekstspor…" #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Gem afspilningsliste" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "En GTK-frontend til MPV" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "scootergrisen" celluloid-0.18/po/de_DE.po000066400000000000000000000732731356026115400153530ustar00rootroot00000000000000# German (de_DE) translations for gnome-mpv package. # gnome-mpv # Copyright (C) 2015 THE gnome-mpv'S COPYRIGHT HOLDER # This file is distributed under the same license as the gnone-mpv package. # Vincent Bermel , 2015. # Vincent Bermel , 2019. #zanata # gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: gnome-mpv 0.6\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-10-09 12:55+0000\n" "Last-Translator: Copied by Zanata \n" "Language-Team: German Translations\n" "Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "Ob Einstellungen schon von der vorherigen Version übernommen wurden" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Dunkles Thema verwenden" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Kombinierte Titel-/Menüleiste (CSD)" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "" "Ob im Fenstermodus ausblendende Bedienelemente verwendet werden sollen" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "Ob der Mauszeiger im Fenstermodus versteckt werden soll." #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" "Minimale Mauszeigergeschwindigkeit unterhalb derer die Kontrollflächen " "ausgeblendet werden." #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "Skip-Buttons zur Kontrolle der Wiedergabeliste verwenden" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "Speicherort der zuletzt gespielten Datei merken" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "Ob neue Fenster erzeugt werden sollen, wenn Celluloid bereits läuft" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "MPV-Einstellungen" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "MPV-Konfigurationsdatei" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "MPV-Konfiguration aus Datei laden" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Datei mit MPV-Tastenbelegungen" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "MPV-Konfiguration aus Datei laden" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "Ob Steuerung über MPRIS aktiviert werden soll" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "Ob mittels GNOME-Settings-Daemon Medientasten aktiviert werden sollen" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "" "Ob Metadaten für noch nicht abgespielte Elemente der Wiedergabeliste " "gesammelt werden sollen" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" "Fehlermeldung anzeigen, wenn beim Abspielen einer Datei ein Fehler auftritt?" " " #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Fensterbreite" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Fensterhöhe" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "Lautstärke" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Breite der Wiedergabeliste" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "Wiedergabesteuerung anzeigen" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Wiedergabeliste anzeigen" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "Zuletzt geöffnetes Verzeichnis" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "Eine GTK-Oberfläche für den Medienspieler mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Funktionen:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "Wiedergabeliste mit Drag and Drop-Unterstützung" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "Laden externer mpv-Konfigurationsdateien" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "MPRIS2 D-Bus Schnittstelle" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "Diese Veröffentlichungen umfasst die folgenden Änderungen:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 #, fuzzy msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" "Minimale Mauszeigergeschwindigkeit unterhalb derer die Kontrollflächen " "ausgeblendet werden." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 #, fuzzy msgid "Add option for suppressing playback errors" msgstr "Wiedergabefehler ignorieren" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" "Diese Liste ist unvollständig. Eine detaillierte Übersicht bietet das " "Changelog." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "Der \"Allgemein\"-Tab in den Einstellungen wurde aufgeteilt." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" "Das Verhalten des Ein-/Aus-Schalters für Wiedergabelisten wurde im " "Zusammenhang mit Tiling-Fenstermanagern verbessert." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "" "Im Zuge der Abschaffung des GNOME-Anwendungsmenüs wurde dieses in das " "Hauptmenü integriert." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "Separate MPRIS DBus-Verbindung für jedes Fenster" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "Unterstützung für MPRIS property LoopStatus" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" "Neue Kommondozeilenoption zum Setzen beliebiger MPV-Optionen: --mpv-options" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "XDG_PICTURES_DIR ist nun standardmäßiger Screenshot-Speicherort." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" "Verbesserte Handhabung der Optionen --window-scale, --autofit, --autofit-" "larger, and --autofit-smaller" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "Neue Kommandozeilenoption zum Setzen der WM_ROLE" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "Neuer Kontextmenüeintrag zum Entfernen von Wiedergabelisten-Elementen" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "Neuer Kontextmenüeintrag zum Kopieren von Wiedergabelisten-Elementen" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" "Neue Option, die es erlaubt, das Verhalten der \"Überspringen\"-Schaltfläche" " zu verändern. Zur Wahl stehen Kapitelwechsel und Wechsel zwischen " "Wiedergabelisten-Elementen." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "Der Dateiwähler akzeptiert nun auch nicht-lokale Orte" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "Neues Rechtsklickmenü um einzelne Datei in Schleife zu spielen" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" "Korrekte Handhabung von property change events für den Vollbildmodus und bei" " Fenstersklaierung" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "Mauszeiger im Fenstermodus automatisch verstecken" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "Das Hauptfenser von Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "Das Hauptfenster ohne CSD-Titelleiste" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "Das Hauptfenster mit Wiedergabeliste" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "Video;Movie;Film;Clip;Serie;Spieler;DVD,TV;Album;Musik;GNOME;mpv" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "Neues Fenster" #: src/celluloid-application.c:421 #, fuzzy msgid "Playing" msgstr "Wiedergabe" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Release-Version anzeigen" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "In Warteschlange aufnehmen" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "Neues Fenster aufrufen" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "OPTIONS" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "Fensterart festlegen" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "Nicht mit einer bereits laufenden Instanz verbinden" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Pause" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Abspielen" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Stoppen" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Vorspulen" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Zurückspulen" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Weiterspringen" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Zurückspringen" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "Wiedergabeliste in Schleife spielen" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Vollbild" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Fehler" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "Alle Dateien" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "Mediendateien" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "Audiodateien" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "Videodateien" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "Bilddateien" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "Untertiteldateien" #: src/celluloid-menu.c:106 msgid "None" msgstr "Keine" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Originalspur" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "_Importieren" #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 #, fuzzy msgid "No disc found" msgstr "Keine Plugins gefunden" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Datei" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "_Öffnen" #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "_Ort öffnen" #: src/celluloid-menu.c:236 #, fuzzy msgid "Open _Disc…" msgstr "_Ort öffnen" #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "Wiedergabeliste _speichern" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "_Neues Fenster" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "_Bearbeiten" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Einstellungen" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "_Videospur" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "_Tonspur" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "_Untertitel" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_Ansicht" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "Wiedergabe_steuerung ein/aus" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "_Wiedergabeliste ein/aus" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Vollbild" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Hilfe" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "_Tastenkürzel" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "_Über Celluloid" #: src/celluloid-menu.c:316 #, fuzzy msgid "Open _Disc" msgstr "Öffnen" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "Wiedergabe wurde abgebrochen. Grund: %s." #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Adresse (lokal oder Web):" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Abbrechen" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "Ö_ffnen" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "MPV-Optionen konnten nicht angewendet werden." #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "Ort _kopieren" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "_Entfernen" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Hinzufügen" #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "_Verzeichnis oder URL hinzufügen" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "_Zufällige Wiedergabe" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "_Datei in Schleife spielen" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "_Wiedergabeliste in Schleife spielen" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Wiedergabeliste" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "Plugin hinzufügen" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "Lua-Plugins" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "JavaScript-Plugins" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "C-Plugins" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "Datei konnte nicht von '%s' nach '%s' kopiert werden. Grund: %s." #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "Keine Plugins gefunden" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Entfernen" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "Wollen Sie dieses Skript unwiderruflich entfernen?" #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "Datei '%s' konnte nicht gelöscht werden. Grund: %s." #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Kombinierte Titel-/Menüleiste (CSD)" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Dunkles Thema verwenden" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "Ausblendende Bedienelemente in Fenstermodus" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "Autohide für Mauszeiger im Fenstermodus" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "" "Klick auf Doppelpfeil: Wechsel zum nächsten Element der Wiedergabeliste" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Speicherort der zuletzt gespielten Datei merken" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "MPV-Konfiguration aus Datei laden" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "MPV-Konfigurationsdatei" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "MPV-Tastenbelegung aus Datei laden" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "Datei mit MPV-Tastenbelegungen" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "Immer neues Fenster öffnen" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "Wiedergabefehler ignorieren" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "Metadaten im Voraus sammeln" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "MPRIS-Unterstützung aktivieren" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "Medientasten unterstützen" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Weitere Optionen für MPV" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "Schnittstelle" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "Konfigurationsdateien" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "Sonstiges" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "Plugins" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Speichern" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Einstellungen" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Öffnen" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Adresse öffnen" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "Datei zur Widergabeliste hinzufügen" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "Ort zur Wiedergabeliste hinzufügen" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Einstellungen anzeigen" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Wiedergabesteuerung ein/aus" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Wiedergabeliste ein/aus" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Vollbild" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Vollbildmodus verlassen" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "Wiedergabeposition einblenden/ausblenden" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Dateiname kurzzeitig einblenden" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "Wiedergabeposition kurzzeitig einblenden" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "15 Sekunden zurück/vorwärts springen" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Eine Sekunde zurück/vorwärts springen" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "Eine Minute zurück/vorwärts springen" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "5 Sekunden zurück/vorwärts springen" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "Zum vorherigen/nächsten Untertitel springen" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Einzelnen Frame zurück/nach vorne springen" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "Zum vorherigen/nächsten Kapitel springen" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Wiedergabegeschwindigkeit um 10% verringern/erhöhen" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Wiedergabegeschwindigkeit halbieren/verdoppeln" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Wiedergabegeschwindigkeit auf Normalwert zurücksetzen" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Vorheriger/nächster Titel der Wiedergabeliste" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Ausgewählten Titel aus Wiedergabeliste entfernen" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Wiedergabeliste speichern" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "Loop-Begrenzungen setzen/entfernen" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Endloses Loopen aktivieren" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Pause oder Fortsetzen" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Beenden" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Wiedergabeposition merken und beenden" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Zwischen verfügbaren Tonspuren springen" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Lautstärke verringern/erhöhen" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "Stummschalten" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Tonspur in Schritten von 0.1 Sekunden vor/zurück verschieben" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Untertitel anzeigen/ausblenden" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Zwischen verfügbaren Untertiteln springen" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Untertitel in Schritten von 0.1 Sekunden verschieben" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "ASS-Untertitelstil erzwingen" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Untertitel höher/tiefer anzeigen" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "Streckungskorrektor für Untertiteldarstellung ein/aus" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Zwischen verfügbaren Videospuren springen" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "Videoformat schrittweise einpassen (Pan & Scan)" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Bildschirmfoto aufnehmen" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Bildschirmfoto ohne Untertitel aufnehmen" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Foto des Fensterinhalts aufnehmen" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Halbe Videogröße" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Ursprüngliche Videogröße" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "Doppelte Videogröße" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Kontrast anpassen" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Helligkeit anpassen" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Gammawert anpassen" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Farbsättigung anpassen" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Deinterlacing (de)aktivieren" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "Seitenverhältnis umschalten" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Benutzeroberfläche" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Videowiedergabe" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Audiowiedergabe" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Untertitel" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Wiedergabesteuerung" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Wiedergabeposition" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "Die Änderung der Fensterdekoration erfordert einen Neustart." #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Datei zur _Wiedergabeliste hinzufügen" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Datei öffnen" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Verzeichnis oder URL zur Wiedergabeliste hinzufügen" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Adresse öffnen" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "Audiospur laden..." #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "Untertitel laden..." #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Wiedergabeliste speichern" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "Eine GTK-Oberfläche für MPV" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "Vincent Bermel" celluloid-0.18/po/eo.po000066400000000000000000000720161356026115400150100ustar00rootroot00000000000000# Tirifto , 2019. #zanata # gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: celluloid\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-07-07 00:28+0700\n" "PO-Revision-Date: 2019-10-09 12:54+0000\n" "Last-Translator: Copied by Zanata \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" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "Ĉu la agordoj jam transmetiĝis de la antaŭa versio" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Ŝalti aŭ malŝalti malhelan haŭton" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Ŝalti aŭ malŝalti klient-flankajn ornamaĵojn" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "Ĉu uzi surfilmajn regilojn en fenestra reĝimo" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "Ĉu memfare kaŝi musmontrilon en fenestra reĝimo" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "Minimuma rapido de musmontrilo je kiu montriĝos surfilmaj regiloj." #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "Ĉu uzi preterpasajn butonojn por regi ludliston" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "Ĉu memorigi laste atingitan dosierujon al la dosierelekta interagujo" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "Ĉu krei ekstrajn fenestrojn kiam unu fenestro jamas" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Elektebloj transdonotaj al mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Dosierindiko de la agorda dosiero de mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "Enlegi aŭ ne enlegi la agordan dosieron de mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Dosierindiko de la eniga agorda dosiero de mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "Enlegi aŭ ne enlegi la enigan agordan dosieron de mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "Ĉu ŝalti subtenon de MPRIS" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" "Ĉu ŝalti subtenon de aŭdovidaj klavoj surbaze de « GNOME-Settings-Daemon »" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "Ĉu antaŭlegi metadatumojn por nenunaj ludlisteroj" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "Ĉu montri erarmesaĝon kiam ludado de dosiero finiĝas per eraro" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Larĝo de la fenestro" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Alto de la fenestro" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "Laŭteco de la ludilo" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Larĝo de la ludlisto" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "Montri aŭ ne montri la regilojn" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Montri aŭ ne montri la ludliston" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "URI de la laste atingita dosierujo" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celuloido" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "Fasado per GTK+ por mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Funkcioj:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "Ŝovmeta ludlisto" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "Enlegado de eksteraj agordaj dosieroj de mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "Interfaco de « MPRIS2 D-Bus »" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "Ĉi tiu eldono enhavas la jenajn ŝanĝojn:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 #, fuzzy msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "Minimuma rapido de musmontrilo je kiu montriĝos surfilmaj regiloj." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 #, fuzzy msgid "Add option for suppressing playback errors" msgstr "Malatenti erarojn de ludado" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" "La listigo estas nekompleta. Vidu protokolon de « git » por plena ŝanĝaro." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "Dividi la Ĝeneralan langeton en la agorda interagujo" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" "Plibonigi konduton dum baskuligo de ludlisto en kahelaj fenestraj aranĝiloj" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "Movi erojn de aplikaĵa menuo al ĉefmenuo" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "Uzi apartan konekton de « MPRIS DBus » por ĉiu fenestro" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "Aldoni subtenon por eco « LoopStatus » de MPRIS" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" "Aldoni elekteblon « --mpv-options » por agordado de ajnaj elektebloj de mpv " "de la konzolo" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "Agordi la implicitan ekrankopian dosierujon al XDG_PICTURES_DIR" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" "Plibonigi traktadon de « --window-scale », « --autofit », « --autofit-larger" " », kaj « --autofit-smaller »" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "Aldoni konzolan elekteblon por agordi econ « WM_ROLE »" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "Aldoni kuntekstan menuon por forigado de ludlisteroj" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "Aldoni kuntekstan menueron por kopiado de ludlistaj indikoj" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" "Aldoni elekteblon por ŝanĝigi ludlisterojn anstataŭ ĉapitrojn per " "preterpasaj butonoj" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "Akceptigi forajn lokojn al la dosiera elektilo" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "Aldoni dekstraklakan menueron por ripetado de unu dosiero" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "Trakti okazojn de ecaj ŝanĝoj por « fullscreen » kaj « window-scale »" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "Aldoni elekteblon por memfara kaŝo de musmontrilo en fenestra reĝimo" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "La ĉefa fenestro montras la funkciantan aplikaĵon" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "La ĉefa fenestro kun malŝaltitaj klient-flankaj ornamaĵoj" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "La ĉefa fenestro kun malfermita ludlisto" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "io.github.celluloid_player.Celluloid" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "Disko;DVD;Filmo;GNOME;KD;mpv;Muziko;Seriaĵo;Televido;TV;" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "Nova fenestro" #: src/celluloid-application.c:421 msgid "Playing" msgstr "Ludanta" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Montri version" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "Envicigi" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "Krei novan fenestron" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "ELEKTEBLOJ" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "Agordi rolon de la fenestro" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "Ne konekti al jama rulaĵo" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Paŭzigi" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Ludi" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Haltigi" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Pluen" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Reen" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Sekva ĉapitro" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Antaŭa ĉapitro" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "Ripetadi ludliston" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Baskuligi tutekranan reĝimon" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Eraro" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "Ĉiuj dosieroj" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "Aŭdovidaj dosieroj" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "Sonaj dosieroj" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "Filmaj dosieroj" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "Bildaj dosieroj" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "Subtekstaj dosieroj" #: src/celluloid-menu.c:106 msgid "None" msgstr "Neniu" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Nekonata" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "En_legi eksteran…" #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 #, fuzzy msgid "No disc found" msgstr "Neniuj kromprogramoj troviĝis" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Dosiero" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "_Malfermi…" #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "Malfermi _lokon…" #: src/celluloid-menu.c:236 #, fuzzy msgid "Open _Disc…" msgstr "Malfermi _lokon…" #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "_Konservi ludliston" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "_Nova fenestro" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "R_edakti" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Agordoj" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "Variaĵo de _filmo" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "Variaĵo de _sono" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "Variaĵo de s_ubteksto" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_Vido" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "_Baskuligi regilojn" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "_Baskuligi ludliston" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Tutekrana reĝimo" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Helpo" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "_Klavkombinoj" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "_Pri Celuloido" #: src/celluloid-menu.c:316 #, fuzzy msgid "Open _Disc" msgstr "Malfermi dosieron" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "Ludo ĉesis malnormale. Kialo: %s" #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Loko:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Nuligi" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Malfermi" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "Malsukcesis apliki unu aŭ pli da elektebloj de MPV" #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "_Kopii lokon" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "_Forigi" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Aldoni…" #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "Aldoni _lokon…" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "_Miksi" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "Ripedati _dosieron" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "Ripetadi _ludliston" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Ludlisto" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "Aldoni kromprogramon" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "Kromprogramoj en Lua" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "Kromprogramoj en Ĝavoskripto" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "Kromprogramoj en C" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "Malskucesis kopii dosieron de « %s » al « %s ». Kialo: « %s »" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "Neniuj kromprogramoj troviĝis" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Forigi" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "Ĉu vi certe volas forigi ĉi tiun skripton? Tiu agon ne eblos malfari." #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "Malsukcesis forigi dosieron « %s ». Kialo: %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Ŝalti klient-flankajn ornamaĵojn" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Ŝalti malhelan haŭton" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "Uzi surfilmajn regilojn en fenestra reĝimo" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "Memfare kaŝi musmontrilon en fenestra reĝimo" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "Uzi preterpasajn butonojn por regi ludliston" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Memori lokon de lasta dosiero" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "Enlegi agordan dosieron de MPV" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "Agorda dosiero de MPV:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "Enlegi enigan agordan dosieron de MPV" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "Eniga agorda dosiero de MPV:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "Ĉiam malfermi novan fenestron" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "Malatenti erarojn de ludado" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "Antaŭpeti metadatumojn" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "Ŝalti subtenon de MPRIS" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "Ŝalti subtenon de aŭdovidaj klavoj" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Ekstraj elektebloj de MPV:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "Fasado" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "Agordaj dosieroj" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "Diversaj" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "Kromprogramoj" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Konservi" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Agordoj" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Malfermi dosieron" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Malfermi lokon" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "Aldoni dosieron al ludlisto" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "Aldoni lokon al ludlisto" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Montri agordan interagujon" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Baskuligi regilojn" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Baskuligi ludliston" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Baskuligi tutekranan reĝimon" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Forlasi tutekranan reĝimon" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "Baskuligi statojn de surfilma regilaro inter normala kaj tempomontra" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Montri dosiernomon en la surfilma regilaro" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "Montri progreson, pasintan tempon, kaj daŭron en la surfilma regilaro" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "Tempiri 5 sekundojn reen/pluen" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Precize tempiri 1 sekundon reen/pluen" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "Tempiri 1 minuton reen/pluen" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "Precize tempiri 5 sekundojn reen/pluen" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "Tempiri al la lasta/sekva subteksto" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Tempiri unu filmeron reen/pluen" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "Tempiri al la komenco de la lasta/sekva ĉapitro" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Alkrementi/dekrementi ludrapidon je 10%" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Du onigi/obligi la nunan ludrapidon" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Restarigi norman ludrapidon" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Iri pluen/antaŭen ludliste" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Forigi elektitan ludlisteron" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Konservi ludliston" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "Meti/forigi limojn A-B de ripetado" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Baskuligi senfinan ripetadon" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Paŭzigi aŭ malpaŭzigi" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Ĉesi" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Konservi nunan templokon kaj ĉesi" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Cikli tra sonpecoj" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "(Mal)laŭtigi" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "(Mal)silentigi" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Alĝustigi prokraston de sono po 0,1 sekundoj" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Baskuligi videblecon de subteksto" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Cikli tra eblaj subtekstoj" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Alĝustigi prokraston de subtekstoj po 0,1 sekundoj" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "Baskuligi transpason de stilo de SSA/ASS-subteksto" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Movi subtekstojn supren/suben" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "Baskuligi reĝimon de formata kongrueco kun VSFilter" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Cikli tra variaĵoj de filmo" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "(Mal)pliigi amplekson de glitado" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Fari ekrankopion" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Fari ekrankopion, sen subteksto" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Fari ekrankopion tian, kian montras la fenestro" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Regrandigi filmon al duono de originala grando" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Regrandigi filmon al originala grando" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "Regrandigi filmon al duoblo de originala grando" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Alĝustigi kontraston" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Alĝustigi helecon" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Alĝustigi gamaon" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Alĝustigi saturecon" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Aktivigi aŭ malaktivigi malinterplektilon" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "Cikligi transpason de bildformato" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Fasado" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Filmo" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Sono" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Subteksto" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Ludo" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Tempiro" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" "(Mal)ŝalto de klient-flankaj ornamaĵoj postulas restartigon por efektiviĝi" #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Aldoni dosieron al ludlisto" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Malfermi dosieron" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Aldoni lokon al ludlisto" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Malfermi lokon" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "Enlegi variaĵon de sono…" #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "Enlegi variaĵon de subteksto…" #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Konservi ludliston" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "Fasado por MPV per GTK" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "Tirifto" celluloid-0.18/po/es.po000066400000000000000000000772711356026115400150240ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # Toni Estevez , 2019. #zanata # gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-11-03 04:51+0000\n" "Last-Translator: gnome-mpv \n" "Language-Team: Spanish\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "Importar la configuración de una versión anterior" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Activar el tema oscuro" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Activar las decoraciones del lado del cliente" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "Usar los controles flotantes en el modo de ventana" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "Ocultar automáticamente el puntero del ratón en el modo de ventana" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" "La velocidad mínima del cursor a la que se ocultarán los controles " "flotantes." #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "Usar los botones de salto para controlar la lista de reproducción" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "Recordar la ubicación del último archivo abierto" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "Crear ventanas nuevas cuando ya exista una instancia" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Opciones extra para mpv:" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Archivo de configuración de mpv:" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "Cargar un archivo de configuración de mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Archivo de configuración de la entrada de mpv:" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "Cargar un archivo de configuración de la entrada de mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "Activar la compatibilidad con MPRIS" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "Activar la compatibilidad con las teclas multimedia de GNOME" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "Precargar los metadatos de las listas de reproducción no actuales" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" "Mostrar un mensaje de error cuando la reproducción de un archivo finaliza " "con un error" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Anchura de la ventana" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Altura de la ventana" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "Volúmen del reproductor" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Anchura de la lista de reproducción" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "Mostrar los controles" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Mostrar la lista de reproducción" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "Ubicación de la última carpeta accedida" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celuloide" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "Interfaz GTK para el reproductor mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" "Celuloide es un reproductor multimedia sencillo que puede reproducir " "prácticamente cualquier formato de vídeo y audio. Admite listas de " "reproducción y controles de reproducción MPRIS2. El diseño de Celuloide " "sigue las guías de interfaz de GNOME, pero también puede adaptarse a otros " "entornos que no usan decoraciones del lado del cliente (CSD). Se basa en las" " bibliotecas mpv y GTK." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Características:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "Permite arrastrar y soltar entradas en la lista de reproducción" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "Carga archivos de configuración externos de mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "Interfaz de D-Bus de MPRIS2" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "Esta versión contiene los cambios siguientes:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "Cambia el nombre del proyecto a Celuloide" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "Añade la traducción al turco hecha por TeknoMobil" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "Añade la traducción al esperanto hecha por F3nd0" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "Cambia de opengl-cb a la nueva API de representación" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "Maneja las combinaciones de teclas de teclado numérico" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "Maneja las combinaciones de teclas de Unicode" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "Reenvía los eventos de las teclas multimedia a mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" "Añade una clave de dconf para controlar la velocidad del cursor a la que se " "ocultan los controles" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "Añade una opción para suprimir los errores de reproducción" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" "Este listado está incompleto. Consulte el registro de Git para obtener un " "registro de cambios completo." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "Divide la pestaña General en el diálogo de preferencias" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" "Mejora el comportamiento al mostrar u ocultar la lista de reproducción en " "los gestores de ventana de mosaico" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "Traslada los elementos del menú de aplicación al menú principal" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "Usa una conexión DBus de MPRIS separada para cada ventana" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "Añade compatibilidad con la propiedad LoopStatus de MPRIS" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" "Añade la opción --mpv-options para configurar opciones arbitrarias de mpv " "desde la línea de órdenes" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "" "Configura como carpeta de capturas de pantalla predeterminada la carpeta " "XDG_PICTURES_DIR" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" "Mejora el manejo de las opciones --window-scale, --autofit, --autofit-larger" " y --autofit-smaller" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "Añade una opción a la línea de órdenes para configurar WM_ROLE" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" "Añade un elemento al menú contextual para eliminar elementos de la lista de " "reproducción" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" "Añade un elemento al menú contextual para copiar la ubicación de los " "elementos de la lista de reproducción" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" "Añade una opción para que los botones de salto seleccionen las entradas de " "la lista de reproducción en lugar de los capítulos" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "Hace que el selector de archivos acepte ubicaciones no locales" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" "Añade una entrada en el menú contextual para reproducir en bucle un único " "archivo" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" "Maneja los eventos de cambio de propiedad para la pantalla completa y la " "escala de la ventana" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "" "Añade una opción para ocultar automáticamente el cursor del ratón en el modo" " de ventana" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "La ventana principal con la aplicación en acción" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "" "La ventana principal con las decoraciones del lado del cliente desactivadas" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "La ventana principal con la lista de reproducción abierta" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "Reproductor multimedia" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "Reproduce películas y vídeos" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "io.github.celluloid_player.Celluloid" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" "vídeo;película;filme;clip;serie;reproductor;DVD;TV;disco;álbum;música; " "GNOME;mpv;" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "Ventana nueva" #: src/celluloid-application.c:421 msgid "Playing" msgstr "En reproducción" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Mostrar la versión" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "A la cola" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "Crear una nueva ventana" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "OPCIONES" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "Configurar el comportamiento de la ventana" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "No conectar a una instancia que ya se esté ejecutando" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Pausar" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Reproducir" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Detener" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Avanzar" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Rebobinar" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Capítulo siguiente" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Capítulo anterior" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "Lista de reproducción en bucle" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Activar/desactivar la pantalla completa" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Error" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "Todos los archivos" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "Archivos multimedia" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "Archivos de audio" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "Archivos de vídeo" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "Archivos de imagen" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "Archivos de subtítulos" #: src/celluloid-menu.c:106 msgid "None" msgstr "Ninguna" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Desconocida" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "_Abrir..." #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 msgid "No disc found" msgstr "No se ha encontrado ningún disco" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Archivo" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "_Abrir..." #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "Abrir una _ubicación..." #: src/celluloid-menu.c:236 msgid "Open _Disc…" msgstr "Abrir un _disco..." #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "_Guardar la lista de reproducción..." #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "Ventana _nueva" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "_Editar" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Preferencias" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "Pista de _vídeo" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "Pista de _audio" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "Pista de _subtítulos" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_Vista" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "Mostrar/ocultar los _controles" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "Mostrar/ocultar la _lista de reproducción" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Pantalla completa" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "Ay_uda" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "Atajos de _teclado" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "_Acerda de Celuloide" #: src/celluloid-menu.c:316 msgid "Open _Disc" msgstr "Abrir un _disco" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "La reproducción ha terminado de forma anómala. Razón: %s." #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Ubicación:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Cancelar" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Abrir" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "No se han podido aplicar una o más opciones de mpv." #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "_Copiar la ubicación" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "_Borrar" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Añadir..." #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "Añadir una _ubicación..." #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "_Mezclar" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr " _Archivo en bucle" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "_Lista de reproducción en bucle" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Lista de reproducción" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "Añadir un complemento" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "Complementos Lua" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "Complementos JavaScript" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "Complementos C" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "No se ha podido copiar el archivo de «%s» a «%s». Razón: %s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "No se han encontrado complementos" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Eliminar" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "" "¿Seguro que quiere eliminar este guion? Esta acción no se puede deshacer." #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "No se ha podido eliminar el archivo «%s». Razón: %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Activar las decoraciones del lado del cliente" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Activar el tema oscuro" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "Usar controles flotantes en el modo de ventana" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "Ocultar automáticamente el puntero del ratón en el modo de ventana" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "Usar los botones de salto para controlar la lista de reproducción" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Recordar la ubicación del último archivo" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "Cargar un archivo de configuración de mpv" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "Archivo de configuración de mpv:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "Cargar un archivo de configuración de la entrada de mpv" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "Archivo de configuración de la entrada de mpv:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "Abrir siempre una ventana nueva" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "Ignorar los errores de reproducción" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "Precargar los metadatos" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "Activar la compatibilidad con MPRIS" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "Activar las teclas multimedia" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Opciones extra de mpv:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "Interfaz" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "Archivos de configuración" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "Miscelánea" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "Complementos" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Guardar" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Preferencias" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Abrir un archivo" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Abrir una ubicación" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "Añadir un archivo a la lista de reproducción" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "Añadir una ubicación a la lista de reproducción" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Mostrar el diálogo de preferencias" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Mostrar/ocultar los controles" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Mostrar/ocultar la lista de reproducción" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Activar/desactivar el modo de pantalla completa" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Salir del modo de pantalla completa" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "Mostrar/ocultar en pantalla el tiempo de reproducción y la duración" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Mostrar en pantalla el nombre del archivo" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "Mostrar en pantalla el progreso, el tiempo transcurrido y la duración" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "Saltar 5 segundos hacia atrás/adelante" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Saltar exactamente 1 segundo hacia atrás/adelante" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "Saltar 1 minuto hacia atrás/adelante" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "Saltar exactamente 5 segundos hacia atrás/adelante" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "Saltar a los subtítulos anteriores/siguientes" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Retroceder/avanzar un solo fotograma" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "Saltar al principio del capítulo anterior/siguiente" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Disminuir/aumentar la velocidad de reproducción un 10%" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Reducir a la mitad o duplicar la velocidad de reproducción" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Restablecer la velocidad de reproducción" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Retroceder/avanzar en la lista de reproducción" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Borrar el elemento seleccionado de la lista de reproducción" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Guardar la lista de reproducción" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "Fijar/borrar los puntos de bucle A-B" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Activar/desactivar la reproducción en bucle" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Pausar/reanudar" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Salir" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Guardar la posición de reproducción actual y salir" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Seleccionar la pista de audio siguiente" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Disminuir/aumentar el volumen" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "Silenciar/activar el sonido" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Ajustar el retraso del audio en +/- 0,1 segundos" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Mostrar/ocultar los subtítulos" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Seleccionar los subtítulos siguientes" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Ajustar el retraso de los subtítulos en +/- 0,1 segundos" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "Activar/desactivar la anulación del estilo de los subtítulos SSA/ASS " #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Mover los subtítulos arriba/abajo" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "Activar/desactivar el modo de compatibilidad de aspecto de VSFilter" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Seleccionar la pista de vídeo siguiente" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "Disminuir/aumentar el rango de reencuadre (pan and scan)" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Tomar una captura de pantalla" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Tomar una captura de pantalla, sin subtítulos" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Tomar una captura de pantalla, tal como se muestra en la ventana" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Redimensionar el vídeo a la mitad de su tamaño original" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Redimensionar el vídeo a su tamaño original" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "Redimensionar el vídeo al doble de su tamaño original" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Ajustar el contraste" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Ajustar el brillo" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Ajustar la correcció gamma" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Ajustar la saturación" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Activar/desactivar el desentrelazado" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "Seleccionar la relación de aspecto siguiente" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Interfaz de usuario" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Vídeo" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Audio" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Subtítulos" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Reproducción" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Búsqueda" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" "Para activar o desactivar las decoraciones del lado del cliente es necesario" " reiniciar la aplicación." #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Añadir un archivo a la lista de reproducción" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Abrir un archivo" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Añadir una ubicación a la lista de reproducción" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Abrir una ubicación" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "Cargar una pista de audio..." #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "Cargar una pista de subtítulos..." #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Guardar la lista de reproducción" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "Una interfaz GTK para el reproductor mpv" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "" "Toni Estevez, toni.estevez@gmail.com>\n" "Sergio D. Márquez, marquez.sergio.d@gmail.com" celluloid-0.18/po/fa.po000066400000000000000000000725211356026115400147740ustar00rootroot00000000000000# Danial Behzadi , 2019. #zanata # gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: celluloid\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-09 19:52+0700\n" "PO-Revision-Date: 2019-11-03 05:00+0000\n" "Last-Translator: gnome-mpv \n" "Language-Team: Persian\n" "Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "این که تنظمیات از نگارش پیشین مهاجرت داده شده یا نه" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "به یا از کار انداختن زمینهٔ تاریک" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "به یا از کار انداختن تزیینات سمت کارخواه" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "این که در حالت پنجره‌ای از واپایشگرهای شناور استفاده شود یا نه" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "این که در حالت پنجره‌ای نشانگر موشی پنهان شود یا نه" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "کمینهٔ سرعت نشانگر برای آشکار شدن واپایشگرهای شناور." #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "این که برای واپایش فهرست پخش از دکمه‌های پرش استفاده شود یا نه" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "این که گفت‌وگوی گزینشگر پرونده، آخرین شاخه را به خاطر بسپرد یا نه" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "این که هنگام باز بودن یک اجرا، پنجره‌های جدید گشوده شوند یا نه" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "انتخاب‌های داده شده به mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "مسیر پروندهٔ پیکربندی mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "بار کردن یا نکردن پروندهٔ پیکربندی mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "مسیر پروندهٔ پیکربندی ورودی mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "بار کردن یا نکردن پروندهٔ پیکربندی ورودی mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "این که MPIRS به کار انداخته شود یا نه" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" "این که پشتیبانی کلیدهای رسانه‌ای مبتنی بر GNOME-Settings-Daemon به کار " "انداخته شود یا نه" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "این که فراداده برای ورودی‌های فهرست پخش ناجاری، پیش‌واکشی شود یا نه" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" "این که هنگام پخش پرونده‌ای با پایان خطادار، پیام خطایی نشان داده شود یا نه" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "پهنای پنجره" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "بلندای پنجره" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "حجم پخش‌کننده" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "پهنای فهرست پخش" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "نمایش یا عدم نمایش واپایشگرها" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "نمایش یا عدم نمایش فهرست پخش" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "نشانی آخرین شاخه" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "سلولوید" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "پیشانهٔ ‪GTK+‬ برای mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" "سلولوید یک پخش‌کنندهٔ ساده است که می‌تواند تقریباً تمام قالب‌های صوتی و " "تصویری را پخش کند. این برنامه از فهرست‌های پخش و واپایگشرهای پخش‌کنندهٔ " "رسانهٔ MPIRS2 پشتیبانی می‌کند. طرّاحی سلولوید پیرو رهنمودهای رابط انسانی " "گنوم بوده، ولی برای دیگر سامانه‌ها که از تزیینات سمت کارخواه (CSD) استفاده " "نمی‌کنند نیز قابل تطبیق است. این برنامه بر مبنای کتابخانهٔ mpv و GTK است." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "ویژگی‌ها:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "فهرست پخش با کشش و رهایی" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "بار کردن پرونده‌های پیکربندی mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "رابط دی‌باس MPIRS2" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "این ارائه شامل تغییرات زیر است:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "تغییر نام پروژه به سلولوید" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "افزودن ترجمهٔ ترکی به دست @TeknoMobil" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "افزودن ترجمهٔ اسپرانتو به دست @F3nd0" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "مهاجرت از opengl-cb به API پرداخت جدید" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "مدیریت ترکیب‌کلیدهای صفحه‌عدد" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "مدیریت ترکیب‌کلیدهای یونی‌کد" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "هدایت رویدادهای کلید رسانه به mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "افزودن کلید dconf برای واپایش سرعت نشانگر برای آشکارسازی واپایشگرها" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "پخش‌کنندهٔ رسانه" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "پخش فیلم‌ها و ویدیوها" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "io.github.celluloid_player.Celluloid" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;ویدیو;فیلم;کلیپ;سریال;پخش;دی‌وی‌دی;تلویزیون;سی‌دی;آلبوم;آهنگ;موسیقی;گنوم;" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "پنجرهٔ جدید" #: src/celluloid-application.c:421 msgid "Playing" msgstr "در حال پخش" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "نمایش نگارش ارائه" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "صف کردن" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "ایجاد پنجره‌ای جدید" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "گزینه‌ها" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "تنظیم نقش پنجره" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "وصل نشدن به یک نمونهٔ در حال اجرا" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "مکث" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "پخش" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "توقّف" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "جلو" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "عقب" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "فصل بعدی" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "فصل پیشین" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "فهرست پخش حلقه‌ای" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "تغییر حالت تمام‌صفحه" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "خطا" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "تمام پرونده‌‌ها" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "پرونده‌های رسانه" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "پرونده‌های صوتی" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "پرونده‌های ویدیویی" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "پرونده‌های تصویر" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "پرونده‌های زیرنویس" #: src/celluloid-menu.c:106 msgid "None" msgstr "هیچ‌کدام" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "ناشناخته" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "_بار کردن از بیرون…" #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 msgid "No disc found" msgstr "هیچ دیسکی پیدا نشد" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_پرونده" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "_گشودن…" #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "گشودن _موقعیت…" #: src/celluloid-menu.c:236 msgid "Open _Disc…" msgstr "گشودن _دیسک…" #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "_ذخیرهٔ فهرست پخش" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "پنجرهٔ _جدید" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "_ویرایش" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_ترجیحات" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "قطعهٔ _ویدیویی" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "قطعهٔ _صوتی" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "قطعهٔ _زیرنویس" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_نما" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "تغییر _حالت واپایشگرها" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "تغییر _حالت فهرست پخش" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_تمام‌صفحه" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_راهنما" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "_میان‌برهای صفحه‌کلید" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "_دربارهٔ سلولوید" #: src/celluloid-menu.c:316 msgid "Open _Disc" msgstr "گشودن _دیسک" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "" #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "موقعیت:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_لغو" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_گشودن" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "شکست در اعمال برخی گزینه‌های mpv." #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "_رونوشت از موقعیت" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "_برداشتن" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_افزودن…" #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "افزودن _موقعیت…" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "_بر زدن" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "تکرار _پرونده" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "تکرار _فهرست پخش" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "فهرست پخش" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "افزودن افزایه" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "افزایه‌های Lua" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "افزایه‌های جاوااسکریپت" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "افزایه‌های سی" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "هیچ افزایه‌ای پیدا نشد" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "برداشتن" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "" #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "به کار انداختن تزیینات سمت کارخواه" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "به کار انداختن زمینهٔ تاریک" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "استفاده از واپایشگرهای شناور در حالت پنجره‌ای" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "نهفتن خودکار نشانگر موشی در حالت پنجره‌ای" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "استفاده از دکمه‌های پرش برای واپایش فهرست پخش" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "به خاطر سپردن موقعیت آخرین پرونده" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "بار کردن پروندهٔ پیکربندی mpv" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr " پروندهٔ پیکربندی mpv:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "بار کردن پروندهٔ پیکربندی ورودی mpv" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr " پروندهٔ پیکربندی ورودی mpv:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "گشودن همیشگی پنجرهٔ جدید" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "چشم‌پوشی از خطاهای پخش" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "پیش‌واکشی فراداده" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "به کار انداختن پشتیبانی MPRIS" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "به کار انداختن پشتبانی کلیدهای رسانه" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "گزینه‌های اضافی mpv:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "رابط" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "پرونده‌های پیکربندی" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "متفرّقه" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "افزایه‌ها" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_ذخیره" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "ترجیحات" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "گشودن پرونده" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "گشودن موقعیت" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "افزودن پرونده به فهرست پخش" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "افزودن موقعیت به فهرست پخش" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "نمایش گفت‌وگوی ترجیحات" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "تغییر حالت واپایشگرها" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "تغییر حالت فهرست پخش" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "تغییر حالت تمام‌صفحه" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "خروجی از حالت تمام‌صفحه" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "نماگرفت" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "رابط کاربری" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "ویدیو" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "صدا" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "زیرنویس" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "پخش" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "رسیدن" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "افزودن پرونده به فهرست پخش" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "گشودن پرونده" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "افزودن موقعیت به فهرست پخش" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "گشودن موقعیت" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "بار کردن قطعهٔ صوتی…" #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "بار کردن قطعهٔ زیرنویس…" #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "ذخیرهٔ فهرست پخش" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "یک پیشانهٔ ‪GTK‬ برای mpv" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "دانیال بهزادی " celluloid-0.18/po/fr.po000066400000000000000000000771111356026115400150150ustar00rootroot00000000000000# French translations for gnome-mpv package # gnome-mpvパッケージに対する日本語翻訳. # Copyright (C) 2015 The gnome-mpv'u copyright holder # This file is distributed under the same license as the gnome-mpv package. # Harenome Ranaivorarivony Razanajato , 2015. # Clement Lefebvre , 2019. #zanata # gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: gnome-mpv 0.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-10-09 03:27+0000\n" "Last-Translator: Clement Lefebvre \n" "Language-Team: Français\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Zanata 4.6.2\n" "X-Poedit-Basepath: ../src\n" "X-Poedit-SearchPath-0: .\n" "X-Poedit-SearchPathExcluded-0: mpv.c\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "" "Si les paramètres ont déjà été migré à partir de la version précédente" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Activer le thème sombre" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Activer ou désactiver les décorations côté client" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "Utilisation ou non des commandes flottantes en mode fenêtré" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "" "Si oui ou non le curseur de la souris doit être masqué automatiquement en " "mode fenêtré" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" "La vitesse de pointeur minimum à laquelle les commandes flottantes seront " "cachées." #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "" "Utiliser ou non les boutons de saut pour contrôler la liste de lecture" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "" "Si oui ou non le sélecteur de fichier doit se souvenir du dernier dossier " "accédé" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "" "Si oui ou non il faut créer de nouvelles fenêtres quand il y a déjà une " "instance en cour" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Options à passer à mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Chemin d'accès du fichier de configuration de mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "Charger ou non le fichier de configuration de mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Fichier de configuration mpv d'entrée" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "Charger ou non le fichier de configuration de l'entrée de mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "Activer ou non le support MPRIS" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" "Activer ou non de la prise en charge des touches multimédia de GNOME-" "Settings-Daemon" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "Pré-rechercher ou non les métadonnées pour les entrées non joué" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" "Si oui ou non il faut afficher un message d'erreur lorsque la lecture d'un " "fichier se finit avec une erreur" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Largeur de la fenêtre" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Hauteur de la fenêtre" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "Volume du lecteur" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Largeur de la liste de lecture" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "Afficher ou cacher les contrôles" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Afficher ou cacher la liste de lecture" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "Chemin d'accès du dernier dossier consulté" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "Interface en GTK+ pour mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" "Celluloid est un lecteur multimédia simple capable de lire pratiquement tous" " les formats vidéo et audio. Il supporte les listes de lecture et le " "contrôle à distance MPRIS2. Sa conception est basée sur les recommandation " "GNOME en matière d'interfaces graphiques mais il peut aussi s'adapter aux " "autres environnements de bureaux qui n'utilisent pas de décorations de " "fenêtres côté client (CSD)." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Fonctionnalités" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "Glisser-déposer la liste de lecture" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "Chargement des fichiers de configuration externes pour mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "Interface D-Bus MPRIS2" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "Cette version apporte les changement suivants :" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "Changement de nom de projet en Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "Ajout des traductions turques par @TeknoMobil" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "Ajout des traductions Esperanto par @F3nd0" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "Migration de opengl-cb à la nouvelle API de rendu" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "Support des touches de raccourcis numériques" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "Support des touches de raccourcis unicode" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "Envoi des évènements de touches multimédia vers mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 #, fuzzy msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" "La vitesse de pointeur minimum à laquelle les commandes flottantes seront " "cachées." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 #, fuzzy msgid "Add option for suppressing playback errors" msgstr "Ignorer les erreurs de lecture" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" "Cette liste n'est pas complète. Pour voir tous les changements utilisez git" " log." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "Onglet général scindé dans les préférences" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" "Meilleur comportement lors de la bascule de la liste de lecture sous les " "gestionnaires de fenêtres de carrelage" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "Éléments du menu d'application déplacés vers le menu principal " #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "Utilisation d'une connexion DBUS MPRIS unique pour chaque fenêtre" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "Ajout du support pour la propriété MPRIS LoopStatus" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" "Nouvelle option --mpv-options pour passer des options à mpv via la ligne de " "commande" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "Répertoire de capture d'écran par défaut réglé à XDG_PICTURES_DIR" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" "Meilleur support de --window-scale, --autofit, --autofit-larger et " "--autofit-smaller" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "Ajout d'une option de ligne de commande pour renseigner WM_ROLE" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" "Ajout d'une option pour retirer les éléments de la liste de lecture dans le " "menu contextuel" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" "Ajout d'une option pour copier l'emplacement d'éléments de la liste de " "lecture dans le menu contextuel" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" "Ajout d'une option pour faire agir les boutons de saut sur les éléments de " "la liste de lecture plutôt que sur les chapîtres" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "Le sélecteur de fichiers accepte les emplacements distants" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" "Ajout d'une option dans le menu contextuel pour lire un fichier en boucle" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" "Support des changements de propriétés pour le plein écran et la taille de " "fenêtre" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "" "Ajout d'une option pour masquer automatiquement le curseur de la souris en " "mode fenêtré" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "La fenêtre principale montrant l'application en action" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "La fenêtre principale avec CSD désactivé" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "La fenêtre principale avec la liste de lecture ouverte" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "Lecteur multimédia" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "Lecture de films et vidéos" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "io.github.celluloid_player.Celluloid" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" "Vidéo;Film;Clip;Séries;Lecteur;DVD;TV;Télé;Disque;Album;Musique;GNOME;mpv;" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "Nouvelle fenêtre" #: src/celluloid-application.c:421 msgid "Playing" msgstr "En cours de lecture" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Afficher la version" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "Files d'attente" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "Créer une nouvelle fenêtre" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "OPTIONS" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "Définir le rôle de la fenêtre" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "Ne pas se connectez à une instance en cours d'exécution" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Pause" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Lecture" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Arret" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Avancer" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Reculer" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Chapitre suivant" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Chapitre précédant" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "Lecture en boucle" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Plein écran" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Erreur" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "Tous les fichiers" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "Fichiers multimédias" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "Fichiers audio" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "Fichiers vidéo" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "Fichiers image" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "Fichiers de(s) sous-titres" #: src/celluloid-menu.c:106 msgid "None" msgstr "Vide" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Inconnu" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "_Charger un fichier externe..." #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 #, fuzzy msgid "No disc found" msgstr "Aucun greffon trouvé" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Fichier" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "_Ouvrir..." #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "Ouvrir un _emplacement..." #: src/celluloid-menu.c:236 #, fuzzy msgid "Open _Disc…" msgstr "Ouvrir un _emplacement..." #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "_Enregistrer la liste de lecture" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "_Nouvelle fenêtre" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "É_diter" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Préférences" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "Piste _vidéo" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "Piste _audio" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "So_us-titres" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_Vue" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "Afficher les _contrôles" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "Afficher la _liste de lecture" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Plein écran" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Aide" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "_Raccourcis clavier" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "_À propos de Celluloid" #: src/celluloid-menu.c:316 #, fuzzy msgid "Open _Disc" msgstr "Ouvrir un fichier" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "La lecture a été interrompue pour la raison suivante : %s" #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Emplacement:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Annuler" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Ouvrir" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "Impossible d'appliquer une ou plusieurs options à mpv." #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "_Copier l'emplacement" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "_Supprimer" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Ajouter" #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "Ajouter un _Emplacement" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "Lecture aléa_toire" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "Lecture en boucle du _fichier" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "Lecture en boucle de la liste de _lecture" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Liste de lecture" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "Ajouter un greffon" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "Greffons Lua" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "Greffons JavaScript" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "Greffons C" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "" "Impossible de copier le fichier de '%s' vers '%s' pour la raison suivante : " "%s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "Aucun greffon trouvé" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Supprimer" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "" "Êtes vous sur de vouloir supprimer ce script ? Cette action est irréversible" #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "Impossible de supprimer le fichier '%s' pour la raison suivante : %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Activer les décorations fenêtre" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Activer le thème sombre" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "Utiliser les commandes flottantes en mode fenêtré" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "Masquer automatiquement le curseur de la souris en mode fenêtré" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "Utilisez les boutons de saut pour contrôler la liste de lecture" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Se souvenir de l'emplacement du dernier fichier ouvert" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "Charger un fichier de configuration MPV" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "Fichier de configuration MPV:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "Charger un fichier de configuration des raccourcis clavier MPV" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "Fichier de configuration des raccourcis clavier MPV:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "Toujours ouvrir une nouvelle fenêtre" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "Ignorer les erreurs de lecture" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "Pré-rechercher les métadonnées" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "Activer le support MPRIS" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "Activer la prise en charge des touches multimédias" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Options supplémentaires pour MPV" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "Interface" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "Fichiers de configuration" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "Divers" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "Greffons" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Enregistrer" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Préférences" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Ouvrir un fichier" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Ouvrir un emplacement" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "Ajouter un fichier à la liste de lecture" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "Ajouter un emplacement à la liste de lecture" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Afficher les préférences" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Afficher les contrôles" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Afficher la liste de lecture" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Plein écran" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Quitter le mode plein écran" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "Commutation des états de l'OSD" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Afficher le nom du fichier sur l'OSD" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "Afficher la progression, le temps écoulé et la durée sur l'OSD" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "Avancer/reculer de 5 secondes" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Avancer/reculer d'exactement 1 second" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "Avancer/reculer d'1 minute" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "Avancer/reculer d'exactement 5 secondes" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "Sous-titre précédent/suivant" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Avancer/reculer d'une image vers l'arrière/vers l'avant" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "Aller au début du chapitre précédent/suivant" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Reduire/Augmenter la vitesse de lecture de 10%" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Reduire de moitié ou doubler la vitesse de lecture actuelle" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Réinitialiser la vitesse de lecture" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Aller en arrière/en avant dans la liste de lecture" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Supprimer l'élément sélectionné de la liste de lecture" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Sauvegarder la liste de lecture" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "Définir/enlever les repères de boucle A-B" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Basculer en boucle infinie" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Pause/reprendre" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Quitter" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Enregistrer la position de lecture actuelle et quitter" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Parcourir les pistes audio" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Diminuer/augmenter le volume" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "Muet" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Ajustez le délai audio de +/- 0,1 seconde" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Commutation de la visibilité des sous-titres" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Parcourir les sous-titres disponibles" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Ajustez le délai des sous-titres de +/- 0,1 seconde" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "Commutation de la priorité de style des sous-titres SSA/ASS" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Déplacer les sous titres en haut/bas" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "Commutation du mode de compatibilité VSFilter" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Parcourir les pistes vidéo" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "Augmenter/diminuer la portée du panoramique et du balayage" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Prendre une capture d'écran" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Prendre une capture d'écran, sans les sous-titres" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Prendre une capture d'écran, comme la fenêtre le montre" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Réduire de moitié la taille de la vidéo" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Redimensionner la vidéo à sa taille d'origine" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "Doubler la taille de la vidéo" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Ajuster le contraste" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Ajuster la luminosité" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Ajuster le gamma" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Ajuster la saturation" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Activer ou désactiver le désentrelaceur" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "Remplacement du rapport d'aspect du cycle" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Interface de l'utilisateur" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Vidéo" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Audio" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Sous-titre" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Lecture" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Navigation" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" "Activation ou désactivation des décorations côté client. Nécessite un " "redémarrage pour prendre effet." #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Ajouter un fichier à la liste de lecture" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Ouvrir un fichier" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Ajouter l'emplacement à la liste de lecture" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Ouvrir un emplacement" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "Chargement de la piste audio...." #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "Chargement des sous-titres...." #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Enregistrer la liste de lecture" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "Une interface GTK pour MPV" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "" "Harenome Ranaivorarivony Razanajato\n" "JeanDeLaMouche" celluloid-0.18/po/hr.po000066400000000000000000000750071356026115400150210ustar00rootroot00000000000000# gnome-mpv , 2019. #zanata # gogo , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: gnome-mpv 0.15\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-11-02 07:26+0000\n" "Last-Translator: gogo \n" "Language-Team: Croatian\n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "Jesu li postavke već migrirane iz prijašnje inačice" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Omogući ili onemogući tamnu temu" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Omogući ili onemogući ukrase klijenta" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "Treba li koristiti lebdeće upravljanje u prozorskom načinu prikaza" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "" "Treba li koristiti automatsko sakrivanje pokazivača miša u prozorskom načinu" " prikaza miša" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" "Najmanja brzina pokazivača miša pri kojoj će lebdeće upravljanje biti " "prikazano." #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "Treba li koristiti tipke preskakanja za upravljanje popisom izvođenja" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "" "Treba li dijalog odabiratelja datoteka zapamtiti posljednje pristupljenu " "mapu" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "Treba li pokrenuti nove prozore kada već postoji pokrenut primjerak" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Mogućnosti za prosljeđivanje u mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Putanja do mpv datoteke podešavanja" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "Učitaj ili ne učitavaj mpv datoteku podešavanja" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Putanja do ulazne datoteke mpv podešavanja" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "Učitaj ili nemoj učitati ulaznu datoteku mpv podešavanja" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "Treba li omogućiti MPRIS podršku" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" "Treba li omogućiti GNOME-Settings-Daemon-based podršku za medijske tipke" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "Treba li preuzeti metapodatke za nestandardne stavke popisa izvođenja" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" "Treba li prikazati poruku greške kada reprodukcija datoteke završi greškom" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Širina prozora" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Visina prozora" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "Glasnoća zvuka reporduktora" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Širina popisa izvođenja" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "Treba li prikazati upravljanja" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Prikazuj ili ne prikazuj popis izvođenja" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "URI posljednje pristupljene mape" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celuloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "GTK+ grafičko korisničko sučelje za mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" "Celuloid je jednostavan medijski reproduktor koji može reproducirati " "virtualno sve video i zvučne formate. Podržava popise izvođenja i MPRIS2 " "medijsko upravljanje reprodukcijom. Dizajn Celuloida slijedi smjernice GNOME" " Human sučelja , ali isto tako može biti prilagođen za druge sustave koji ne" " koriste ukrase od strane klijenta (CSD). Temelji se na mpv biblioteci i " "GTK-u." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Značajke:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "Povuci i ispusti popis izvođenja" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "Učitavanje vanjske mpv datoteke podešavanja" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "MPRIS2 D-Bus sučelje" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "Ovo izdanje sadrži sljedeće promjene:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "Preimenovanje projekta u Celuloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "Turski prijevod je dodao @TeknoMobil" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "Esperanto prijevod je dodao @F3nd0" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "Prijelaz sa opengl-cb u novi API prikaza" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "Rukovanje brojčanim prečacima" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "Rukovanje unikôdnim prečacima" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "Proslijeđivanje događaja medijske tipke u mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" "Dodan je dconf izraz za upravljanje brzinom pokazivača miša kada se " "upravljanja prikažu" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "Dodana je mogućnost za potiskivanje grešaka repordukcije" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" "Ovaj popis je nepotpun. Pogledajte git zapis za potpuni pregled promjena." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "Podjela kartice Općenito u dijalogu osobitosti" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" "Poboljšanje ponašanja uklj/isklj popisa izvođenja pri popločenom prikazu u " "upraviteljima prozora" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "Premještanje izbornika aplikacije u glavni izbornik" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "Korištenje zasebnog MPRIS DBus povezivanja za svaki prozor" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "Dodana je podrška za MPRIS LoopStatus svojstvo" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" "Dodana je mogućnost --mpv-options za postavljanje proizvoljne mpv mogućnosti" " iz naredbenog redka" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "Zadani direktorij snimki zaslona je postavljen u XDG_PICTURES_DIR" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" "Poboljšano je rukovanje sa --window-scale, --autofit, --autofit-larger i " "--autofit-smaller" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "Dodana je WM_ROLE mogućnost naredbenog redka" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" "Dodana je stavka sadržajnog izbornika za uklanjanje stavki popisa izvođenja" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" "Dodana je stavka sadržajnog izbornika za kopiranje lokacije stavki popisa " "izvođenja" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" "Dodana je mogućnost za stvaranje tipki preskakanja stavki popisa izvođenja " "radije nego poglavlja." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "Odabiratelj datoteka sada prihvaća nelokalne lokacije" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" "Dodana je stavka izbornika lijevog klika u svrhu ponavljanja jedne datoteke" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" "Rukovanje događajima svojstava promjene za cjelozaslonski ili prikaz u " "prozoru" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "" "Dodana je mogućnost za automatsko sakrivanje pokazivača miša u prozorskom " "načinu prikaza" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "Glavni prozor prikazuje aplikaciju u akciji" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "Glavni prozor s onemogućenim CSD-om" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "Glavni prozor sa otvorenim popisom izvođenja" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "Multimedijski reporduktor" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "Gledajte filmove i video snimke" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "io.github.celluloid_player.Celluloid" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" "Video;Snimka;Film;Klip;Serija;Reproduktor;DVD;TV;Disk;Album;Glazba;GNOME;mpv;" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "Novi prozor" #: src/celluloid-application.c:421 msgid "Playing" msgstr "Reprodukcija" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Prikaži inačicu izdanja" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "Dodaj u red čekanja" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "Stvori novi prozor" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "MOGUĆNOSTI" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "Postavi namjenu prozora" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "Ne povezuj s već pokrenutim primjerkom" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Pauziraj" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Reproduciraj" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Zaustavi" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Premotaj unaprijed" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Premotaj unatrag" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Sljedeće poglavlje" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Prijašnje poglavlje" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "Ponovi popis izvođenja" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Prozor ili cijeli zaslon" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Greška" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "Dodaj datoteke" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "Medijske datoteke" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "Glazbene datoteke" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "Video datoteke" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "Slikovne datoteke" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "Datoteke podnaslova" #: src/celluloid-menu.c:106 msgid "None" msgstr "Nikakav" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Nepoznat" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "_Učitaj vanjski…" #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 msgid "No disc found" msgstr "Nema pronađenog diska" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Datoteka" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "_Otvori…" #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "Otvori _lokaciju…" #: src/celluloid-menu.c:236 msgid "Open _Disc…" msgstr "Otvori _disk…" #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "_Spremi popis izvođenja" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "_Novi prozor" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "_Uredi" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Osobitosti" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "_Video zapis" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "_Zvučni zapis" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "Z_apis podnaslova" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_Pogled" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "Uklj/Isklj _upravljanja" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "Uklj/Isklj popis _izvođenja" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Cjelozaslonski prikaz" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Pomoć" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "_Prečaci tipkovnice" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "_O Celuloidu" #: src/celluloid-menu.c:316 msgid "Open _Disc" msgstr "Otvori _disk" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "Reporodukcija je prekinuta neočekivano. Razlog: %s." #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Lokacija:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Odustani" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Otvori" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "Neuspjela primjena jedne ili više MPV mogućnosti." #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "_Kopiraj lokaciju" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "_Ukloni" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Dodaj…" #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "Dodaj _lokaciju…" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "_Naizmjenično" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "Ponovi _datoteku" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "Ponovi _popis izvođenja" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Popis izvođenja" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "Dodaj priključak" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "Lua priključci" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "JavaScript priključci" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "C priključci" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "Neuspjelo kopiranje datoteke sa '%s' na '%s'. Razlog: %s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "Nema pronađenih priključaka" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Ukloni" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "Sigurno želite ukloniti ovu skriptu? Ova radnja se ne može poništiti." #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "Neuspjelo brisanje datoteke '%s'. Razlog: %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Omogući ukrase klijenta" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Omogući tamnu temu" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "Koristi lebdeća upravljanja u prozorskom načinu prikaza" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "Automatski sakrij pokazivača miša u prozorskom načinu prikaza" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "Koristi tipke preskakanja za upravljanje popisom izvođenja" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Zapamti lokaciju posljednje datoteke" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "Učitaj MPV datoteku podešavanja" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "MPV datoteka podešavanja:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "Učitaj ulaznu datoteku MPV podešavanja" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "Ulazna datoteka MPV podešavanja:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "Uvijek otvori novi prozor" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "Zanemari greške reprodukcije" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "Preuzmi metapodatke" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "Omogući MPRIS podršku" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "Omogući podršku medijskih tipki" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Dodatne MPV mogućnosti:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "Sučelje" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "Datoteke podešavanja" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "Ostalo" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "Priključci" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Spremi" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Osobitosti" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Otvori datoteku" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Otvori lokaciju" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "Dodaj datoteku na popis izvođenja" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "Dodaj lokaciju na popis izvođenja" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Prikaži dijalog osobitosti" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Uklj/Isklj upravljanja" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Uklj/Isklj popis izvođenja" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Uklj/Isklj cjelozaslonski način rada" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Napusti cjelozaslonski prikaz" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "" "Uklj/Isklj OSD prikaz napredka i proteklog vremena/trajanja reprodukcije" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Prikaži naziv datoteka na OSD-u" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "Prikaži napredak, proteklo vrijeme i trajanje na OSD-u" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "Premotaj unatrag/unaprijed za 5 sekundi" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Premotaj unatrag/unaprijed za 1 sekundu" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "Premotaj unatrag/unaprijed za 1 minutu" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "Premotaj unatrag/unaprijed za 5 sekundi" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "Prebaci na prijašnji/sljedeći podnaslov" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Premotaj za sličicu unatrag/unaprijed" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "Premotaj na početak prijašnjeg/sljedećeg poglavlja" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Smanji/Povećaj brzinu reprodukcije za 10%" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Smanji za pola ili udvostruči brzinu trenutne reprodukcije" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Vrati na normalnu brzinu repordukcije" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Idi natrag/naprijed u popisu izvođenja" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Ukloni odabranu stavku s popisa izvođenja" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Spremi popis izvođenja" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "Postavi/Ukloni A-B točke ponavljanja" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Uključ/Isklj beskonačno ponavljanje" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Pauziraj ili nastavi reprodukciju" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Zatvori" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Spremi trenutni položaj reprodukcije i zatvori" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Odaberi/Prebacuj zvučne zapise" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Pojačaj/Smanji glasnoću zvuka" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "Utišaj ili uključi zvuk" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Prilagodi odgodu zvuka za +/- sekundi" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Uklj/Isklj podnslov" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Odaberi/Prebacuj podnaslove" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Prilagodi odgodu podnaslova za +/- sekundi" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "Uklj/Isklj obilaženje SSA/ASS izgleda podnaslova" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Pomakni podnaslove gore/dolje" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "Uklj/Isklj način kompatibilnosti VSFilter omjera" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Odaberi/Prebacuj video zapise" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "Povećaj/Smanji raspon skeniranja-obrezivanja" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Uslikaj zaslon" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Uslikaj zaslon bez podnaslova" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Uslikaj zaslon kako je prikazan u prozoru" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Promijeni veličinu videa na polovicu izvorne veličine" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Promijeni veličinu videa na izvornu veličinu" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "Promijeni veličinu videa na dvostruko od izvorne veličine" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Prilagodi kontrast" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Prilagodi svjetlinu" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Prilagodi gamu" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Prilagodi zasićenje" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Aktiviraj ili deaktiviraj raspletanje" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "Odaberi/Prebacuj omjer prikaza" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Korisničko sučelje" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Video" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Zvuk" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Podnaslov" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Reprodukcija" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Premotavanje" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" "Omogućavanje ili onemogućavanje ukrasa od strane klijenta zahtijeva ponovno " "pokretanje." #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Dodaj datoteku na popis izvođenja" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Otvori datoteku" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Dodaj lokaciju na popis izvođenja" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Otvori lokaciju" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "Učitaj zvučni zapis…" #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "Učitaj zapis podnaslova…" #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Spremi popis izvođenja" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "GTK grafičko korisničko sučelje za mpv" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " gogo https://launchpad.net/~trebelnik-stefina" celluloid-0.18/po/hu.po000066400000000000000000000650761356026115400150310ustar00rootroot00000000000000# gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-10-09 12:54+0000\n" "Last-Translator: Copied by Zanata \n" "Language-Team: Hungarian\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Sötét téma engedélyezése/tiltása" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Kliensoldali díszítések engedélyezése/tiltása" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Az mpv-nek átadandó opciók" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Az mpv konfigurációs fájl útvonala" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Az mpv bemeneti konfigurációs fájl útvonala" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Az ablak szélessége" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Az ablak magassága" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "A lejátszó hangereje" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "A lejátszási lista szélessége" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "GTK+ felület az mpv-hez" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Funkciók:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "Fogd és vidd lejátszási lista" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "Külső mpv konfigurációs fájlok betöltése" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "MPRIS2 D-Bus interfész" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "Az alkalmazás működés közben" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "A főablak letiltott díszítésekkel" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "A főablak megnyitott lejátszási listával" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "" #: src/celluloid-application.c:421 msgid "Playing" msgstr "" #: src/celluloid-application.c:474 #, fuzzy msgid "Show release version" msgstr "Kiadási verzió megjelenítése" #: src/celluloid-application.c:482 #, fuzzy msgid "Enqueue" msgstr "Sorba állítás" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "Ne csatlakozzon egy már futó példányhoz" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Szünet" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Lejátszás" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Megállítás" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Előretekerés" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Visszatekerés" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Következő fejezet" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Előző fejezet" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Átváltás teljes képernyőre" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Hiba" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "" #: src/celluloid-menu.c:106 msgid "None" msgstr "Egyik sem" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Ismeretlen" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "_Külső betöltése..." #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 msgid "No disc found" msgstr "" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Fájl" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "" #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "" #: src/celluloid-menu.c:236 msgid "Open _Disc…" msgstr "" #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "Lejátszási lista _mentése" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "_Szerkesztés" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Beállítások" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "_Videósáv" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "_Hangsáv" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "F_eliratsáv" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_Nézet" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "_Vezérlők be-/kikapcsolása" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "_Lejátszási lista be-/kikapcsolása" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Teljes képernyő" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Súgó" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "_Billentyűkombinációk" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "" #: src/celluloid-menu.c:316 #, fuzzy msgid "Open _Disc" msgstr "Fájl megnyitása" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "A lejátszás nem megfelelően lett leállítva. Ok: %s." #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Hely:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Mégse" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Megnyitás" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "Egy vagy több MPV beállítás alkalmazása nem sikerült" #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Hozzáadás..." #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "_Hely hozzáadása..." #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Lejátszási lista" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "A fájl másolása innen: „%s\", ide: „%s\" nem sikerült. Ok: %s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Eltávolítás" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "" "Biztosan el akarja távolítani ezt a parancsfájlt? Ez a művelet nem vonható " "vissza." #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "„%s\" fájl törlése nem sikerült. Ok: %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Kliensoldali díszítések engedélyezése" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Sötét téma engedélyezése" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Az utolsó fájl pozíciójának megjegyzése" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "MPV konfigurációs fájl betöltése" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "MPV konfigurációs fájl:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "MPV beviteli konfigurációs fájl betöltése" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "MPV beviteli konfigurációs fájl:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Extra MPV beállítások:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Mentés" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Beállítások" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Fájl megnyitása" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Hely megnyitása" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Beállítások párbeszédablak mutatása" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Vezérlők be-/kikapcsolása" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Lejátszási lista be-/kikapcsolása" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Teljes képernyős mód be-/kikapcsolása" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Kilépés a teljes képernyős módból" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "Váltás a normál és a lejátszási idő/hossz OSD között" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Fájlnév megjelenítése az OSD-n" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "" #: src/celluloid-shortcuts-window.c:71 #, fuzzy msgid "Seek backward/forward 5 seconds" msgstr "Visszatekerés/előretekerés 5 másodperccel" #: src/celluloid-shortcuts-window.c:72 #, fuzzy msgid "Exact seek backward/forward 1 second" msgstr "Visszatekerés/előretekerés pontosan 1 másodperccel" #: src/celluloid-shortcuts-window.c:73 #, fuzzy msgid "Seek backward/forward 1 minute" msgstr "Visszatekerés/előretekerés 1 perccel" #: src/celluloid-shortcuts-window.c:74 #, fuzzy msgid "Exact seek backward/forward 5 seconds" msgstr "Visszatekerés/előretekerés pontosan 5 másodperccel" #: src/celluloid-shortcuts-window.c:75 #, fuzzy msgid "Seek to previous/next subtitle" msgstr "Ugrás az előző/következő felirathoz" #: src/celluloid-shortcuts-window.c:76 #, fuzzy msgid "Step backward/forward a single frame" msgstr "Visszalépés/előrelépés egy képkockával" #: src/celluloid-shortcuts-window.c:77 #, fuzzy msgid "Seek to the beginning of the previous/next chapter" msgstr "Ugrás az előző/következő fejezet elejére" #: src/celluloid-shortcuts-window.c:80 #, fuzzy msgid "Decrease/increase playback speed by 10%" msgstr "Lejátszási sebesség csökkentése/növelése 10%-kal" #: src/celluloid-shortcuts-window.c:81 #, fuzzy msgid "Halve/double current playback speed" msgstr "Jelenlegi lejátszási sebesség felezése/duplázása" #: src/celluloid-shortcuts-window.c:82 #, fuzzy msgid "Reset playback speed to normal" msgstr "Normál lejátszási sebesség visszaállítása" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Ugrás előre/hátra a lejátszási listában" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Kiválasztott lejátszási elem eltávolítása" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Lejátszási lista mentése" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "A-B ismétlési szakasz beállítása/törlése" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Végtelen ismétlés be-/kikapcsolása" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Szünet vagy folytatás" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Kilépés" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Jelenlegi lejátszási pozíció mentése és kilépés" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Váltás a hangsávok között" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Hangerő csökkentése/növelése" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "Némítás be-/kikapcsolása" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Hangsáv eltolásának beállítása 0,1 mp időközökkel" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Felirat láthatóságának be-/kikapcsolása" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Váltás az elérhető feliratok között" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Feliratok eltolásának beállítása 0,1 mp időközökkel" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "SSA/ASS feliratstílus felülbírálásának be-/kikapcsolása" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Feliratok mozgatása fel/le" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "VSFilter képarány-kompatibilitási mód be-/kikapcsolása" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Váltás a videósávok között" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "Pan-and-scan tartomány csökkentése/növelése" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Képernyőkép készítése" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Képernyőkép készítése feliratok nélkül" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Képernyőkép készítése az ablak tartalmáról" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Videó átméretezése az eredeti méret felére" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Videó átméretezése az eredeti méretre" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "Videó átméretezése az eredeti méret kétszeresére" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Kontraszt beállítása" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Világosság beállítása" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Gamma beállítása" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Telítettség beállítása" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Váltottsorosság-mentesítés be-/kikapcsolása" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Felhasználói felület" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Videó" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Hang" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Felirat" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Lejátszás" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Tekerés" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Fájl hozzáadása a lejátszási listához" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Fájl megnyitása" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Hely hozzáadása a lejátszási listához" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Hely megnyitása" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "" #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "" #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Lejátszási lista mentése" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "Egy GTK felület az MPV-hez" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "" celluloid-0.18/po/it.po000066400000000000000000000672171356026115400150300ustar00rootroot00000000000000# gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-10-09 12:55+0000\n" "Last-Translator: Copied by Zanata \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" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "" "È stata già effettuata la migrazione delle preferenze da una versione " "precedente" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Attiva o disattiva il tema scuro" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Attiva o disattiva le decorazioni client-side" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "Mostra o meno i controlli fluttuanti in modalità finestra" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "Nascondi o meno il cursore in modalità finestra" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "Utilizza o meno i pulsanti di salto per il controllo della playlist" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "Ricorda o meno l'ultima cartella visualizzata" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "Crea o meno una nuova finestra quando c'è gia un'altra istanza" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Opzioni da inserire in mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Percorso del file di configurazione di mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "Carica il file di configurazione di mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Percorso del file di configurazione dell'input di mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "Carica il file di configurazione dell'input di mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "Abilita o meno il supporto MPRIS" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" "Abilita o meno il supporto ai tasti multimediali di GNOME Settings Daemon" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "" "Esegui o meno il precaricamento dei metadati per le voci della playlist" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Larghezza della finestra" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Altezza della finestra" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "Volume" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Larghezza della playlist" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "Mostra o meno i controlli" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Mostra o meno la playlist" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "Percorso dell'ultima cartella visualizzata" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "Un frontend in GTK+ per MPV" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Caratteristiche:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "Drag and drop della playlist" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "Carica un file di configurazione esterno di mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "Interfaccia MPRIS2 D-Bus" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 #, fuzzy msgid "Add option to autohide mouse cursor in windowed mode" msgstr "Nascondi automaticamente il cursore del mouse in modalità finestra" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "La finestra principale in funzione" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "La finestra principale con le decorazioni client-side disattivate" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "La finestra principale con la playlist visualizzata" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "Nuova finestra" #: src/celluloid-application.c:421 msgid "Playing" msgstr "In riproduzione" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Mostra versione della release" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "Accoda" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "Apri una nuova finestra" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "Non usare una istanza già in esecuzione" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Pausa" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Riproduci" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Ferma" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Vai avanti" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Torna indietro" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Capitolo successivo" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Capitolo precedente" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Attiva la modalità a schermo intero" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Errore" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "Tutti i file" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "File multimediali" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "File audio" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "File video" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "File immagine" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "File sottotitoli" #: src/celluloid-menu.c:106 msgid "None" msgstr "Nessuno" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Sconosciuto" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "_Importa..." #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 #, fuzzy msgid "No disc found" msgstr "Nessun plugin trovato" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_File" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "" #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "" #: src/celluloid-menu.c:236 msgid "Open _Disc…" msgstr "" #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "_Salva la playlist" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "_Nuova finestra" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "_Modifica" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Preferenze" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "Traccia _video" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "Traccia _audio" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "Traccia s_ottotitoli" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_Visualizza" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "Mostra o meno i _controlli" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "Mostra o meno la _playlist" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "Modalità a schermo _intero" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Aiuto" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "Scorciatoie da _tastiera" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "" #: src/celluloid-menu.c:316 #, fuzzy msgid "Open _Disc" msgstr "Apri file" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "La riproduzione si è interrota in modo anomalo. Motivo: %s" #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Posizione:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "An_nulla" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Apri" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "Impossibile applicare una o più opzioni di mpv" #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Aggiungi..." #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "Aggiungi _posizione..." #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "Riproduzione _casuale" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "Ripeti il _file" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "Ripeti la _playlist" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Playlist" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "Aggiungi un plugin" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "Plugin Lua" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "Plugin JavaScript" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "Plugin C" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "Impossibile copiare file da '%s' a '%s'. Motivo: %s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "Nessun plugin trovato" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Rimuovi" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "" "Sei sicuro di voler cancellare questo script? Questa azione non può essere " "annullata." #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "Impossible cancellare '%s'. Motivo: %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Attiva le decorazioni client-side" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Attiva tema scuro" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "Mostra i controlli fluttuanti in modalità finestra" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "Nascondi automaticamente il cursore del mouse in modalità finestra" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "Usa i pulsanti salta per controllare la playlist" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Ricorda l'ultimo percorso dei file" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "Carica il file di configurazione di mpv" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "File di configurazione di mpv" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "Carica il file di configurazione dell'input di mpv" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "File di configurazione dell'input di mpv" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "Apri sempre una nuova finestra" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "Precarica i metadati" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "Abilita il supporto MPRIS" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "Abilita il supporto ai tasti multimediali" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Opzioni extra per mpv" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "Plugin" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Salva" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Preferenze" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Apri file" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Apri posizione" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "Aggiungi posizione alla playlist" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Mostra la finestra delle preferenze" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Mostra o meno i controlli" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Mostra o meno la playlist" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Attiva la modalità a schermo intero" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Disattiva la modalità a schermo intero" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "Attiva la visualizzazione in sovraimpressione" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Mostra il nome del file in sovraimpressione" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "Mostra tempo trascorso e durata in sovraimpressione" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "Vai indietro/avanti di 5 secondi" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Vai indietro/avanti di 1 secondo preciso" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "Vai indietro/avanti di un 1 minuto" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "Vai indietro/avanti di 5 secondi precisi" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "Vai ai sottotitoli precendenti/prossimi" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Vai indietro/avanti di un singolo fotogramma" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "Vai all'inizio del capitolo precente/prossimo" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Diminuisci/aumenta la velocità di riproduzione del 10%" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Dimezza/raddoppia la velocità di riproduzione corrente" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Ripristina la velocità di riproduzione normale" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Vai indietro/avanti nella playlist" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Rimuovi dalla playlist" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Salva playlist" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "Imposta/rimuovi A-B loop" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Attiva il loop continuo" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Pausa o meno" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Esci" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Salva la posizione di riproduzione corrente ed esci " #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Scegli fra le tracce audio avviabili" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Diminusci/aumenta il volume" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "Muto o meno" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Aggiusta il ritardo dell'audio di +/- 0.1 secondi" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Attiva visualizzazione sottotitoli" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Scegli fra i sottotitoli disponibili" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Aggiusta il ritardo dei sottotitoli di +/- 0.1 secondi" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "Attiva la sovrascrittura dello stile dei sottotitoli SSA/ASS" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Sposta i sottotitoli su/giu" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "Attiva la modalità di compatibilità di aspetto per VSFilter" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Scegli fra le tracce video disponibili" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "Diminuisci/aumenta il range pan-and-scan" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Fai uno screenshot" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Fai uno screenshot, senza sottotitoli" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Fai uno screenshot, così come è la finestra" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Dimezza la dimensione originale del video" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Ripristina la dimensione originale del video" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "Raddoppia la dimensione originale del video" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Modifica contrasto" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Modifica luminosità" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Modifica gamma" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Modifica saturazione" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Attiva o disattiva il deinterlacciatore" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "Scegli fra le proporzioni di aspetto disponibili" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Interfaccia utente" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Video" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Audio" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Sottotitoli" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Riproduzione" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Ricerca" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" "Abilitare o disabilitare le decorazioni client-side richiede un riavvio per " "avere effetto" #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Aggiungi file alla playlist" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Apri file" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Aggiungi posizione alla playlist" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Apri posizione" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "Carica traccia audio..." #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "Carica traccia sottotitoli" #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Salva la playlist" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "Un frontend in GTK+ per MPV" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "Luca Trevisani" celluloid-0.18/po/ja.po000066400000000000000000000616401356026115400150000ustar00rootroot00000000000000# Japanese translations for gnome-mpv package # gnome-mpvパッケージに対する日本語翻訳. # Copyright (C) 2015 THE gnome-mpv'S COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-mpv package. # Tista , 2015. # gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: gnome-mpv 0.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-10-09 12:54+0000\n" "Last-Translator: Copied by Zanata \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" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 #, fuzzy msgid "Enable or disable dark theme" msgstr "暗いテーマを有効または無効にする" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 #, fuzzy msgid "Enable or disable client-side decorations" msgstr "CSDを有効または無効にする" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 #, fuzzy msgid "Options to pass to mpv" msgstr "mpvに渡すオプション" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 #, fuzzy msgid "Path to mpv configuration file" msgstr "MPV設定ファイル" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 #, fuzzy msgid "Path to mpv input configuration file" msgstr "MPV入力設定ファイル" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 #, fuzzy msgid "Width of the window" msgstr "ウィンドウの横幅" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 #, fuzzy msgid "Height of the window" msgstr "ウィンドウの高さ" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 #, fuzzy msgid "Volume of player" msgstr "音量" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 #, fuzzy msgid "Width of the playlist" msgstr "プレイリストの幅" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "MPVのGTKフロントエンド" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "新しいウィンドウ" #: src/celluloid-application.c:421 #, fuzzy msgid "Playing" msgstr "プレイ中" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "" #: src/celluloid-application.c:490 #, fuzzy msgid "Create a new window" msgstr "新しいウィンドウを開きます" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "" #: src/celluloid-control-box.c:341 #, fuzzy msgid "Pause" msgstr "一時停止" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 #, fuzzy msgid "Play" msgstr "プレー" #: src/celluloid-control-box.c:523 #, fuzzy msgid "Stop" msgstr "停止" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 #, fuzzy msgid "Toggle Fullscreen" msgstr "全面表示を切換える" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 #, fuzzy msgid "Error" msgstr "エラー" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 #, fuzzy msgid "All Files" msgstr "全てのファイル" #: src/celluloid-file-chooser.c:142 #, fuzzy msgid "Media Files" msgstr "メディア" #: src/celluloid-file-chooser.c:153 #, fuzzy msgid "Audio Files" msgstr "音声" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "動画" #: src/celluloid-file-chooser.c:169 #, fuzzy msgid "Image Files" msgstr "画像" #: src/celluloid-file-chooser.c:179 #, fuzzy msgid "Subtitle Files" msgstr "字幕" #: src/celluloid-menu.c:106 #, fuzzy msgid "None" msgstr "なし" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 #, fuzzy msgid "Unknown" msgstr "不明" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "" #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 msgid "No disc found" msgstr "" #: src/celluloid-menu.c:233 msgid "_File" msgstr "ファイル(_F)" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "" #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "" #: src/celluloid-menu.c:236 msgid "Open _Disc…" msgstr "" #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "プレイリストの保存(_S)" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 #, fuzzy msgid "_New Window" msgstr "新しいウィンドウ" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "編集(_E)" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "設定(_P)" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 #, fuzzy msgid "_Video Track" msgstr "ビデオトラック(_V)" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 #, fuzzy msgid "_Audio Track" msgstr "音声トラック(_A)" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 #, fuzzy msgid "S_ubtitle Track" msgstr "字幕トラック(_S)" #: src/celluloid-menu.c:244 msgid "_View" msgstr "表示(_V)" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "プレイリストの表示・非表示(_T)" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "全画面表示(_F)" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "ヘルプ(_H)" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 #, fuzzy msgid "_Keyboard Shortcuts" msgstr "ショートカット" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "" #: src/celluloid-menu.c:316 #, fuzzy msgid "Open _Disc" msgstr "ファイルを開く" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "" #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "場所:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "キャンセル(_C)" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "開く(_O)" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "" #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "" #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "プレイリスト" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "" #: src/celluloid-plugins-manager-item.c:79 #, fuzzy msgid "Remove" msgstr "削除" #: src/celluloid-plugins-manager-item.c:178 #, fuzzy msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "このスクリプトを削除してもよろしいですか?このアクションを元に戻すことはできません。" #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "CSDを有効にする" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "暗いテーマを有効にする" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "MPV設定ファイルをロードする" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "MPV設定ファイル:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "MPV入力設定ファイルをロードする" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "MPV入力設定ファイル:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "その他のMPVオプション:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "保存(_S)" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "設定" #: src/celluloid-shortcuts-window.c:57 #, fuzzy msgid "Open file" msgstr "ファイルを開く" #: src/celluloid-shortcuts-window.c:58 #, fuzzy msgid "Open location" msgstr "場所を開く" #: src/celluloid-shortcuts-window.c:59 #, fuzzy msgid "Add file to playlist" msgstr "プレイリストにファイルを追加" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "" #: src/celluloid-shortcuts-window.c:61 #, fuzzy msgid "Show preferences dialog" msgstr "設定を表示する" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "" #: src/celluloid-shortcuts-window.c:64 #, fuzzy msgid "Toggle fullscreen mode" msgstr "全面表示を切換える" #: src/celluloid-shortcuts-window.c:65 #, fuzzy msgid "Leave fullscreen mode" msgstr "全画面表示を終了" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "" #: src/celluloid-shortcuts-window.c:85 #, fuzzy msgid "Save playlist" msgstr "プレイリストを保存" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "" #: src/celluloid-shortcuts-window.c:89 #, fuzzy msgid "Quit" msgstr "終了" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "" #: src/celluloid-shortcuts-window.c:110 #, fuzzy msgid "Take a screenshot" msgstr "スクリーンショットを撮る" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "" #: src/celluloid-shortcuts-window.c:124 #, fuzzy msgid "User Interface" msgstr "ユーザーインターフェース" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "ビデオ" #: src/celluloid-shortcuts-window.c:126 #, fuzzy msgid "Audio" msgstr "オーディオ" #: src/celluloid-shortcuts-window.c:127 #, fuzzy msgid "Subtitle" msgstr "字幕" #: src/celluloid-shortcuts-window.c:128 #, fuzzy msgid "Playback" msgstr "プレイバック" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "" #: src/celluloid-view.c:726 #, fuzzy msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "CSDの有効・無効は再起動が必要です。" #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "プレイリストの表示・非表示" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "ファイルを開く" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "場所を開く" #: src/celluloid-view.c:1266 #, fuzzy msgid "Load Audio Track…" msgstr "音声トラックをロードする" #: src/celluloid-view.c:1286 #, fuzzy msgid "Load Subtitle Track…" msgstr "字幕をロードする" #: src/celluloid-view.c:1312 #, fuzzy msgid "Save Playlist" msgstr "_プレイリストの保存" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "MPVのGTKフロントエンド" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "Tista" celluloid-0.18/po/meson.build000066400000000000000000000010021356026115400161720ustar00rootroot00000000000000i18n.gettext(meson.project_name(), preset: 'glib' ) msgfmt = find_program('msgfmt', required: false) if msgfmt.found() linguas = run_command('cat', files('LINGUAS')).stdout().strip().split('\n') foreach lingua : linguas po_file = '.'.join([lingua, 'po']) test('Validate @0@'.format(po_file), msgfmt, args: [ '--output-file=/dev/null', '--check-accelerator=_', '-c', '-v', join_paths(meson.current_source_dir(), po_file) ] ) endforeach endif celluloid-0.18/po/nl.po000066400000000000000000000631701356026115400150170ustar00rootroot00000000000000# gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-10-09 12:54+0000\n" "Last-Translator: Copied by Zanata \n" "Language-Team: Dutch\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 #, fuzzy msgid "" "Whether the settings has already been migrated from the previous version" msgstr "Of de instellingen al gemigreerd zijn van een vorige versie" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Schakel donker thema in of uit" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Schakel client-side decoraties in of uit" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 #, fuzzy msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "" "Laat de bestandskiezer de laatst geraadpleegde map wel of niet onthouden" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Opties om door te geven aan mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Pad naar mpv configuratiebestand" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 #, fuzzy msgid "Load or don't load mpv configuration file" msgstr "Laad mpv configuratiebestand wel of niet" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 #, fuzzy msgid "Path to mpv input configuration file" msgstr "Pad naar mpv input configuratiebestand" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 #, fuzzy msgid "Load or don't load mpv input configuration file" msgstr "Laad mpv input configuratiebestand wel of niet" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Breedte van het venster" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Hoogte van het venster" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 #, fuzzy msgid "Volume of player" msgstr "Volume van de speler" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Breedte van de afspeellijst" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 #, fuzzy msgid "Show or not show the controls" msgstr "Geef de controls wel of niet weer" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Geef de afspeellijst wel of niet weer" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "URI van de map die het laatst is geraadpleegd" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "GTK+ frontend voor mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Functies:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 #, fuzzy msgid "Drag and drop playlist" msgstr "Drag and drop afspeellijst" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "Externe mpv configuratiebestanden laden" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "Het hoofdvenster dat de applicatie in actie laat zien" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "Het hoofdvenster met CSD uitgeschakeld" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "Het hoofdvenster met een afspeellijst open" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "" #: src/celluloid-application.c:421 msgid "Playing" msgstr "Afspelen" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Toon release versie" #: src/celluloid-application.c:482 #, fuzzy msgid "Enqueue" msgstr "Voeg toe aan wachtrij" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "" #: src/celluloid-application.c:514 #, fuzzy msgid "Don't connect to an already-running instance" msgstr "Verbind niet met instanties die al draaien" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Pauze" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Speel af" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Stop" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Voorwaards" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Achterwaards" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Volgend Hoofdstuk" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Vorig Hoofdstuk" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Fout" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "" #: src/celluloid-menu.c:106 msgid "None" msgstr "Geen" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Onbekend" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "_Laad Externe…" #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 msgid "No disc found" msgstr "" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Bestand" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "" #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "" #: src/celluloid-menu.c:236 msgid "Open _Disc…" msgstr "" #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "_Sla Afspeellijst op" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "_Bewerken" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Instellingen" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "" #: src/celluloid-menu.c:244 msgid "_View" msgstr "" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Volledig Scherm" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Help" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "" #: src/celluloid-menu.c:316 #, fuzzy msgid "Open _Disc" msgstr "Open bestand" #: src/celluloid-mpv.c:240 #, fuzzy, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "Afspelen werd abnormaal beëindigd. Reden: %s." #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Locatie:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Annuleren" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Open" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "Het toepassen van een of meerdere MPV opties is mislukt." #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Voeg Toe…" #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Afspeellijst" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "" #: src/celluloid-plugins-manager.c:334 #, fuzzy, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "Bestand van '%s' naar '%s' kopiëren mislukt. Reden: %s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Verwijderen" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "" "Weet je het zeker dat je dit script wil verwijderen? Deze actie kan niet " "ongedaan worden gemaakt." #: src/celluloid-plugins-manager-item.c:199 #, fuzzy, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "Bestand '%s' verwijderen mislukt. Reden: %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Schakel client-side decoratie in" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Schakel donker thema in" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Onthoud de locatie van het laatste bestand" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "Laad MPV configuratiebestand" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "MPV configuratiebestand:" #: src/celluloid-preferences-dialog.c:328 #, fuzzy msgid "Load MPV input configuration file" msgstr "Laad MPV input configuratiebestand" #: src/celluloid-preferences-dialog.c:331 #, fuzzy msgid "MPV input configuration file:" msgstr "MPV input configuratiebestand:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Extra MPV opties:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Opslaan" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Instellingen" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Open bestand" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Open locatie" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Toon instellingen dialoog" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Verlaat volledig scherm-modus" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Geef bestandsnaam weer op de OSD" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "Geef vooruitgang, verstreken tijd en duratie weer op de OSD" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "Zoek 5 seconden achter- of voorwaards" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Zoek exact 1 seconde achter- of voorwaards" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "Zoek 1 minuut achter- of voorwaards" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "Zoek exact 5 seconden achter- of voorwaards" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Ga een frame achter- of voorwaards" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Verlaag of verhoog afspeelsnelheid met 10%" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Halveer of verdubbel de huidige afspeelsnelheid" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Reset afspeelsnelheid naar normaal" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Ga achter- of voorwaards in de afspeellijst" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Verwijder geselecteerde item van de afspeellijst" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Sla afspeellijst op" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Pauzeren of hervatten" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Afsluiten" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Sla huidige afspeelpositie op en sluit af" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Doorloop audiotracks" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Verlaag of verhoog volume" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Verander audiovertraging met ±0.1 seconden" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Verander ondertitelingvertraging met ±0.1 seconden" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Verplaats ondertiteling omhoog of omlaag" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "" #: src/celluloid-shortcuts-window.c:108 #, fuzzy msgid "Cycle through video tracks" msgstr "Doorloop videotracks" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Maak een schermafbeelding" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Maak een schermafbeelding zonder ondertiteling" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Maak een schermafbeelding zoals het venster het toont" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Verander contrast" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Verander helderheid" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Verander gamma" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Verander verzadiging" #: src/celluloid-shortcuts-window.c:120 #, fuzzy msgid "Activate or deactivate deinterlacer" msgstr "Activeer of deactiveer de deinterlacer" #: src/celluloid-shortcuts-window.c:121 #, fuzzy msgid "Cycle aspect ratio override" msgstr "Doorloop beeldverhouding override" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Gebruikersomgeving" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Video" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Audio" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Ondertiteling" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Afspelen" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Zoeken" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Voeg Bestand toe aan Afspeellijst" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Open Bestand" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Open Locatie" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "" #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "" #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Sla Afspeellijst op" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "Een GTK frontend voor MPV" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "" celluloid-0.18/po/pl.po000066400000000000000000000717011356026115400150200ustar00rootroot00000000000000# Piotr Sokół , 2016. # gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: gnome-mpv 0.15\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-10-09 12:55+0000\n" "Last-Translator: Copied by Zanata \n" "Language-Team: polski <>\n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "" "Określa czy ustawienia zostały zaimportowane z poprzedniej wersji programu" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Przełącza ciemny styl" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Przełącza wyświetlanie obramowania po stronie klienta" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "" "Przełącza używanie nieutwierdzonych przycisków sterujących w trybie okna" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "Przełącza automatyczne ukrywanie wskaźnika myszy w trybie okna " #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "" "Przełącza używanie przycisków przechodzenia do sterowania listą odtwarzania" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "" "Przełącza przechowywanie ścieżki ostatnio używanego katalogu przez okno " "wyboru pliku" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "Przełącza otwieranie nowych okien kiedy program jest już uruchomiony" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Określa opcje przekazywane do programu mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Wskazuje ścieżkę pliku konfiguracyjnego mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "Przełącza wczytywanie pliku konfiguracyjnego mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Wskazuje ścieżkę pliku konfiguracyjnego skrótów programu mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "Przełącza wczytywanie pliku konfiguracyjnego skrótów programu mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "Przełącza obsługę MPRIS" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" "Przełącza obsługę przycisków multimedialnych opartych o GNOME-Settings-" "Daemon" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "" "Przełącza wcześniejsze wczytywanie metadanych aktualnie nieodtwarzanych " "elementów listy odtwarzania" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Określa szerokość okna" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Określa wysokość okna" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "Ustala głośność odtwarzania dźwięku" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Określa szerokość listy odtwarzania" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "Przełącza wyświetlanie przycisków sterujących" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Przełącza wyświetlanie listy odtwarzania" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "Przechowuje adres URI ostatnio używanego katalogu" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "Wykorzystuje interfejs GTK do obsługi programu MPV" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Cechy:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "lista odtwarzania obsługująca przeciąganie plików," #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "wczytywanie zewnętrznych plików konfiguracyjnych programu mpv," #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "obsluga interfejsu D-Bus MPRIS2." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 #, fuzzy msgid "Add option to autohide mouse cursor in windowed mode" msgstr "Automatyczne ukrywanie wskaźnika myszy w trybie okna" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "Główne okno przedstawiające działanie programu" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "Głowne okno programu z wyłączonym obramowaniem po stronie klienta" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "Główne okno programu z listą odtwarzania" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "Nowe okno" #: src/celluloid-application.c:421 msgid "Playing" msgstr "Odtwarzanie" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Wypisuje informacje o wersji" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "Dodaje do kolejki odtwarzania" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "Utwórz nowe okno" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "OPCJE" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "Ustala rolę okna" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "Nie łączy z uruchomionym wystąpieniem programu" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Wstrzymuje odtwarzanie" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Rozpoczyna odtwarznie" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Zatrzymuje odtwarzanie" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Przechodzi naprzód" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Przechodzi wstecz" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Następny rozdział" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Poprzedni rozdział" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "Powtarza listę odtwarzania" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Przełącza wyświetlanie na pełnym ekranie" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Błąd" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "Wszystkie pliki" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "Pliki multimediów" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "Pliki dźwiękowe" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "Pliki wideo" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "Pliki obrazów" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "Pliki napisów" #: src/celluloid-menu.c:106 msgid "None" msgstr "Brak" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Nieznana" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "_Wczytaj zewnętrzną..." #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 #, fuzzy msgid "No disc found" msgstr "Nie odnaleziono wtyczek" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Plik" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "_Otwórz…" #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "Otwórz położ_enie…" #: src/celluloid-menu.c:236 #, fuzzy msgid "Open _Disc…" msgstr "Otwórz położ_enie…" #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "Z_apisz listę odtwarzania" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "_Nowe okno " #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "_Edycja" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "P_referencje" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "Ścieżka _wideo" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "Ścieżka _dźwiękowa" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "Ścieżka _napisów" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_Widok" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "P_rzyciski sterujące" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "_Lista odtwarzania" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Pełny ekran" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "Pomo_c" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "_Skróty klawiszowe" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "_O programie" #: src/celluloid-menu.c:316 #, fuzzy msgid "Open _Disc" msgstr "Otwarcie pliku" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "Zakończono odtwarzanie w nieprawidłowy sposób. Powód: %s" #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Położenie:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Anuluj" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Otwórz" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "Nie udało się wprowadzić jednej lub więcej opcji MPV." #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "_Skopiuj położenie" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "_Usuń" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Dodaj..." #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "Dodaj p_ołożenie…" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "Wy_mieszaj" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "Powtarzanie p_liku" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "Powtarzanie l_isty odtwarzania" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Lista odtwarzania" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "Dodawanie wtyczki" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "Wtyczki Lua" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "Wtyczki JavaScript" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "Wtyczki C" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "Nie udało się skopiować pliku z położenia „%s” do „%s”. Powód: %s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "Nie odnaleziono wtyczek" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Usuń" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "Usunąć ten skrypt? Tej czynności nie można cofnąć." #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "Nie można usunąć pliku „%s”. Powód: %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Obramowania okien po stronie klienta" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Ciemny styl" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "Nieutwierdzone przyciski sterujące w trybie okna " #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "Automatyczne ukrywanie wskaźnika myszy w trybie okna" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "Używanie przycisków przechodzenia do sterowania listą odtwarzania" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Przechowywanie położenia ostatnich plików" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "Wczytywanie pliku konfiguracji MPV" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "Plik konfiguracji MPV:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "Wczytywanie pliku konfiguracji skrótów MPV" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "Plik konfiguracji skrótów MPV:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "Otwieranie zawsze w nowym oknie" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "Wcześniejsze wczytywanie metadanych" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "Obsługa MPRIS" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "Obsługa przycisków multimediów" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Dodatkowe opcje MPV:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "Interfejs" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "Pliki konfiguracyjne" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "Różne" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "Wtyczki" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Zapisz" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Preferencje" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Otwarcie pliku" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Otwarcie położenia" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "Dodanie pliku do listy odtwarzania" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "Dodani położenia do listy odtwarzania" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Wyświetlenie okna preferencji" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Przełączenie wyświetlania przycisków sterujących" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Przełączenie wyświetlania listy odtwarzania" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Przełączenie trybu pełnoekranowego" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Opuszczenie trybu pełnoekranowego" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "Przełączenie wyświetlania czasu odtwarzania/trwania w menu ekranowym" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Wyświetlenie nazwy pliku w menu ekranowym" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "Wyświetlenie postępu, czasu odtwarzania i trwania w menu ekranowym" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "Przejście 5 sekund wstecz/naprzód" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Dokładne przejście 1 sekundę wstecz/naprzód" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "Przejście 1 minutę wstecz/naprzód" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "Dokładne przejście 5 sekund wstecz/naprzód" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "Przejście do poprzedniego/następnego napisu dialogowego" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Przejście pojedynczą klatkę wstecz/naprzód" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "Przejście do początku poprzedniego/następnego rozdziału" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Zmniejszenie/zwiększenie prędkości odtwarzania o 10%" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Dwukrotne zmniejszenie/zwiększenie aktualnej prędkości odtwarzania" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Przywrócenie zwykłej prędkości odtwarzania" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Przejście wstecz/naprzód na liście odtwarzania" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Usunięcie zaznaczonego elementu listy odtwarzania" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Zapisanie listy odtwarzania" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "Ustalenie/wyczyszczenie punktów zapętlenia A-B" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Przełączenia zapętlonego odtwarzania" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Przełączenie wstrzymania odtwarzania" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Zakończenie działania" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Zapisanie aktualnego położenia i zakończenie działania" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Przełączenie ścieżki dźwiękowej" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Zmniejszenie/zwiększenie głośności" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "Przełączenie wyciszenia dźwięku" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Dostosowanie opóźnienia dźwięku o +/- 0,1 s" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Przełączenie widoczności napisów" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Przełączenie ścieżki napisów" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Dostosowanie opóźnienia napisów o +/- 0,1 s" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "Przełączenie zastępowania stylów napisów SSA/ASS" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Przemieszczenie napisów w górę/dół" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "Przełączenie tryby kompatybilności proporcji VSFilter" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Przełączenie ścieżki wideo" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "Zmniejszenie/zwiększenie zasięgu pan-and-scan" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Przechwycenie obrazu" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Przechwycenie obrazu bez napisów" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Przechwycenie obrazu wyświetlanego w oknie" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Ustalenie rozmiaru obrazu dwukrotnie mniejszego niż pierwotny" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Przywrócenie pierwotnego rozmiaru obrazu" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "Ustalenie rozmiaru obrazu dwukrotnie większego niż pierwotny" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Dostosowanie kontrastu" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Dostosowanie jasności" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Dostosowanie gamma" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Dostosowanie nasycenia" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Przełączenie usuwania przeplotu" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "Przełączenie proporcji obrazu" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Interfejs użytkownika" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Wideo" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Dźwięk" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Napisy dialogowe" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Odtwarzanie" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Przeszukiwanie" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" "Włączenie lub wyłączenie obramowania po stronie klienta wymaga ponownego " "uruchomienia programu, aby wprowadzić zmiany." #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Dodawanie pliku do listy odtwarzania" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Wybór pliku" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Dodawanie położenia do listy odtwarzania" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Otwieranie położenia" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "Wczytywanie ścieżki dźwiękowej…" #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "Wczytywanie ścieżki napisów…" #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Zapisywanie listy odtwarzania" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "Wykorzystuje interfejs GTK do obsługi programu MPV" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "Piotr Sokół , 2016, 2019." celluloid-0.18/po/pt_BR.po000066400000000000000000000753351356026115400154220ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # Carlos Henrique , 2019. #zanata # gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-10-24 10:44+0000\n" "Last-Translator: Carlos Henrique \n" "Language-Team: Portuguese (Brazil)\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "Se as configurações já migraram da versão anterior" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Ativa ou desativa tema escuro" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Ativa ou desativa decorações de janela" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "Se Usa ou não controles flutuantes no modo janela" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "Se é ou não para ocultar cursor do mouse no modo de janela" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" "A velocidade mínima do cursor flutuante no qual os controles serão " "reexibidos." #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "" "Se quer ou não usar botões de pular, para controlar a lista de reprodução" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "" "Se deseja ou não fazer o seletor de arquivos lembrar a última página " "acessada" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "Se quer ou não criar novas janelas quando já existe uma instância" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Opções para passar para o mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Caminho para o arquivo de configuração do mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "Carregar ou não, o arquivo de configuração do mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Caminho para o arquivo de atalhos do mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "Carregar ou não, o arquivo de atalhos do mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "Se ativa ou desativa suporte para MPRIS" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" "Se ativa ou desativa suporte para comandos de mídia do GNOME-Settings-Daemon" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "" "Se faz ou não uma pré-busca dos metadados para as entradas nas listas de " "reprodução não atuais" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" "Se quer ou não, exibir uma mensagem de erro quando a reprodução de um " "arquivo termina com um erro" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Largura da janela" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Altura da janela" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "Volume do reprodutor" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Largura da lista de reprodução" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "Mostra ou não os controles" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Mostrar ou não a lista de reprodução" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "URI da última pasta acessada" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "Interface em GTK+ para o mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" "O Celluloid é um media player simples que pode reproduzir praticamente todos" " os formatos de vídeo e áudio. Ele suporta listas de reprodução e controles " "MPRIS2 media player. O design do Celluloid segue as Diretrizes da interface " "humana do GNOME, mas também pode ser adaptado para outros sistemas que não " "usam decorações do lado do cliente (CSD). É baseado na biblioteca mpv e GTK." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Recursos:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "Arrastar e soltar lista de reprodução" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "Carregando arquivos externos de configuração do mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "Interface MPRIS2 D-BUS" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "Esta versão contém as seguintes alterações:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "Projeto renomeado para Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "Adic. tradução Turca por @TeknoMobil" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "Adic. tradução Esperanto por @F3nd0" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "Migrado do opengl-cb para o novo renderizador API" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr " Manipulável com combinações de teclas numéricas" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "Manipulável com combinações de teclas unicode" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "Encaminha eventos-chave da mídia para o mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" "Adicionado chave dconf para controlar a velocidade do cursor na qual os " "controles estão ocultos" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "Adicionada opção para suprimir erros de reprodução" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "Esta listagem está incompleta. Veja log git para changelog completo." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "Dividir o separador Geral na aba de diálogo de preferências" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" "Melhorar o comportamento alternando a lista de reprodução gerenciadas em " "janelas lado a lado" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "Mover itens do menu de aplicativos para o menu principal" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "Usar janelas separadas para conexões MPRIS D-BUS" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "Adicionar suporte para a propriedade MPRIS LoopStatus" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" "Adicionar a opção --mpv-options para definir opções arbitrárias do mpv em " "linha de comando" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "Definir o local padrão para a tela de captura XDG_PICTURES_DIR" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" " Melhorar o tratamento de --window-scale, --autofit, --autofit-larger, e " "--autofit-smaller" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "Adicionar linha de comando para opção de definir WM_ROLE" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "Adicionar menu de contexto para remover itens da lista de reprodução" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" "Adicionar item de menu de contexto para copiar a localização de itens da " "lista de reprodução" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" "Adicionar a opção para fazer os botões de pular carregarem de lista de " "reprodução, ao invés de pular capítulos" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "Fazer o seletor de arquivos aceitar locais não-locais" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" "Adicionar menu de contexto no botão direito para fazer a repetição de um " "único arquivo" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" "Manipular eventos de mudança de propriedade para tela inteira e escala de " "janela" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "Adic. opção auto-ocultar o ponteiro do mouse no modo tela cheia" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "Mostrando o aplicativo em ação na janela principal" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "Janela principal com CSD desativado" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "Janela principal com a lista de reprodução aberta" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "Tocador Multimídia" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "Reproduz filmes e vídeos" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "io.github.celluloid_player.Celluloid" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "Vídeo;Filme;Clipes;Séries;Tocar;DVD;TV;Disco;Álbum;Música;GNOME;mpv;" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "Nova Janela" #: src/celluloid-application.c:421 msgid "Playing" msgstr "Reproduzindo" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Mostrar a versão" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "Enfileirar" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "Criar uma nova janela" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "OPÇÕES" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "Definir o papel da janela" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "Não conectar a uma instância já em execução" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Pausar" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "reproduzir" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Parar" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Avançar" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Retroceder" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Próximo Capítulo" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Capítulo Anterior" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "Repetir a Lista" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Alternar para Tela Cheia" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Erro" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "Todos os Arquivos" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "Arquivos de Mídia" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "Arquivos de Áudio" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "Arquivos de Vídeo" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "Arquivos de Imagem" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "Arquivos de Legenda" #: src/celluloid-menu.c:106 msgid "None" msgstr "Nenhum" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Desconhecido" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "_Carregar Externa..." #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 msgid "No disc found" msgstr "Disco não encontrado" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Arquivo" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "_Abrir..." #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "_Abrir Local..." #: src/celluloid-menu.c:236 msgid "Open _Disc…" msgstr "Abrir _Disco..." #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "_Salvar Lista de Reprodução" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "_Nova Janela" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "_Editar" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Preferências" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "_Faixa de Vídeo" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "_Faixa de Áudio" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "F_aixa de Legendas" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_Exibir" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "_Mostrar Controles" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "_Mostrar Lista de Reprodução" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Tela Cheia" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Ajuda" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "_Teclas de Atalho" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "_Sobre o Celluloid" #: src/celluloid-menu.c:316 msgid "Open _Disc" msgstr "Abrir _Disco" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "A reprodução foi encerrada de forma inesperada. Motivo: %s." #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Local:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Cancelar" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Abrir" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "Falha ao aplicar uma ou mais opções do MPV." #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "_Copiar Local" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "_Remover" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Adicionar..." #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "Adicionar _Local" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "_Aleatório" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "Repetir_Arquivo" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "Repetir _Lista" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Lista de Reprodução" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "Adic. Plugin" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "Plugins Lua" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "Plugins JavaScript" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "Plugins C" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "Falha ao copiar arquivo de '%s' para '%s'. Motivo: %s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "Nenhum plugin encontrado" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Remover" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "" "Tem certeza que deseja remover este script? Esta ação não poderá ser " "desfeita." #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "Falha ao remover o arquivo %s. Motivo: %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Ativar decorações de janela independentes" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Ativar tema escuro" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "Usar controles flutuantes no modo janela" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "Auto ocultar o ponteiro do mouse no modo janela" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "Use os botões de pular para controlar a lista de reprodução" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Lembrar o local do último arquivo" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "Carregar arquivo de configuração MPV" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "Arquivo de configuração MPV:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "Carregar arquivo de comandos MPV" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "Arquivo de configuração MPV:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "Sempre abrir uma nova janela" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "Ignorar erros de reprodução" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "Pré-busca de metadados" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "Ativar suporte para MPRIS" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "Ativar suporte para atalhos de mídia" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Opções Extras do MPV:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "Aparência" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "Arquivos de Configuração" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "Diversos" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "Plugins" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Salvar" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Preferências" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Abrir arquivo" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Abrir local" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "Adiciona um arquivo à lista de reprodução" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "Adiciona um local à lista de reprodução" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Mostra diálogo de preferências" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Exibe os controles" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Mostra a lista de reprodução" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Alterna o modo tela cheia" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Sai do modo tela cheia" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "" "Alterna os modos de sobreposição de tela (OSD) entre normal e tempo/duração" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Exibe o nome do arquivo na tela (OSD)" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "Mostra o progresso, tempo passado, e a duração na tela (OSD)" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "Avança/retrocede 5 segundos" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Avança/retrocede exatamente 1 segundo" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "Avança/retrocede 1 minuto" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "Avança/retrocede 5 minutos" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "Procura a legenda anterior/seguinte" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Avança/retrocede um único quadro" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "Ir para o início do anterior/próximo capítulo" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Aumenta/diminui a velocidade de reprodução em 10%" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Reproduz com metade/dobro da velocidade atual" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Reinicia a reprodução com velocidade normal" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Avança/volta na lista de reprodução" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Remove item selecionado da lista de reprodução" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Salva a lista de reprodução" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "Define/limpa os pontos de loop A-B" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Muda para modo de repetição infinita" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Pausa ou Continua" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Sair" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Salva a posição de reprodução e sai" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Percorre pelas faixas de áudio" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Aumenta/diminui volume" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "Silencia ou não" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Ajusta o atraso de áudio em +/- 0,1 Segundos" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Alterna a visibilidade das legendas" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Percorre pelas legendas disponíveis" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Ajusta o atraso da legenda por +/- 0.1 segundos" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "Substitui alternadamente o estilo das legendas SSA/ASS" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Move as legendas para cima/para baixo" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "Alterna o modo de compatibilidade de aspecto do VSFilter" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Percorre pelas trilhas de vídeo" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "Diminui/aumenta o alcance da varredura de tela" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "faz uma captura de tela" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Faz uma captura de tela sem legendas" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Faz uma captura de tela da janela mostrada" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Redimensiona o vídeo para a metade do tamanho original" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Redimensiona o vídeo para o tamanho original" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "Redimensiona o vídeo para o dobro da tela original" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Ajusta o contraste" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Ajusta o brilho" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Ajusta o gama" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Ajusta a saturação" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Ativa ou desativa desentrelace" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "Percorre pela proporção de aspecto ignorado" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Interface de usuário" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Vídeo" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Áudio" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Legenda" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Reproduzir" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Procurando" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" "Ativando ou desativando as decorações do lado do cliente, será necessário a " "reinicialização para entrar em vigor." #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Adic. arquivo à lista de reprodução" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Abrir Arquivo" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Adic. Local à lista de Reprodução" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Abrir Local" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "Carregar Faixa de Áudio..." #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "Carrega a Faixa de Legenda" #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Salva Lista de Reprodução" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "Uma interface em GTK para o MPV" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "" "Créditos aos Tradutores \n" "Carlos Henrique de Freitas F.,\n" "Neocazen@vivaldi.net." celluloid-0.18/po/pt_PT.po000066400000000000000000000757151356026115400154440ustar00rootroot00000000000000# Bruno Guerreiro , 2016. # Filipe Tostevin , 2019. #zanata # Hugo Carvalho , 2019. #zanata # gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: gnome-mpv 0.15\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-11-02 11:20+0000\n" "Last-Translator: Hugo Carvalho \n" "Language-Team: Portuguese\n" "Language: pt_PT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "Se as definições já foram migradas da versão anterior" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Ativar ou desativar o tema escuro" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Ativar ou desativar decorações do lado do cliente" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "Se deve ou não usar controlos flutuantes no modo de janela" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "" "Se deve ou não ocultar automaticamente o cursor do rato no modo de janela" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" "A velocidade mínima do cursor na qual os controlos flutuantes serão " "exibidos." #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "" "Se deve ou não usar botões de ignorar para controlar a lista de reprodução" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "Se deve ou não fazer diálogo de seleção lembrar ultima pasta acedida" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "Se deve ou não criar novas janelas quando já existe uma instância" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Opções de mpv adicionais" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Localização do ficheiro de configuração mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "Carregar ou não o ficheiro de configuração mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Localização do ficheiro input mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "Carregar ou não ficheiro input mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "Se deve ou não ativar o suporte ao MPRIS" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" "Se deve ou não ativar o suporte a chaves de media baseadas no Daemon do " "GNOME" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "" "Se deve ou efetuar não pré-busca de meta-dados para entradas de listas de " "reprodução não atuais" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" "Se deve ou não exibir uma mensagem de erro quando a reprodução de um " "ficheiro termina com um erro" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Largura da janela" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Altura da janela" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "Volume da aplicação" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Largura da lista de reprodução" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "Mostrar ou não mostrar os controlos" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Mostrar ou não lista de reprodução" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "URI da última pasta acedida" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "Interface GTK+ para mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" "Celluloid é um reprodutor de multimédia simples que pode reproduzir " "praticamente todos os formatos de vídeo e áudio. Ele suporta listas de " "reprodução e controlos do reprodutor de multimédia MPRIS2. O projeto do " "Celluloid segue as Diretrizes de Interface Humana do GNOME, mas também pode " "ser adaptado para outros sistemas que não usam decorações do lado do cliente" " (CSD). Ele é baseado na biblioteca mpv e no GTK." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Características:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "Arrastar e soltar a lista de reprodução" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "A carregar ficheiros de configuração externos do mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "Interface MPRIS2 D-Bus" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "Esta versão contém as seguintes alterações:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "Renomear projeto para Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "Adicionar tradução para turco por @TeknoMobil" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "Adicionar tradução para esperanto por @F3nd0" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "Migrar do opengl-cb para a nova API de renderização" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "Manusear teclas de atalho de teclado numérico" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "Manusear teclas de atalho unicode" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "Encaminhar eventos chave de média para mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" "Adicionar a tecla dconf para controlar a velocidade do cursor na qual os " "controlos não são identificados" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "Adicionar opção para suprimir erros de reprodução" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" "Esta listagem está incompleta. Veja log git para ver o registo de alterações" " completo." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "Divida o separador Geral nas preferências da caixa de diálogo" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" "Melhora o comportamento ao alternar a lista de reprodução sob os gestores de" " janelas lado a lado" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "Mover itens do menu de aplicações para o menu principal" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "Use a conexão separada do MPRIS DBus para cada janela" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "Adicionar suporte para a propriedade MPRIS LoopStatus" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" "Adicionar opção --mpv-options para definir opções arbitrárias do mpv a " "partir da linha de comando" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "Definir o diretório de captura de ecrã padrão para XDG_PICTURES_DIR" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" "Melhorar o manuseio de --window-scale, --autofit, --autofit-larger, e " "--autofit-smaller" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "Adicionar opção de linha de comando para definir WM_ROLE" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" "Adicionar item de menu de contexto para remover itens da lista de reprodução" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" "Adicionar item de menu de contexto para copiar o local dos itens da lista de" " reprodução" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" "Adicionar opção para fazer os botões ignorar alterar entradas de lista de " "reprodução em vez de capítulos" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "Faça o selector de ficheiros aceitar localizações não locais" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" "Adicionar entrada de menu do botão direito para fazer o ciclo de um único " "ficheiro" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" "Manipular eventos de mudança de propriedade para ecrã inteiro e escala de " "janela" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "" "Adicionar opção para ocultar automaticamente o cursor do rato no modo de " "janela" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "Janela principal mostra a aplicação em ação" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "Janela principal com CSD desativada" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "Janela principal com lista de reprodução aberta" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "Reprodutor multimédia" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "Reproduzir filmes e vídeos" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "io.github.celluloid_player.Celluloid" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" "Vídeo;Filme;Clip;Séries;Reprodutor;DVD;TV;Disco;Álbum;Música;GNOME;mpv;" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "Nova janela" #: src/celluloid-application.c:421 msgid "Playing" msgstr "A reproduzir" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Mostrar a versão de lançamento" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "Enfileirar" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "Criar uma janela nova" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "OPÇÕES" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "Definir o papel da janela" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "Não ligar a uma instância existente" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Pausa" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Reproduzir" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Parar" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Avançar" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Recuar" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Próximo capítulo" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Capítulo anterior" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "Ciclo da lista de reprodução" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Alternar para ecrã completo" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Erro" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "Todos os Ficheiros" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "Ficheiros de Média" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "Ficheiros de Áudio" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "Ficheiros de Vídeo" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "Ficheiros de Imagem" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "Ficheiros de Legenda" #: src/celluloid-menu.c:106 msgid "None" msgstr "Nenhum" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Desconhecido" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "_Abrir Externo…" #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 msgid "No disc found" msgstr "Nenhum disco encontrado" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Ficheiro" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "_Abrir…" #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "Abrir _Localização…" #: src/celluloid-menu.c:236 msgid "Open _Disc…" msgstr "Abrir _Disco…" #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "_Guardar Lista de Reprodução" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "_Nova Janela" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "_Editar" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Preferências" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "_Faixa de vídeo" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "_Faixa de áudio" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "F_aixa de legendas" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_Ver" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "_Alternar Controlos" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "_Alternar Lista de Reprodução" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Ecrã completo" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Ajuda" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "_Atalhos do teclado" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "_Acerca do Celluloid" #: src/celluloid-menu.c:316 msgid "Open _Disc" msgstr "Abrir_Disco" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "A reprodução foi terminada de forma anormal. Motivo: %s." #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Localização:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Cancelar" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Abrir" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "Falha ao aplicar uma ou mais opções de MPV." #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "_Copiar Localização" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "_Remover" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Adicionar…" #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "Adicionar _Localização…" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "_Misturar" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "Repetir _Ficheiro" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "Lista de reprodução _Ciclo" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Lista de reprodução" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "Adicionar Plugin" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "Plugins Lua" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "Plugins JavaScript" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "C Plugins" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "Falha ao copiar ficheiro de '%s' para '%s'. Motivo: %s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "Nenhum plugin encontrado" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Remover" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "" "Tem certeza que deseja remover este script? Essa ação não pode ser desfeita." #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "Falha ao excluir ficheiro '%s'. Motivo: %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Ativar decorações do lado do cliente" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Ativar tema escuro" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "Use controlos flutuantes no modo de janela" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "Ocultar automaticamente o cursor do rato no modo de janela" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "Use os botões de ignorar para controlar a lista de reprodução" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Lembrar localização do último ficheiro" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "Carregar ficheiro de configuração do MPV" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "Ficheiro de configuração do MPV:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "Carregar ficheiro de configuração input do MPV" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "Ficheiro de configuração input do MPV:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "Abrir sempre uma janela nova" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "Ignorar os erros de reprodução" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "Pré-busca de meta-dados" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "Ativar suporte ao MPRIS" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "Permitir uso de teclas de média" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Opções extra do MPV:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "Interface" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "Ficheiros de config." #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "Diversos" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "Plugins" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Gravar" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Preferências" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Abrir ficheiro" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Abrir localização" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "Adicionar ficheiro à lista de reprodução" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "Adicionar localização à lista de reprodução" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Mostrar dialogo de preferências" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Alternar controlos" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Alternar a mostra da lista de reprodução" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Alternar para modo ecrã completo" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Deixar modo de ecrã completo" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "" "Alterna os estados do OSD entre o tempo normal e o de reprodução/duração" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Exibir nome do ficheiro no OSD" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "Mostrar progresso, tempo decorrido e duração no OSD" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "Procurar Recuar/Avançar 5 segundos" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Procura exata Recuar/Avançar exatamente 1 segundo" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "Procurar Recuar/Avançar 1 minuto" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "Procura exata Recuar/Avançar exatamente 5 segundos" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "Procura a legenda anterior/seguinte" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Recuar/Avançar um único quadro" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "Procura o início do capítulo anterior/seguinte" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Reduzir/Aumentar a velocidade de reprodução 10%" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Reduzir a metade/dobrar a velocidade de reprodução" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Redefinir a velocidade de reprodução para normal" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Recuar/Avançar na lista de reprodução" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Remover item selecionado da lista de reprodução" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Guardar lista de reprodução" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "Definir/Limpar pontos de ciclo A-B" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Alternar ciclo infinito" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Pausa ou não pausa" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Sair" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Guardar posição na lista de reprodução e sair" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Percorrer as faixas de áudio" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Reduzir/Aumentar volume" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "Silenciar ou não silenciar" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Ajuste o atraso de áudio em +/- 0,1 segundos" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Alternar visibilidade de legendas" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Percorrer as legendas disponíveis" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Ajustar o atraso das legendas em +/- 0,1 segundos" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "Alternar substituição de estilo de legendas SSA/ASS" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Mover legendas para cima/baixo" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "Alternar o modo de compatibilidade do aspecto do VSFilter" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Percorrer as faixas de vídeo" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "Diminuir/aumentar o intervalo de corte e impressão" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Capturar ecrã" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Capturar ecrã sem legendas" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Tire uma captura de ecrã, como a janela exibe" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Redimensione o vídeo para metade do tamanho original" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Redimensione o vídeo para o tamanho original" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "Redimensione o vídeo para duplicar o seu tamanho original" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Ajustar o contraste" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Ajustar a luminosidade" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Ajustar o gamma" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Ajustar a saturação" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Ativar ou desativar o desentrelaçador" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "Substituição da relação de aspecto do ciclo" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Interface de Utilizador" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Vídeo" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Áudio" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Legenda" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Reprodução" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "A Procurar" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" "Ativar ou desativar as decorações do lado do cliente requer o reinício para " "entrar em vigor." #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Adicionar ficheiro a lista de reprodução" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Abrir Ficheiro" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Adicionar local à lista de reprodução" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Abrir Localização" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "Load Audio Track…" #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "Carregar faixa de legendas..." #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Guardar Lista de Reprodução" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "Uma interface GTK para MPV" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "" "Hugo Carvalho .\n" "Bruno Guerreiro" celluloid-0.18/po/ro.po000066400000000000000000000565701356026115400150340ustar00rootroot00000000000000# Romanian (ro_RO) translations for gnome-mpv package. # gnome-mpv # Copyright (C) 2015 THE gnome-mpv'S COPYRIGHT HOLDER # This file is distributed under the same license as the gnone-mpv package. # Robert Datcu , 2015. # gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: gnome-mpv 0.15\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-10-09 12:55+0000\n" "Last-Translator: Copied by Zanata \n" "Language-Team: Romanian Translations\n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "" #: src/celluloid-application.c:421 msgid "Playing" msgstr "" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "" #: src/celluloid-menu.c:106 msgid "None" msgstr "" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "" #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 msgid "No disc found" msgstr "" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Fișier" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "" #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "" #: src/celluloid-menu.c:236 msgid "Open _Disc…" msgstr "" #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "_Salvează Lista Redare" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "_Modifică" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Preferințe" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_Vizualizare" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "_Afișează Lista Redare" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Tot ecranul" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Ajutor" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "" #: src/celluloid-menu.c:316 #, fuzzy msgid "Open _Disc" msgstr "Deschide Fișier" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "" #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Adresă:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Anulează" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Deschide" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "" #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "" #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Listă de redare" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "" #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Activează decorațiile ferestrelor (CSD)" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Activează tema întunecată" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Ține minte adresa ultimului fișier" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "Încarcă fișierul de configurare MPV" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "fișier configurare MPV:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "Încarcă fișierul MPV de combinații taste" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "fișier MPV configurare combinații taste:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Extraopțiuni MPV:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Salvează" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Preferințe" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Adaugă un fișier Listei de Redare" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Deschide Fișier" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Deschide Adresa" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "" #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "" #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Salvează Lista de Redare" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "O interfață GTK pentru MPV" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "Robert Datcu" celluloid-0.18/po/ru.po000066400000000000000000001016671356026115400150400ustar00rootroot00000000000000# gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: 0.6\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-10-09 12:54+0000\n" "Last-Translator: Copied by Zanata \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" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "Перенос (миграция) пользовательских настроек из предыдущей версии" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Включить или отключить тёмную тему" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Включить или отключить декорирование на стороне клиента" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "Использовать плавающие элементы управления в оконном режиме" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "Автоматически скрывать курсор мыши в оконном режиме" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "Использовать кнопки пропуска для управления списком воспроизведения" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "Запомнить или нет последнее расположение в диалоге открытия файла" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "Создавать новые окна при наличии открытого экземпляря" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Перейти к параметрам MPV" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Путь к файлу конфигурации MPV" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "Загрузить файл конфигурации MPV" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Путь к файлу конфигурации ввода MPV" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "Загрузить файл конфигурации ввода MPV" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "Включить поддержку MPRIS" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" "Включить поддержку мультимедийных клавиш на основе GNOME-Settings-Daemon" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "" "Предварительно подгружать метаданные для не текущих записей списка " "воспроизведения" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Ширина окна" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Высота окна" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "Громкость плеера" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Ширина списка воспроизведения" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "Показать или не показывать элементы управления" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Показать или скрыть список воспроизведения" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "Адрес последнего открытого файла" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "GTK+ интерфейс для MPV" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Возможности:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "Поддержка drag-and-drop" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "Загрузка внешних конфигурационных файлов MPV" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "Интерфейс MPRIS2 D-Bus" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "Этот выпуск содержит следующие изменения:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "Разделите вкладку Общие в диалоге настроек" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" "Улучшено поведение при переключении плейлиста под тайловыми оконными " "менеджерами" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "Установить каталог по умолчанию для скриншотов в XDG_PICTURES_DIR" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "Главное окно, показывающее приложение в действии" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "Главное окно с отключённым CSD" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "Главное окно с открытым списком воспроизведения" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "Новое окно" #: src/celluloid-application.c:421 msgid "Playing" msgstr "Воспроизводится" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Показать версию релиза" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "Поставить в очередь" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "Создать новое окно" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "ПАРАМЕТРЫ" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "Установите роль окна" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "Не подключаться к уже работающему экземпляру" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Приостановить" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Воспроизведение" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Остановить" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Перемотать вперёд" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Перемотать назад" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Следующая глава" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Предыдущая глава" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "Режим повтора" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Переход в полноэкранный режим и обратно" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Ошибка" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "Все файлы" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "Медиафайлы" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "Аудиофайлы" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "Видеофайлы" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "Файлы изображений" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "Файлы субтитров" #: src/celluloid-menu.c:106 msgid "None" msgstr "Ничего" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Неизвестный" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "Заг_рузить внешние…" #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 #, fuzzy msgid "No disc found" msgstr "Модули не найдены" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Файл" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "От_крыть..." #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "От_крыть расположение..." #: src/celluloid-menu.c:236 #, fuzzy msgid "Open _Disc…" msgstr "От_крыть расположение..." #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "_Сохранить список воспроизведения" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "Но_вое окно" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "_Правка" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "Пара_метры" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "В_идео дорожка" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "_Аудио дорожка" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "Дорожка с_убтитров" #: src/celluloid-menu.c:244 msgid "_View" msgstr "В_ид" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "_Показать/Скрыть элементы управления" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "_Показать/Скрыть список воспроизведения" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Полноэкранный режим" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Справка" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "_Комбинации клавиш" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "_О Celluloid" #: src/celluloid-menu.c:316 #, fuzzy msgid "Open _Disc" msgstr "Открыть файл" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "Воспроизведение было прекращено. Причина: %s." #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Расположение:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Отмена" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Открыть" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "Не удалось применить один или несколько параметров MPV." #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "_Копировать расположение" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "_Удалить" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Добавить…" #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "Доб_авить расположение…" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "_В случайном порядке" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "Повторять _файл" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "Повторять _список воспроизведения" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Список воспроизведения" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "Добавить модуль" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "Lua модули" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "JavaScript модули" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "С модули" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "Не удалось скопировать файл из '%s' в '%s'. Причина: %s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "Модули не найдены" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Удалить" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "Вы уверены, что хотите удалить этот скрипт? Это действие необратимо." #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "Не удалось удалить файл '%s'. Причина: %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Включить декорирование на стороне клиента" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Использовать тёмную тему" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "Использовать плавающие элементы управления в оконном режиме" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "Автоматически скрывать курсор мыши в оконном режиме" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "Использовать кнопки пропуска для управления списком воспроизведения" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Запомнить последнее расположение файла(ов)" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "Загрузить файл конфигурации MPV" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "Файл конфигурации MPV:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "Загрузить файл конфигурации ввода MPV" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "Файл конфигурации ввода MPV:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "Всегда открывать новое окно" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "Предварительная выборка метаданных" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "Включить поддержку MPRIS" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "Включить поддержку мультимедийных клавиш" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Дополнительные параметры MPV:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "Интерфейс" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "Файлы настроек" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "Разное" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "Модули" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Сохранить" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Параметры" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Открыть файл" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Открыть расположение" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "Добавить файл в список воспроизведения" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "Добавить расположение в список воспроизведения" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Показать параметры" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Показать/Скрыть элементы управления" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Показать/Скрыть список воспроизведения" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Полноэкранный режим" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Выйти из полноэкранного режима" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "Показать время воспроизведения/продолжительность" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Показывть имя файла" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "Показывать прогресс, прошедшее время и продолжительность" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "Переход назад/вперёд на 5 секунд" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Точный переход назад/вперёд на 1 секунду" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "Переход назад/вперёд на 1 минуту" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "Точный переход назад/вперёд на 5 секунд" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "Переход к предыдущему/следующему субтитру" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Шаг назад/вперёд на один кадр" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "Переход к предыдущей/следующей главе" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Уменьшить/увеличить скорость воспроизведения на 10%" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Сократить вдвое/удвоить текущую скорость воспроизведения" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Сбросить скорость воспроизведения на нормальную" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Назад/вперёд по списку воспроизведения" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Удалить выбранный файл из списка воспроизведения" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Сохранить список воспроизведения" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "Установить/очистить A-B точки цикла" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Переключить бесконечный повтор" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Приостановить или возобновить" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Завершить" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Сохранить текущую позицию воспроизведения и выйти" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Циклически доступные аудио дорожки" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Уменьшить/увеличить громкость" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "Отключить или включить звук" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Изменить задержку аудио на + / - 0,1 секунды" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Переключить видимости субтитров" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Циклически переключить доступные субтитры" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Изменить задержку субтитров на + / - 0,1 секунды" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "Переключить стиль субтитров SSA/ASS" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Переместить субтитры вверх/вниз" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Циклически доступные видео дорожки" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "Уменьшает/увеличивает диапазон панорамирования и сканирования" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Сделать скриншот" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Сделать скриншот, без субтитров" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Сделать скриншот, с субтитрами и OSD, масштабированием" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Изменить размер видео до половины своего исходного размера" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Изменить размер видео до исходного размера" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "Удвоить размер видео относительно оригинального размера" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Регулировка контрастности" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Регулировка яркости" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Регулировка гаммы" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Регулировка насыщенности" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Включить или отключить деинтерлейсинг" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "Цикл коррекции соотношения сторон" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Пользовательский интерфейс" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Видео" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Аудио" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Субтитры" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Воспроизведение" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Переход" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" "Включение или отключение декораций на стороне клиента требует перезапуска, " "чтобы изменения вступили в силу." #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Добавить файл в список воспроизведения" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Открыть файл" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Добавить расположение в список воспроизведения" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Открыть расположение" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "Загрузить звуковую дорожку…" #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "Загрузить субтитры…" #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Сохранить список воспроизведения" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "GTK интерфейс для MPV" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "" "Maxim Orlov , 2018.\n" "Artem Polishchuk , 2019." celluloid-0.18/po/sr.po000066400000000000000000000744201356026115400150320ustar00rootroot00000000000000# gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: gnome-mpv 0.12\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-10-09 12:54+0000\n" "Last-Translator: Copied by Zanata \n" "Language-Team: Serbian (Cyrillic)\n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "Да ли су поставке већ пренете из претходне верзије" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Омогући или онемогући тамну тему" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Омогући или онемогући украсе клијента" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "Користи пливајуће контроле у режиму прозора" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "" "Дозвољава дијалогу бирача датотека да упамти последње приступљен " "директоријум" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "Да ли да креира нови прозор када је примерак већ присутан" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Опције које треба пренети на mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Путања до mpv конфигурационе датотеке" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "Дозвољава учитавање mpv конфигурационе датотеке" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Путања до mpv конфигурационе датотеке уноса" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "Дозвољава учитавање mpv конфигурационе датотеке уноса" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "Да ли да омогући подршку за MPRIS" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" "Да ли да омогући подршку за мултимедијалне тастере из Гномових подешавања" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "Да ли да омогући припрему метаподатака за спољне уносе листе" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Ширина прозора" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Висина прозора" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "Јачина звука" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Ширина листе пуштања" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "Дозвољава приказ контрола" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Прикажи листу пуштања" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "URI последње приступљеног директоријума" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "GTK+ прочеље за mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Могућности:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "Превуци и отпусти листу пуштања" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "Учитавам спољне mpv конфигурационе датотеке" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "MPRIS2 D-Bus сучеље" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 #, fuzzy msgid "Add option to autohide mouse cursor in windowed mode" msgstr "Користи пливајуће контроле у режиму прозора" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "Главни прозор са онемогућеним CSD-ом" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "Главни прозор са отвореном листом пуштања" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "Нови прозор" #: src/celluloid-application.c:421 msgid "Playing" msgstr "Репродукција" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Прикажи верзију издања" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "Нанижи" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "Направи нови прозор" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "Не повезуј на већ покренут примерак" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Паузирај" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Пусти" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Заустави" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Напред" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Назад" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Следеће Поглавље" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Претходно Поглавље" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Цео Екран" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Грешка" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "Све Датотеке" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "Медијски записи" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "Звучни записи" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "Видео записи" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "Слике" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "Преводи" #: src/celluloid-menu.c:106 msgid "None" msgstr "Ниједан" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Непознато" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "_Учитај Спољне..." #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 msgid "No disc found" msgstr "" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Датотека" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "" #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "" #: src/celluloid-menu.c:236 msgid "Open _Disc…" msgstr "" #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "_Сачувај Листу Пуштања" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "_Нови прозор" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "_Уреди" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Поставке" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "_Видео Снимак" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "_Аудио Снимак" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "_Превод" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_Преглед" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "_Прикажи Контроле" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "_Прикажи Листу Пуштања" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Цео Екран" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Помоћ" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "_Пречице Тастатуре" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "" #: src/celluloid-menu.c:316 #, fuzzy msgid "Open _Disc" msgstr "Отвори датотеку" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "Репродукција је неправилно окончана. Разлог: %s." #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Локација:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Откажи" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Отвори" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "Неуспешна примена једне или више MPV опција." #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Додај..." #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "Додај_Локацију..." #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "_Насумично" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Листа Пуштања" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "Неуспешно копирање датотеке из '%s' у '%s'. Разлог: %s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Уклони" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "" "Сигурно желите да уклоните ову скрипту? Овај поступак не може бити опозван." #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "Неуспешно брисање датотеке '%s'. Разлог: %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Омогући украсе клијента" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Омогући тамну тему" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "Користи пливајуће контроле у режиму прозора" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Упамти локацију последње датотеке" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "Учитај MPV конфигурациону датотеку" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "MPV конфигурациона датотека:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "Учитај MPV конфигурациону датотеку уноса" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "MPV конфигурациона датотека уноса:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "Увек отвори нови прозор" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "Припреми метаподатке" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "Омогући подршку за MPRIS" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "Омогући подршку за мултимедијалне тастере" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Додатне MPV опције:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Сачувај" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Поставке" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Отвори датотеку" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Отвори локацију" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "Додај датотеку у листу" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "Додај место у листу" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Прикажи дијалог поставки" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Прикажи контроле" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Прикажи листу пуштања" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Прикажи у режиму целог екрана" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Напусти режим целог екрана" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "Промени OSD приказ између нормалног и време пуштања/дужина" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Прикажи име датотеке у OSD" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "Прикажи напредак, протекло време и дужину на OSD" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "Пребаци 5 секунди уназад/унапред" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Пребаци тачно 1 секунд уназад/унапред" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "Пребаци 1 минут уназад/унапред" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "Пребаци тачно 5 секунди уназад/унапред" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "Пребаци на претходни/следећи поднатпис" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Корак за једну слику уназад/унапред" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "Пребаци на почетак претходног/следећег поглавља" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Успори/убрзај репродукцију за 10%" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Преполови/удвостручи тренутну брзину репродукције" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Поврати нормалну брзину репродукције" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Иди уназад/унапред у листи пуштања" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Избаци означену ставку из листе пуштања" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Сачувај листу пуштања" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "Постави/очисти A-B тачке понављања" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Укључи бесконачно понављање" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Паузирај или настави" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Напусти" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Сачувај тренутну позицију репродукције и напусти" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Кружи кроз аудио снимке" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Смањи/појачај" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "Искључи или укључи звук" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Прилагоди кашњење звука за +/- 0.1 секунд" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Промени видљивост поднатписа" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Кружи кроз доступне поднатписе" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Прилагоди кашњење поднатписа за +/- 0.1 секунд" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "Измени SSA/ASS стил поднатписа" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Помери поднатписе горе/доле" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "Измени VSFilter режим усклађености" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Кружи кроз видео снимке" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "Повећај/умањи опсег скенирања односа" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Направи снимак екрана" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Направи снимак екрана без поднатписа" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Направи снимак екрана како га прозор приказује" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Преполови оригиналну величину видео снимка" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Поврати оригиналну величину видео снимка" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "Удвостручи оригиналну величину видео снимка" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Прилагоди контраст" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Прилагоди осветљеност" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Прилагоди гаму" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Прилагоди засићење" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Омогући или онемогући преплитање" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "Кружи кроз промену размере" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Корисничко Сучеље" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Видео" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Аудио" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Поднатпис" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Репродукција" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Трагање" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" "Потребно је поновно покретање да би измена подешавања украса клијента имала " "ефекат." #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Додај Датотеку у Листу Пуштања" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Отвори Датотеку" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Додај Локацију у Листу Пуштања" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Отвори Локацију" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "Учитај звучни запис…" #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "Учитај превод…" #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Сачувај Листу Пуштања" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "GTK прочеље за MPV" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "Срђан С." celluloid-0.18/po/sr@latin.po000066400000000000000000000657141356026115400161700ustar00rootroot00000000000000# gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: gnome-mpv 0.12\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-10-09 12:54+0000\n" "Last-Translator: Copied by Zanata \n" "Language-Team: Serbian (Latin)\n" "Language: sr@latin\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "Da li su postavke već prenete iz prethodne verzije" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Omogući ili onemogući tamnu temu" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Omogući ili onemogući ukrase klijenta" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "Koristiti plivajuće kontrole u režimu prozora" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "" "Dozvoljava dijalogu birača datoteka da upamti poslednje pristupljen " "direktorijum" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "Da li da kreira novi prozor kada je primerak već prisutan" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Opcije koje treba preneti na mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Putanja do mpv konfiguracione datoteke" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "Dozvoljava učitavanje mpv konfiguracione datoteke" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Putanja do mpv konfiguracione datoteke unosa" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "Dozvoljava učitavanje mpv konfiguracione datoteke unosa" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "Da li da omogući podršku za MPRIS" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" "Da li da omogući podršku za multimedijalne tastere iz Gnomovih podešavanja" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "Da li da omogući pripremu metapodataka za spoljne unose liste" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Širina prozora" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Visina prozora" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "Jačina zvuka" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Širina liste puštanja" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "Dozvoljava prikaz kontrola" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Prikaži listu puštanja" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "URI poslednje pristupljenog direktorijuma" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "GTK+ pročelje za mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Mogućnosti:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "Prevuci i otpusti listu puštanja" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "Učitavam spoljne mpv konfiguracione datoteke" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "MPRIS2 D-Bus sučelje" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 #, fuzzy msgid "Add option to autohide mouse cursor in windowed mode" msgstr "Koristi plivajuće kontrole u režimu prozora" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "Glavni prozor sa onemogućenim CSD-om" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "Glavni prozor sa otvorenom listom puštanja" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "Novi prozor" #: src/celluloid-application.c:421 msgid "Playing" msgstr "Reprodukcija" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Prikaži verziju izdanja" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "Naniži" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "Napravi novi prozor" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "Ne povezuj na već pokrenut primerak" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Pauziraj" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Pusti" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Zaustavi" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Napred" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Nazad" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Sledeće Poglavlje" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Prethodno Poglavlje" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Ceo Ekran" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Greška" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "Sve Datoteke" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "Medijski zapisi" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "Zvučni zapisi" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "Video zapisi" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "Slike" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "Prevodi" #: src/celluloid-menu.c:106 msgid "None" msgstr "Nijedan" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Nepoznato" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "_Učitaj Spoljne..." #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 msgid "No disc found" msgstr "" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Datoteka" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "" #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "" #: src/celluloid-menu.c:236 msgid "Open _Disc…" msgstr "" #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "_Sačuvaj Listu Puštanja" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "_Novi prozor" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "_Uredi" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Postavke" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "_Video Snimak" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "_Audio Snimak" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "_Prevod" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_Pregled" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "_Prikaži Kontrole" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "_Prikaži Listu Puštanja" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Ceo Ekran" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Pomoć" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "_Prečice Tastature" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "" #: src/celluloid-menu.c:316 #, fuzzy msgid "Open _Disc" msgstr "Otvori datoteku" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "Reprodukcija je nepravilno okončana. Razlog: %s." #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Lokacija:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Otkaži" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Otvori" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "Neuspešna primena jedne ili više MPV opcija." #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Dodaj..." #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "Dodaj_Lokaciju..." #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "_Nasumično" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Lista Puštanja" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "Neuspešno kopiranje datoteke iz '%s' u '%s'. Razlog: %s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Ukloni" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "" "Sigurno želite da uklonite ovu skriptu? Ovaj postupak ne može biti opozvan." #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "Neuspešno brisanje datoteke '%s'. Razlog: %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Omogući ukrase klijenta" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Omogući tamnu temu" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "Koristi plivajuće kontrole u režimu prozora" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Upamti lokaciju poslednje datoteke" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "Učitaj MPV konfiguracionu datoteku" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "MPV konfiguraciona datoteka:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "Učitaj MPV konfiguracionu datoteku" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "MPV konfiguraciona datoteka unosa:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "Uvek otvori novi prozor" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "Pripremi metapodatke" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "Omogući podršku za MPRIS" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "Omogući podršku za multimedijalne tastere" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Dodatne MPV opcije:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Sačuvaj" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Postavke" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Otvori datoteku" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Otvori lokaciju" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "Dodaj datoteku u listu" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "Dodaj mesto u listu" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Prikaži dijalog postavki" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Prikaži kontrole" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Prikaži listu puštanja" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Prikaži u režimu celog ekrana" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Napusti režim celog ekrana" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "Promeni OSD prikaz između normalnog i vreme puštanja/dužina" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Prikaži ime datoteke u OSD" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "Prikaži napredak, proteklo vreme i dužinu na OSD" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "Prebaci 5 sekundi unazad/unapred" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Prebaci tačno 1 sekund unazad/unapred" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "Prebaci 1 minut unazad/unapred" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "Prebaci tačno 5 sekundi unazad/unapred" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "Prebaci na prethodni/sledeći podnatpis" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Korak za jednu sliku unazad/unapred" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "Prebaci na početak prethodnog/sledećeg poglavlja" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Uspori/ubrzaj reprodukciju za 10%" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Prepolovi/udvostruči trenutnu brzinu reprodukcije" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Povrati normalnu brzinu reprodukcije" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Idi unazad/unapred u listi puštanja" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Izbaci označenu stavku iz liste puštanja" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Sačuvaj listu puštanja" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "Postavi/očisti A-B tačke ponavljanja" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Uključi beskonačno ponavljanje" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Pauziraj ili nastavi" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Napusti" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Sačuvaj trenutnu poziciju reprodukcije i napusti" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Kruži kroz audio snimke" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Smanji/pojačaj" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "Isključi ili uključi zvuk" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Prilagodi kašnjenje zvuka za +/- 0.1 sekund" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Promeni vidljivost podnatpisa" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Kruži kroz dostupne podnatpise" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Prilagodi kašnjenje podnatpisa za +/- 0.1 sekund" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "Izmeni SSA/ASS stil podnatpisa" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Pomeri podnatpis gore/dole" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "Izmeni VSFilter režim usklađenosti" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Kruži kroz video snimke" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "Povećaj/umanji opseg skeniranja odnosa" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Napravi snimak ekrana" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Napravi snimak ekrana bez podnatpisa" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Napravi snimak ekrana kako ga prozor prikazuje" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Prepolovi originalnu veličinu video snimka" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Povrati originalnu veličinu video snimka" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "Udvostruči originalnu veličinu video snimka" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Prilagodi kontrast" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Prilagodi osvetljenost" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Prilagodi gamu" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Prilagodi zasićenje" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Omogući ili onemogući preplitanje" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "Kruži kroz promenu razmere" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Korisničko Sučelje" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Video" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Audio" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Podnatpis" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Reprodukcija" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Traganje" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" "Potrebno je ponovno pokretanje da bi izmena podešavanja ukrasa klijenta " "imala efekat." #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Dodaj Datoteku u Listu Puštanja" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Otvori Datoteku" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Dodaj Lokaciju u Listu Puštnja" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Otvori Lokaciju" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "Učitaj zvučni zapis..." #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "Učitaj prevod..." #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Sačuvaj Listu Puštanja" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "GTK pročelje za MPV" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "Srđan S." celluloid-0.18/po/sv.po000066400000000000000000000657371356026115400150510ustar00rootroot00000000000000# gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: gnome-mpv 0.15\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-10-09 12:55+0000\n" "Last-Translator: Copied by Zanata \n" "Language-Team: Swedish\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "Om inställningarna redan har migrerats från den föregående versionen" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Aktivera eller inaktivera mörkt tema" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Aktivera eller inaktivera fönsterdekorationer i klienten" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "Om flytande kontroller ska aktiveras i fönsterläge eller inte" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "" "Om dialogrutan för val av filer ska komma ihåg den senast använda mappen " "eller inte" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Alternativ att skicka vidare till mpv" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Sökväg till mpv konfigurationsfil" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "Läs eller läs ej in mpv konfigurationsfil" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Sökväg till konfigurationsfil för mpv tangentbindningar" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "Läs eller läs ej in konfigurationsfil för mpv tangentbindningar" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "Om stöd för MPRIS ska aktiveras eller inte" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" "Om stöd för GNOME-Settings-Daemon-baserade media knappar ska aktiveras eller" " inte" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Fönsterbredd" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Fönsterhöjd" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "Volym för spelaren" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Spellistans bredd" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "Visa eller visa ej kontrollerna" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Visa eller visa ej spellistan" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "URI för den senast använda mappen" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "GTK+ gränssnitt för mpv" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Funktioner:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "Dra och släpp spellista" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "Läser in externa mpv konfigurationsfiler" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "MPRIS2 D-Bus gränssnitt" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 #, fuzzy msgid "Add option to autohide mouse cursor in windowed mode" msgstr "Använd flytande kontroller i fönsterläge" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "Huvudfönstret med CSD inaktiverat" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "Huvudfönstret med spellista öppen" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "Nytt fönster" #: src/celluloid-application.c:421 msgid "Playing" msgstr "Spelar" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Visa utgivningsversion" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "Lägg till i kö" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "Skapa ett nytt fönster" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "Anslut inte till en instans som redan körs" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Paus" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Spela upp" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Stopp" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Framåt" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Spola tillbaka" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Nästa kapitel" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Föregående kapitel" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Växla helskärm" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Fel" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "Alla filer" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "Mediefiler" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "Ljudfiler" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "Videofiler" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "Bildfiler" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "Undertextfiler" #: src/celluloid-menu.c:106 msgid "None" msgstr "Inga" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Okänd" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "_Öppna externt..." #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 msgid "No disc found" msgstr "" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Fil" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "" #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "" #: src/celluloid-menu.c:236 msgid "Open _Disc…" msgstr "" #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "_Spara spellista" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "_Redigera" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Inställningar" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "_Videospår" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "_Ljudspår" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "_Undertext-spår" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_Visa" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "_Visa/dölj kontroller" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "Visa/dölj _spellista" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Helskärm" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Hjälp" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "_Kortkommandon" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "" #: src/celluloid-menu.c:316 #, fuzzy msgid "Open _Disc" msgstr "Öppna fil" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "Där uppstod ett onormalt avbrott under uppspelningen. Anledning: %s." #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Plats:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Avbryt" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Öppna" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "Misslyckades att tillämpa en eller flera MPV alternativ." #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Lägg till..." #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "Lägg till _plats:" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "_Blanda" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Spellista" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "Misslyckades att kopiera filen från '%s' till '%s'. Anledning: %s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Ta bort" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "" "Är du säker på att du vill ta bort detta skriptet? Denna åtgärden kan inte " "ångras." #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "Misslyckades att radera filen '%s'. Anledning: %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Aktivera fönsterdekorationer i klienten" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Aktivera mörkt tema" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "Använd flytande kontroller i fönsterläge" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Kom ihåg senaste filens plats" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "Öppna MPV konfigurationsfil" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "MPV konfigurationsfil:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "Öppna MPV konfigurationsfil för tangentbindningar" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "MPV konfigurationsfil för tangentbindningar:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "Aktivera stöd för MPRIS" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "Aktivera stöd för media knappar" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Extra MPV alternativ:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Spara" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Inställningar" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Öppna fil" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Öppna plats" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "Lägg till fil i spellista" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "Lägg till plats i spellista" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Visa dialogrutan för alternativ" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Visa/dölj kontroller" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Visa/dölj spellista" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Växla helskärmsläge" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Lämna helskärmsläge" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "Växla OSD-lägen mellan normal och uppspelningstid/speltid" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Visa filnamn i OSD vyn" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "Visa förlopp, förfluten tid och speltid i OSD vyn" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "Sök bakåt/framåt med 5 sekunder" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Sök exakt bakåt/framåt med 1 sekund" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "Sök bakåt/framåt med 1 minut" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "Sök exakt bakåt/framåt med 5 sekunder" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "Sök fram till föregående/nästa undertext" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Gå bakåt/framåt med en bildruta" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "Sök fram till början av föregående/nästa kapitel" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Minska/öka uppspelningshastighet med 10%" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Halvera/dubbla nuvarande uppspelningshastighet" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Återställ uppspelningshastighet till normal" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Gå bakåt/framåt i spellistan" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Ta bort markerat objekt från spellista" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Spara spellista" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "Sätt/rensa A-B punkter för repeterad uppspelning" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Växla oändlig återuppspelning" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Pausa eller fortsätt" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Avsluta" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Spara nuvarande uppspelningsposition och avsluta" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Cykla igenom ljudspår" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Sänk/höj volymen" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "Slå på eller av ljud" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Justera ljudfördröjning med +/- 0,1 sekunder" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Växla synlighet av undertexter" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Cykla igenom tillgängliga undertexter" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Justera undertexters fördröjning med +/- 0,1 sekunder" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "Växla överskridning av SSA/ASS undertexters stil" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Flytta undertexter up/ned" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "Växla VSFilter aspekt kompatibilitetsläge" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Cykla igenom videospår" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "Sänk/höj panorering och scan omfång" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Ta en skärmdump" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Ta en skärmdump, utan undertexter" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Ta en skärmdump, så som fönstret visar det." #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Ändra storlek på videon till hälften av originalformatet" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Återställ videon till sin ursprungliga storlek" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "Ändra storlek på videon till det dubbla av dess original storlek" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Justera kontrast" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Justera ljusstyrka" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Justera gamma" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Justera färgmättnad" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Aktivera eller inaktivera deinterlacer" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "Cykla överskridning av bildförhållande" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Användargränssnitt" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Video" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Ljud" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Undertext" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Uppspelning" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Söker" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" "Aktivering eller inaktivering av fönsterdekorationer i klienten kräver en " "omstart innan det träder i kraft." #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Lägg till fil i spellista" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Öppna fil" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Lägg till plats till spellista" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Öppna plats" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "Öppna ljudspår..." #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "Öppna undertext spår..." #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Spara spellista" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "Ett GTK gränssnitt för MPV" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "Patrik Nilsson " celluloid-0.18/po/tr.po000066400000000000000000000730261356026115400150340ustar00rootroot00000000000000# Serdar Sağlam , 2019. #zanata # gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: gnome-mpv 0.15\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-10-09 12:55+0000\n" "Last-Translator: Copied by Zanata \n" "Language-Team: Turkish\n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n>1)\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "Ayarların önceki sürümden zaten geçirilmiş olup olmadığı" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Koyu temayı etkinleştir veya devre dışı bırak" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "İstemci tarafı süslemelerini etkinleştir veya devre dışı bırak" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "Pencere kipinde kayan kontrollerin kullanılıp kullanılmayacağı" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "Pencere kipinde fare imlecini otomatik gösterip göstermemek" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "Yüzen kontrollerin yasak olacağı asgari imleç hızı." #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "" "Oynatma listesini kontrol etmek için atlama düğmelerinin kullanılıp " "kullanılmayacağı" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "" "Dosya seçici iletişim kutusunun erişilen son klasörünü hatırlasın veya " "hatırlamasın" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "Zaten bir örnek olduğunda yeni pencereler oluşturup oluşturmama" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Mpv'ye geçiş seçenekleri" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Mpv yapılandırma dosyası yolu" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "Mpv yapılandırma dosyasını yükle veya yükleme" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Mpv giriş yapılandırma dosyası yolu" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "Mpv giriş yapılandırma dosyasını yükle veya yükleme" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "MPRIS desteğinin etkinleştirilip etkinleştirilmeyeceği" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" "GNOME Ayarlar Yönetim tabanlı medya tuşlarını destekleyip desteklememek" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "" "Güncel olmayan oynatma listeleri için üst verilerin önceden getirilip " "getirilmeyeceği" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" "Bir dosyanın oynatılması bir hatayla sona erdiğinde bir hata mesajı " "gösterilip gösterilmeyeceği" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Pencere genişliği" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Pencere yüksekliği" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "Oynatıcı hacmi" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Oynatma listesi genişliği" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "Kontrolleri göster veya gösterme" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Oynatma listesini göster veya gösterme" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "Erişilen son klasörün URI'si" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "Mpv için GTK + arayüz" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Özellikler:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "Oynatma listesini sürükleyip bırak" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "Harici mpv yapılandırma dosyalarını yükle" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "MPRIS2 D-Bus arayüzü" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "Bu sürüm aşağıdaki değişiklikleri içerir:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 #, fuzzy msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "Yüzen kontrollerin yasak olacağı asgari imleç hızı." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 #, fuzzy msgid "Add option for suppressing playback errors" msgstr "Oynatma hatalarını yoksay" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "Bu liste eksik. Değişiklikler için (git) günlüğüne bakın" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "Tercihler iletişim kutusunda Genel sekmeyi böl" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" "Döşeme pencere yöneticileri altında oynatma listesini değiştirirken " "davranışı iyileştirin" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "Uygulama menüsü ögelerini birincil menüye taşı" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "Her pencere için ayrı MPRIS DBus bağlantısı kullan" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "MPRIS özelliği LoopStatus için destek ekle" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" "Seçenek ekle, komut satırından mpv seçeneklerini ayarlamak için --mpv-" "options" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "Öntanımlı ekran görüntüsü dizinini XDG_PICTURES_DIR olarak ayarla" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" "İyileştirme ekle - -pencere-ölçeği, -otoölçek - otoölçek-büyük ve otoölçek-" "küçük" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "WM_ROLE ayarı için komut satırı seçeneği ekle" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "Oynatma listesi ögelerini kaldırmak için içerik menüsü ögesi ekle" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" "Oynatma listesi ögelerinin konumunu kopyalamak için bağlam menüsü ögesi ekle" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" "Atla düğmelerinin bölümler yerine oynatma listesi girişlerini değiştirmesini" " sağlamak için seçenek ekle" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "Dosya seçicinin yerel olmayan kaynakları kabul etmesini sağla" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "Tek bir dosyayı yinelemek için sağ tıklatma menüsü girişi ekle" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "Tam ekran ve pencere ölçeği için özellik değiştirme olaylarını işle" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "Pencere kipinde fare imlecini otomatik gizle" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "Uygulamayı çalışırken gösteren ana pencere" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "CSD'nin devre dışı bırakıldığı ana pencere" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "Oynatma listesi açık olan ana pencere" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "io.github.celluloid_player.Celluloid" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" "Video;Film;Müzik;Klip;Diziler;Oynatıcı;DVD;TV;Disk;Albüm;Music;GNOME;mpv;" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "Yeni Pencere" #: src/celluloid-application.c:421 msgid "Playing" msgstr "Oynatılıyor" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Mevcut sürümü göster" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "Kuyruğa al" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "Yeni pencere oluştur" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "SEÇENEKLER" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "Pencere rolünü ayarla" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "Zaten çalışan bir örneğe bağlanmayın" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Duraklat" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Oynat" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Durdur" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "İleri Sar" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Geri Sar" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Sonraki Bölüm" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Önceki Bölüm" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "Yinele" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Tam Ekran ⏎" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Hata" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "Tüm Dosyalar" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "Medya Dosyaları" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "Ses Dosyaları" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "Video Dosyaları" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "Görüntü Dosyaları" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "Altyazı Dosyaları" #: src/celluloid-menu.c:106 msgid "None" msgstr "Yok" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Bilinmeyen" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "_Harici Kaynaktan Seç…" #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 #, fuzzy msgid "No disc found" msgstr "Eklenti bulunamadı" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Dosya" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "_Aç…" #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "_Konum Aç…" #: src/celluloid-menu.c:236 #, fuzzy msgid "Open _Disc…" msgstr "_Konum Aç…" #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "Listeyi _Kaydet" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "_Yeni Pencere" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "_Düzenle" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Tercihler" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "_Video" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "_Diller" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "_Altyazılar" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_Görünüm" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "_Kontrol Tuşları" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "_Oynatma Listesi" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Tam Ekran" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Yardım" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "_Klavye Kısayolları" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "Celluloid _Hakkında" #: src/celluloid-menu.c:316 #, fuzzy msgid "Open _Disc" msgstr "Dosya aç" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "Oynatma anormal şekilde sonlandırıldı. Neden: %s." #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Konum:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_İptal" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Aç" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "Bir veya daha fazla MPV seçeneği uygulanamadı." #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "Konumu _Kopyala" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "_Kaldır" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Ekle…" #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "_Konum Ekle…" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "_Karıştır" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "_Dosyayı Yinele" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "_Yinele" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Oynatma Listesi" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "Eklenti Ekle" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "Lua Eklentileri" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "JavaScript Eklentileri" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "С Eklentileri" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "Dosya kopyalanamadı '%s' - '%s'. Sebep: %s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "Eklenti bulunamadı" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Kaldır" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "" "Bu komut dosyasını kaldırmak istediğinizden emin misiniz? Bu eylem geri " "alınamaz." #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "Dosya silinemedi '%s'. Sebep: %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "İstemci tarafı süslemelerini etkinleştir" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Koyu temayı etkinleştir" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "Pencere kipinde kayan kontroller kullan" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "Pencere kipine fare imlecini otomatik gizle" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "Oynatma listesini kontrol için atlama düğmelerini kullan" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Son dosyanın konumunu hatırla" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "MPV yapılandırma dosyasını yükle" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "MPV yapılandırma dosyası:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "MPV giriş yapılandırma dosyasını yükle" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "MPV giriş yapılandırma dosyası:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "Her zaman yeni pencere aç" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "Oynatma hatalarını yoksay" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "Meta verileri önceden al" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "MPRIS desteğini etkinleştir" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "Medya tuşları desteğini etkinleştir" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Özel MPV seçenekleri:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "Arabirim" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "Yapılandırma Dosyaları" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "Çeşitli" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "Eklentiler" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "_Kaydet" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Tercihler" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Dosya aç" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Konum aç" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "Oynatma listesine dosya ekle" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "Oynatma listesine konum ekle" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Tercihler iletişim kutusunu göster" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Kontrolleri değiştir" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Oynatma listesini değiştir" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Tam ekran kipini değiştir" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Tam ekran kipinden çık" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "OSD durumlarını normal ve oynatma arasında değiştir zaman/aralık" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "OSD'de dosya adını göster" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "OSD 'de ilerlemeyi, geçen süreyi ve süreyi göster" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "5 saniye ileri/geri ara" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Tam olarak 1 saniye ileri/geri ara" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "1 dakika ileri/geri ara" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "Tam olarak 5 saniye ileri/geri ara" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "Önceki/sonraki altyazıyı ara" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Tek kare ileri/geri atla" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "Önceki/sonraki bölümün başlangıcını araştır" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Oynatma hızını 10% oranında azalt/artır" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Yarım/çift akım oynatma hızı" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Oynatma hızını normale sıfırla" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Oynatma listesinde ileri/geri git" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Seçilen oynatma listesi ögesini kaldır" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Oynatma listesini kaydet" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "A-B yineleme noktalarını ayarla/temizle" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Sonsuz yinelemeyi değiştir" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Duraklat veya devam et" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Çık" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Geçerli oynatma konumunu kaydet ve çık" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Ses parçaları arasında geçiş yap" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Sesi azalt/arttır" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "Sesi kapat/aç" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Ses gecikmesini +/- 0.1 saniye olarak ayarla" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Altyazı görünürlüğünü değiştir" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Kullanılabilir altyazılar arasında geçiş yap" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Altyazı gecikmesini +/- 0.1 saniye olarak ayarla" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "SSA/ASS altyazı stili geçersiz kılmayı değiştir" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Altyazıları yukarı/aşağı taşı" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "VSFilter en boy uyumluluk kipini değiştir" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Yinelenen mevcut video parçaları" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "Pan ve tarama aralığını azalt/artır" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Ekran görüntüsü al" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Altyazısız ekran görüntüsü al" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Pencerenin gösterdiği gibi bir ekran görüntüsü al" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Videoyu orijinal boyutunun yarısı olarak yeniden boyutlandır" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Videoyu orijinal boyuta yeniden boyutlandır" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "Orijinal boyutunu ikiye katlamak için videoyu yeniden boyutlandır" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Karşıtlığı ayarla" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Parlaklığı ayarla" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Gama'yı ayarla" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Doygunluğu ayarla" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Deinterlacer özelliğini etkinleştir veya devre dışı bırak" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "Yineleme en boy oranı geçersiz kıl" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Kullanıcı Arabirimi" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Video" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Ses" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Altyazı" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Oynat" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Geçiş" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" "İstemci tarafı süslemelerin etkinleştirilmesi veya devre dışı bırakılması " "için yeniden başlatma gerekir." #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Oynatma Listesine Dosya Ekle" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Dosya Aç" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Oynatma Listesine Konum Ekle" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Konum Aç" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "Ses Parçası Yükle…" #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "Altyazı Parçası Yükle…" #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Oynatma Listesini Kaydet" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "MPV için bir GTK arayüzü" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "Serdar Sağlam " celluloid-0.18/po/uk.po000066400000000000000000001057531356026115400150310ustar00rootroot00000000000000# Ukrainian translations for gnome-mpv package. # , 2019. # Stepan Perun , 2019. #zanata # gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: 0.17\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-08-09 20:53+0300\n" "PO-Revision-Date: 2019-10-09 12:55+0000\n" "Last-Translator: Copied by Zanata \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" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "Перенесення (міграція) налаштувань користувача з попередньої версії" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "Увімкнути або вимкнути темну тему" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "Увімкнути або вимкнути декорування вікна на стороні клієнта" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "Використовувати плаваючі елементи керування у віконному режимі" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "Автоматично приховувати курсор миші у віконному режимі" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" "Мінімальна швидкість курсору, коли плаваючі елементи управління не " "приховані." #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "Використовувати кнопки пропуску для керування списком відтворення" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "Запам'ятати чи ні останнє розташування в діалозі відкриття файлу" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "Створювати нові вікна за наявності відкритого примірника" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "Перейти до параметрів MPV" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "Шлях до файлу конфігурації MPV" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "Завантажити файл конфігурації MPV" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "Шлях до файлу конфігурації вводу MPV" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "Завантажити файл конфігурації вводу MPV" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "Увімкнути підтримку MPRIS" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" "Увімкнути підтримку мультимедійних клавіш на основі GNOME-Settings-Daemon" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "" "Попередньо довантажувати метадані для записів поза поточним списком " "відтворення" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" "Виводити чи не виводити повідомлення про помилку при завершенні відтворення " "файлу з помилкою" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "Ширина вікна" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "Висота вікна" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "Гучність" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "Ширина списку відтворення" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "Показати або не показувати елементи керування" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "Показати або приховати список відтворення" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "Адреса останнього відкритої теки" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "GTK+ інтерфейс для MPV" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "Можливості:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "Підтримка drag-and-drop" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "Завантаження зовнішніх конфігураційних файлів MPV" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "Інтерфейс MPRIS2 D-Bus" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "Цей випуск містить наступні зміни:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 #, fuzzy msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" "Мінімальна швидкість курсору, коли плаваючі елементи управління не " "приховані." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 #, fuzzy msgid "Add option for suppressing playback errors" msgstr "Ігнорувати помилки відтворення" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "Цей список є неповним. Повний список змін див. в журналі git." #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "Розділіть вкладку Загальні в діалозі налаштувань" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "Поліпшення поведінки при перемиканні списку відтворення" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "Перемістити елементи меню програми в основне меню" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "Використовувати окреме з'єднання MPRIS DBus для кожного вікна" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "Додати підтримку циклу для MPRIS" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" "Додати параметр -- mpv-options для установки довільних параметрів mpv з " "командного рядка" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "Встановити каталог за замовчуванням для скріншотів у XDG_PICTURES_DIR" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" "Поліпшення обробки --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "Додати параметр командного рядка для встановлення WM_ROLE" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" "Додати пункт контекстного меню для видалення елементів списку відтворення" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" "Додати пункт контекстного меню для копіювання розташування елементів списку " "відтворення" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" "Додати кнопки пропуску для зміни запису списку відтворення, а не глави" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "Приймати не локальні розташування" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "Додати пункт меню правою кнопкою миші для зациклення одного файлу" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" "Обробляти події зміни властивостей для повноекранного режиму і масштабу " "вікна" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "" "Додати опцію автоматичного приховування курсору миші у віконному режимі" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "Головне вікно, яке показує програму у дії" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "Головне вікно з вимкненим CSD" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "Головне вікно з відкритим списком відтворення" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "Нове вікно" #: src/celluloid-application.c:421 msgid "Playing" msgstr "Відтворюється" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "Показати версію релізу" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "Поставити в чергу" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "Створити нове вікно" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "ПАРАМЕТРИ" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "Встановіть роль вікна" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "Не підключатися до вже працюючого екземпляра" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "Призупинити" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "Відтворення" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "Зупинити" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "Перемотати вперед" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "Перемотати назад" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "Наступний розділ" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "Попередній розділ" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "Режим повтору" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "Перехід у повноекранний режим і назад" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "Помилка" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "Усі файли" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "Медіафайли" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "Аудіофайли" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "Відеофайли" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "Файли зображень" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "Файли субтитрів" #: src/celluloid-menu.c:106 msgid "None" msgstr "Нічого" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "Невідомий" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "Зава_нтажити зовнішні…" #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 #, fuzzy msgid "No disc found" msgstr "Модулі не знайдено" #: src/celluloid-menu.c:233 msgid "_File" msgstr "_Файл" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "_Відкрити..." #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "_Відкрити розташування..." #: src/celluloid-menu.c:236 #, fuzzy msgid "Open _Disc…" msgstr "_Відкрити розташування..." #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "З_берегти список відтворення" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "_Створити вікно" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "З_міни" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "_Параметри" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "В_ідео доріжка" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "_Аудіо доріжка" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "Доріжка с_убтитрів" #: src/celluloid-menu.c:244 msgid "_View" msgstr "_Вигляд" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "_Показати/Приховати елементи керування" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "_Показати/Приховати список відтворення" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "_Повноекранний режим" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "_Довідка" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "_Комбінації клавіш" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "_Про Celluloid" #: src/celluloid-menu.c:316 #, fuzzy msgid "Open _Disc" msgstr "Відкрити файл" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "Відтворення було припинено. Причина: %s." #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "Розташування:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "_Скасувати" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "_Відкрити" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "Не вдалося застосувати один або кілька параметрів MPV." #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "_Копіювати розташування" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "Ви_лучити" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "_Додати…" #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "Дод_ати розташування…" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "_У випадковому порядку" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "Повторювати _файл" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "Повторювати _список відтворення" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "Список відтворення" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "Додати модуль" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "Lua модулі" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "JavaScript модулі" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "С модулі" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "Не вдалося скопіювати файл з '%s' до '%s'. Причина: %s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "Модулі не знайдено" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "Видалити" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "Ви впевнені, що хочете видалити цей скрипт? Ця дія незворотна." #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "Не вдалося видалити файл '%s'. Причина: %s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "Увімкнути декорування на стороні клієнта" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "Увімкнути темну тему" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "Використовувати плаваючі елементи керування у віконному режимі" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "Автоматично приховувати курсор миші у віконному режимі" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "Використовувати кнопки пропуску для керування списком відтворення" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "Запам'ятати останнє розташування файлу(ів)" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "Завантажити файл конфігурації MPV" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "Файл конфігурації MPV:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "Завантажити файл конфігурації вводу MPV" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "Файл конфігурації вводу MPV:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "Завжди відкривати нове вікно" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "Ігнорувати помилки відтворення" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "Попередня вибірка метаданих" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "Увімкнути підтримку MPRIS" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "Увімкнути підтримку мультимедійних клавіш" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "Додаткові параметри MPV:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "Інтерфейс" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "Файли налаштувань" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "Різне" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "Модулі" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "З_берегти" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "Параметри" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "Відкрити файл" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "Відкрити розташування" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "Додати файл до списку відтворення" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "Додати розташування до списку відтворення" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "Показати параметри" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "Показати/Приховати елементи керування" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "Показати/Сховати список відтворення" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "Повноекранний режим" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "Вийти з повноекранного режиму" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "Показати час відтворення/тривалість" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "Показати ім'я файлу в екранному меню OSD" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "Показувати прогрес, поточний час і тривалість" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "Перехід назад/вперед на 5 секунд" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "Точний перехід назад/вперед на 1 секунду" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "Перехід назад/вперед на 1 хвилину" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "Точний перехід назад/вперед на 5 секунд" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "Перехід до попереднього/наступного субтитру" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "Крок назад/вперед на один кадр" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "Перехід до попередньої/наступної глави" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "Зменшити/збільшити швидкість відтворення на 10%" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "Скоротити вдвічі/подвоїти поточну швидкість відтворення" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "Скинути швидкість відтворення на нормальну" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "Назад/вперед по списку відтворення" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "Видалити вибраний файл зі списку відтворення" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "Зберегти список відтворення" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "Встановити/очистити A-B точки циклу" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "Переключити нескінченний повтор" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "Призупинити або відновити" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "Завершити" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "Зберегти поточну позицію відтворення та вийти" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "Циклічно доступні аудіо доріжки" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "Зменшити/збільшити гучність" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "Вимкнути або увімкнути звук" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "Змінити затримку аудіо на + / - 0,1 секунди" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "Переключити видимість субтитрів" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "Циклічно переключити доступні субтитри" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "Змінити затримку субтитрів на + / - 0,1 секунди" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "Переключити стиль субтитрів SSA/ASS" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "Перемістити субтитри вгору/вниз" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "Перемикання режиму сумісності аспектів VSFilter" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "Циклічно доступні відео доріжки" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "Зменшує/збільшує діапазон панорамування та сканування" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "Зробити скріншот" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "Зробити скріншот, без субтитрів" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "Зробити скріншот, з субтитрами та OSD, масштабуванням" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "Змінити розмір відео до половини свого вихідного розміру" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "Змінити розмір відео до оригінального розміру" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "Подвоїти розмір відео щодо оригінального розміру" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "Регулювання контрастності" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "Регулювання яскравості" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "Регулювання гами" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "Регулювання насиченості" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "Увімкнути або вимкнути деінтерлейсинг" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "Цикл корекції співвідношення сторін" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "Інтерфейс користувача" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "Відео" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "Аудіо" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "Субтитри" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "Відтворення" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "Перехід" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" "Увімкнути або вимкнути декорування на стороні клієнта вимагає " "перезавантаження щоб зміни набули чинності." #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "Додати файл до списку відтворення" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "Відкрити файл" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "Додати розташування до списку відтворення" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "Відкрити розташування" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "Завантажити звукову доріжку…" #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "Завантажити субтитри…" #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "Зберегти список відтворення" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "GTK інтерфейс для MPV" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "" celluloid-0.18/po/zh_CN.po000066400000000000000000000705651356026115400154150ustar00rootroot00000000000000# Chinese translations for gnome-mpv package # gnome-mpv 软件包的简体中文翻译. # Copyright (C) 2015 THE GNOME-MPV'S COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-mpv package. # sun , 2015. # Mingye Wang , 2015. # Huang Jiayao , 2019. #zanata # gnome-mpv , 2019. #zanata # 玉堂白鹤 , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: gnome-mpv 0.6\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-10-29 07:18+0000\n" "Last-Translator: 玉堂白鹤 \n" "Language-Team: AOSC zh_CN \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "是否已从上一个版本迁移设置" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "启用或禁用暗色主题" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "启用或禁用客户端装饰" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "是否在窗口模式下启用浮动控制" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "是否在窗口模式下自动隐藏鼠标指针" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "是否使用跳转按钮控制播放列表" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "是否让文件选择对话框记住最近访问的文件夹" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "当已经有一个实例在运行时,是否允许创建新窗口" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "要传递给 mpv 的选项" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "mpv 配置文件的路径" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "是否载入 mpv 配置文件" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "mpv 输入配置文件的路径" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "是否载入 mpv 输入配置文件" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "是否启用 MPRIS 支持" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "是否启用基于 GNOME-Setting-Daemon 的媒体键支持" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "是否预先读取非当前播放列表项的元数据" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "窗口宽度" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "窗口高度" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "播放器音量" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "播放列表宽度" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "是否显示控制栏" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "是否显示播放列表" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "最近访问的文件夹 URI" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "MPV 的 GTK+ 前端程序" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "特性:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "拖放播放列表" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "正在载入外部 mpv 配置文件" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "MPRIS2 D-Bus 接口" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "该发布版本包含了以下变更:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "将项目重命名为 Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "这个列表不是完整的。请到 git log 中查看完整的 changelog。" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "在首选项对话框中分离“通用”标签页" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "改善平铺式窗口管理器下的切换显示播放列表功能" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "将 App Menu 的项目移动到主菜单" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "为每个窗口使用分离的 MPRIS DBus 连接" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "添加 MPRIS 属性 LoopStatus 的支持" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "通过 --mpv-options 选项从命令行中设置任意 mpv 参数" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "设置默认的截图目录为 XDG_PICTURES_DIR" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" "改善对 --window-scale、 --autofit、 --autofit-larger 和 --autofit-smaller 的处理" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "增加一个命令行参数来设置 WM_ROLE" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "增加上下文菜单项来移除播放列表里的项目" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "增加上下文菜单项来复制播放列表项目的路径" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "增加选项来让跳转按钮可以切换播放列表项,而不是切换章节" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "让文件选择器可以接受非本地路径" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "增加循环播放单个文件的右键菜单项" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "处理全屏和窗口大小的属性变化事件" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "增加选项以在窗口模式下自动隐藏鼠标指针" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "显示运行中应用的主窗口" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "关闭了 CSD 的主窗口" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "打开了播放列表的主窗口" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "多媒体播放器" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "新建窗口" #: src/celluloid-application.c:421 msgid "Playing" msgstr "正在播放" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "显示发布版本号" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "加入队列" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "创建一个新窗口" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "选项" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "设置窗口规则" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "不要连接到已经运行中的实例" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "暂停" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "播放" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "停止" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "快进" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "快退" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "下一章节" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "上一章节" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "循环播放列表" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "切换全屏" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "错误" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "所有文件" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "媒体文件" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "音频文件" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "视频文件" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "图像文件" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "字幕文件" #: src/celluloid-menu.c:106 msgid "None" msgstr "无" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "未知" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "载入外部(_L)…" #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 msgid "No disc found" msgstr "未找到光盘" #: src/celluloid-menu.c:233 msgid "_File" msgstr "文件(_F)" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "打开...(_O)" #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "打开路径...(_L)" #: src/celluloid-menu.c:236 msgid "Open _Disc…" msgstr "打开光盘...(_D)" #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "保存播放列表(_S)" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "新建窗口(_N)" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "编辑(_E)" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "首选项(_P)" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "视频轨道(_V)" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "音轨(_A)" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "字幕轨道(_u)" #: src/celluloid-menu.c:244 msgid "_View" msgstr "视图(_V)" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "切换控制栏(_T)" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "切换播放列表(_T)" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "全屏(_F)" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "帮助(_H)" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "快捷键(_K)" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "关于 Celluloid(_A)" #: src/celluloid-menu.c:316 msgid "Open _Disc" msgstr "打开光盘(_D)" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "回放被异常终止。原因:%s。" #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "路径:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "取消(_C)" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "打开(_O)" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "应用一个或多个 MPV 选项失败。" #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "复制路径(_A)" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "移除(_R)" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "添加(_A)…" #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "添加路径(_L)" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "随机播放(_S)" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "循环播放文件(_F)" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "循环播放列表(_P)" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "播放列表" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "添加插件" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "Lua 插件" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "JavaScript 插件" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "C 程序插件" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "从 '%s' 拷贝文件到 '%s' 失败。原因:%s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "未找到插件" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "移除" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "您确定移除此脚本吗?该操作无法被撤销。" #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "删除文件 '%s' 失败。原因:%s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "启用客户端装饰" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "启用暗色主题" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "在窗口模式下启用浮动控制" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "在窗口模式下自动隐藏鼠标指针" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "使用跳转按钮控制播放列表" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "记住最后一次打开位置" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "加载 MPV 配置文件" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "MPV 配置文件:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "加载 MPV 输入配置文件" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "MPV 输入配置文件:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "总是打开新窗口" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "预先读取元数据" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "启用 MPRIS 支持" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "启用媒体键支持" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "额外的 MPV 选项:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "用户界面" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "配置文件" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "杂项" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "插件" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "保存(_S)" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "首选项" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "打开文件" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "打开路径" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "添加文件到播放列表" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "添加路径到播放列表" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "显示首选项对话框" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "切换控制栏" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "切换播放列表" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "切换全屏模式" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "离开全屏模式" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "切换 OSD 状态为“普通”或者“播放时间/总时长”" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "在 OSD 上显示文件名" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "在 OSD 上显示进度、已播放时间、总时长" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "向后/向前跳转 5 秒" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "向后/向前精确跳转 1 秒" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "向后/向前跳转 1 分钟" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "向后/向前精确跳转 5 秒" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "查找上一个/下一个字幕" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "跳转到上一帧/下一帧" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "跳转到上一章/下一章的开头" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "减少/增加 10% 播放速度" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "减半/加倍当前的播放速度" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "重置播放速度为正常速度" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "跳转到当前播放列表中的前一项/后一项" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "移除选定的播放列表项" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "保存播放列表" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "设置/清除 A-B 循环点" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "开启或关闭无限循环" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "暂停/播放" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "退出" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "保存当前播放进度并退出" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "循环播放音轨" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "减少/增大音量" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "静音/取消静音" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "将音频延迟调整为 +/- 0.1 秒" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "切换字幕可见性" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "循环播放当前字幕范围" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "将字幕延迟调整为 +/- 0.1 秒" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "切换 SSA/ASS 字幕样式覆盖" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "移动到上一行/下一行字幕" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "切换 VSFilter aspect 兼容模式" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "循环播放视频轨道" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "减小/增加 pan-and-scan 范围" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "截取屏幕截图" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "截取屏幕截图,不包含字幕" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "截取屏幕截图,就如同窗口中显示的一样(包含字幕、OSD、缩放)" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "调整视频大小为其原始大小的一半" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "调整视频大小为其原始大小" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "调整视频大小为其原始大小的两倍" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "调整对比度" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "调整亮度" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "调整伽玛值" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "调整饱和度" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "激活/取消激活去隔行扫描器" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "循环切换宽高比重写" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "用户界面" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "视频" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "音频" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "字幕" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "回放" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "跳转" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "启用或禁用客户端装饰(CSD),需要重启播放器以生效。" #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "添加文件到播放列表" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "打开文件" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "添加路径到播放列表" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "打开路径" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "加载音频轨道..." #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "加载字幕轨道..." #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "保存播放列表" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "MPV 的 GTK 前端程序" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "" "Mingye Wang , 2015, 2016.\n" "Jeff Bai , 2015, 2016.\n" "Sun , 2015, 2016.\n" "Huang Jiayao , 2017, 2018." celluloid-0.18/po/zh_TW.po000066400000000000000000000623141356026115400154400ustar00rootroot00000000000000# Chinese translations for gnome-mpv package # gnome-mpv 套件的正體中文翻譯 # Copyright (C) 2015 THE GNOME-MPV'S COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-mpv package. # sun , 2015. # Mingye Wang , 2015. # Julian , 2019. #zanata # gnome-mpv , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: gnome-mpv 0.6\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 20:48+0700\n" "PO-Revision-Date: 2019-11-02 01:08+0000\n" "Last-Translator: Julian \n" "Language-Team: zh_Hant \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Zanata 4.6.2\n" #: data/io.github.celluloid_player.Celluloid.gschema.xml:11 msgid "" "Whether the settings has already been migrated from the previous version" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:17 msgid "Enable or disable dark theme" msgstr "啟用或禁用暗色主題" #: data/io.github.celluloid_player.Celluloid.gschema.xml:23 msgid "Enable or disable client-side decorations" msgstr "啟用或禁用客戶端裝飾" #: data/io.github.celluloid_player.Celluloid.gschema.xml:29 msgid "Whether or not to use floating controls in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:35 msgid "Whether or not to autohide mouse cursor in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:41 msgid "The minimum cursor speed at which floating controls will be unhidden." msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:47 msgid "Whether or not to use skip buttons for controlling playlist" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:53 msgid "" "Whether or not to make file chooser dialog remember last folder accessed" msgstr "是否讓檔案選擇對話窗記住最近訪問的資料夾" #: data/io.github.celluloid_player.Celluloid.gschema.xml:59 msgid "Whether or not to create new windows when there is already an instance" msgstr "當播放器使用時是否開啟新視窗" #: data/io.github.celluloid_player.Celluloid.gschema.xml:65 #: src/celluloid-application.c:498 msgid "Options to pass to mpv" msgstr "要傳遞給 mpv 的選項" #: data/io.github.celluloid_player.Celluloid.gschema.xml:71 msgid "Path to mpv configuration file" msgstr "mpv 配置檔的路徑" #: data/io.github.celluloid_player.Celluloid.gschema.xml:77 msgid "Load or don't load mpv configuration file" msgstr "是否載入 mpv 配置檔" #: data/io.github.celluloid_player.Celluloid.gschema.xml:83 msgid "Path to mpv input configuration file" msgstr "mpv 輸入配置檔的路徑" #: data/io.github.celluloid_player.Celluloid.gschema.xml:89 msgid "Load or don't load mpv input configuration file" msgstr "是否載入 mpv 輸入配置檔" #: data/io.github.celluloid_player.Celluloid.gschema.xml:95 msgid "Whether or not to enable MPRIS support" msgstr "是否啟用 MPRIS 支援" #: data/io.github.celluloid_player.Celluloid.gschema.xml:101 msgid "" "Whether or not to enable GNOME-Settings-Daemon-based media keys support" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:107 msgid "Whether or not to prefetch metadata for non-current playlist entries" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:113 msgid "" "Whether or not to display an error message when playback of a file ends with" " an error" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:123 msgid "Width of the window" msgstr "視窗寬度" #: data/io.github.celluloid_player.Celluloid.gschema.xml:129 msgid "Height of the window" msgstr "視窗高度" #: data/io.github.celluloid_player.Celluloid.gschema.xml:136 msgid "Volume of player" msgstr "播放器音量" #: data/io.github.celluloid_player.Celluloid.gschema.xml:142 msgid "Width of the playlist" msgstr "播放列表寬度" #: data/io.github.celluloid_player.Celluloid.gschema.xml:148 msgid "Show or not show the controls" msgstr "" #: data/io.github.celluloid_player.Celluloid.gschema.xml:154 msgid "Show or not show the playlist" msgstr "是否顯示播放列表" #: data/io.github.celluloid_player.Celluloid.gschema.xml:160 msgid "URI of the last folder accessed" msgstr "最近訪問的資料夾 URI" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 #: data/io.github.celluloid_player.Celluloid.desktop.in:4 #: src/celluloid-application.c:380 msgid "Celluloid" msgstr "Celluloid" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 msgid "GTK+ frontend for mpv" msgstr "MPV 之 GTK 前端程式" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 msgid "" "Celluloid is a simple media player that can play virtually all video and " "audio formats. It supports playlists and MPRIS2 media player controls. The " "design of Celluloid follows the GNOME Human Interface Guidelines, but can " "also be adapted for other systems that don't use client-side decorations " "(CSD). It is based on the mpv library and GTK." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 msgid "Features:" msgstr "特性:" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 msgid "Drag and drop playlist" msgstr "拖放播放列表" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 msgid "Loading external mpv configuration files" msgstr "正在載入外部 mpv 配置檔" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 msgid "MPRIS2 D-Bus interface" msgstr "MPRIS2 D-Bus 介面" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:33 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:72 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:103 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:131 msgid "This release contains the following changes:" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:37 msgid "Rename project to Celluloid" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:40 msgid "Add Turkish translation by @TeknoMobil" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:43 msgid "Add Esperanto translation by @F3nd0" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:46 msgid "Migrate from opengl-cb to the new render API" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 msgid "Handle numpad keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 msgid "Handle unicode keybindings" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:55 msgid "Forward media key events to mpv" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:58 msgid "" "Add dconf key for controlling cursor speed at which controls are unhidden" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:61 msgid "Add option for suppressing playback errors" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:65 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:124 #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:152 msgid "This listing is incomplete. See git log for complete changelog." msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:76 msgid "Split up the General tab in the preferences dialog" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:79 msgid "Improve behavior when toggling playlist under tiling window managers" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:82 msgid "Move app menu items to primary menu" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:85 msgid "Use separate MPRIS DBus connection for each window" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:88 msgid "Add support for MPRIS property LoopStatus" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:91 msgid "" "Add option --mpv-options for setting arbitrary mpv options from the command-" "line" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:107 msgid "Set default screenshot directory to XDG_PICTURES_DIR" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:110 msgid "" "Improve handling of --window-scale, --autofit, --autofit-larger, and " "--autofit-smaller" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:114 msgid "Add command line option for setting WM_ROLE" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:117 msgid "Add context menu item for removing playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:120 msgid "Add context menu item for copying location of playlist items" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:135 msgid "" "Add option to make skip buttons change playlist entries rather than chapters" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 msgid "Make the file chooser accept non-local locations" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 msgid "Add right-click menu entry for looping a single file" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 msgid "Handle property change events for fullscreen and window-scale" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:148 msgid "Add option to autohide mouse cursor in windowed mode" msgstr "" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:162 msgid "The main window showing the application in action" msgstr "顯示執行中套用的主視窗" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 msgid "The main window with CSD disabled" msgstr "關閉了 CSD 的主視窗" #: data/io.github.celluloid_player.Celluloid.appdata.xml.in:170 msgid "The main window with playlist open" msgstr "打開了播放列表的主視窗" #: data/io.github.celluloid_player.Celluloid.desktop.in:5 msgid "Multimedia Player" msgstr "多媒體播放器" #: data/io.github.celluloid_player.Celluloid.desktop.in:6 msgid "Play movies and videos" msgstr "播放電影和影片" #. Translators: This is an icon name, don't translate! #: data/io.github.celluloid_player.Celluloid.desktop.in:9 msgid "io.github.celluloid_player.Celluloid" msgstr "" #. Translators: Search terms to find this application. Don't translate the #. semicolons! The list MUST also end with a semicolon! #: data/io.github.celluloid_player.Celluloid.desktop.in:17 msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" msgstr "" #: data/io.github.celluloid_player.Celluloid.desktop.in:23 msgid "New Window" msgstr "新視窗" #: src/celluloid-application.c:421 msgid "Playing" msgstr "正在播放" #: src/celluloid-application.c:474 msgid "Show release version" msgstr "" #: src/celluloid-application.c:482 msgid "Enqueue" msgstr "" #: src/celluloid-application.c:490 msgid "Create a new window" msgstr "" #: src/celluloid-application.c:499 msgid "OPTIONS" msgstr "選項" #: src/celluloid-application.c:506 msgid "Set the window role" msgstr "" #: src/celluloid-application.c:514 msgid "Don't connect to an already-running instance" msgstr "" #: src/celluloid-control-box.c:341 msgid "Pause" msgstr "暫停" #: src/celluloid-control-box.c:341 src/celluloid-control-box.c:520 msgid "Play" msgstr "播放" #: src/celluloid-control-box.c:523 msgid "Stop" msgstr "停止" #: src/celluloid-control-box.c:526 msgid "Forward" msgstr "快進" #: src/celluloid-control-box.c:529 msgid "Rewind" msgstr "倒回" #: src/celluloid-control-box.c:532 msgid "Next Chapter" msgstr "下一章節" #: src/celluloid-control-box.c:535 msgid "Previous Chapter" msgstr "前一章節" #: src/celluloid-control-box.c:538 msgid "Loop Playlist" msgstr "" #: src/celluloid-control-box.c:541 src/celluloid-header-bar.c:91 msgid "Toggle Fullscreen" msgstr "啟用全螢幕" #: src/celluloid-controller.c:964 src/celluloid-view.c:1338 msgid "Error" msgstr "錯誤" #: src/celluloid-file-chooser.c:134 src/celluloid-plugins-manager.c:170 msgid "All Files" msgstr "所有檔案" #: src/celluloid-file-chooser.c:142 msgid "Media Files" msgstr "多媒體檔" #: src/celluloid-file-chooser.c:153 msgid "Audio Files" msgstr "音訊檔" #: src/celluloid-file-chooser.c:161 msgid "Video Files" msgstr "影片檔" #: src/celluloid-file-chooser.c:169 msgid "Image Files" msgstr "圖片檔" #: src/celluloid-file-chooser.c:179 msgid "Subtitle Files" msgstr "字幕檔" #: src/celluloid-menu.c:106 msgid "None" msgstr "無" #. For simplicity, also dup the default string used when the #. * track has no title. #: src/celluloid-menu.c:121 msgid "Unknown" msgstr "未知" #: src/celluloid-menu.c:154 msgid "_Load External…" msgstr "" #. Disable the menu item by setting the action to something #. * invalid. #: src/celluloid-menu.c:205 msgid "No disc found" msgstr "" #: src/celluloid-menu.c:233 msgid "_File" msgstr "檔案(_F)" #: src/celluloid-menu.c:234 src/celluloid-menu.c:314 msgid "_Open…" msgstr "開啟(_O)…" #: src/celluloid-menu.c:235 src/celluloid-menu.c:315 msgid "Open _Location…" msgstr "開啟位置(_L)…" #: src/celluloid-menu.c:236 msgid "Open _Disc…" msgstr "" #: src/celluloid-menu.c:237 src/celluloid-menu.c:286 msgid "_Save Playlist" msgstr "儲存播放列表(_S)" #: src/celluloid-menu.c:238 src/celluloid-menu.c:318 msgid "_New Window" msgstr "新增視窗(_N)" #: src/celluloid-menu.c:239 msgid "_Edit" msgstr "編輯(_E)" #: src/celluloid-menu.c:240 src/celluloid-menu.c:292 msgid "_Preferences" msgstr "偏好設定(_P)" #: src/celluloid-menu.c:241 src/celluloid-menu.c:288 msgid "_Video Track" msgstr "視訊軌道(_V)" #: src/celluloid-menu.c:242 src/celluloid-menu.c:289 msgid "_Audio Track" msgstr "音軌(_A)" #: src/celluloid-menu.c:243 src/celluloid-menu.c:290 msgid "S_ubtitle Track" msgstr "字幕軌道(_U)" #: src/celluloid-menu.c:244 msgid "_View" msgstr "檢視(_V)" #: src/celluloid-menu.c:245 src/celluloid-menu.c:283 msgid "_Toggle Controls" msgstr "" #: src/celluloid-menu.c:246 src/celluloid-menu.c:285 msgid "_Toggle Playlist" msgstr "切換播放列表(_T)" #: src/celluloid-menu.c:247 msgid "_Fullscreen" msgstr "全屏(_F)" #: src/celluloid-menu.c:248 msgid "_Help" msgstr "幫助(_F)" #: src/celluloid-menu.c:249 src/celluloid-menu.c:293 msgid "_Keyboard Shortcuts" msgstr "快捷鍵(_K)" #: src/celluloid-menu.c:250 src/celluloid-menu.c:294 msgid "_About Celluloid" msgstr "關於 Celluloid(_A)" #: src/celluloid-menu.c:316 msgid "Open _Disc" msgstr "開啟檔案(_D)" #: src/celluloid-mpv.c:240 #, c-format msgid "Playback was terminated abnormally. Reason: %s." msgstr "回放被異常終止。原因:%s。" #: src/celluloid-open-location-dialog.c:129 msgid "Location:" msgstr "位置:" #: src/celluloid-open-location-dialog.c:133 #: src/celluloid-preferences-dialog.c:396 msgid "_Cancel" msgstr "取消(_C)" #: src/celluloid-open-location-dialog.c:135 msgid "_Open" msgstr "開啟(_O)" #: src/celluloid-player.c:552 msgid "Failed to apply one or more MPV options." msgstr "套用一個或多個 MPV 選項失敗。" #: src/celluloid-playlist-widget.c:551 msgid "_Copy Location" msgstr "複製位置(_C)" #: src/celluloid-playlist-widget.c:552 msgid "_Remove" msgstr "移除(_R)" #: src/celluloid-playlist-widget.c:554 msgid "_Add…" msgstr "新增(_A)…" #: src/celluloid-playlist-widget.c:555 msgid "Add _Location…" msgstr "" #: src/celluloid-playlist-widget.c:556 msgid "_Shuffle" msgstr "" #: src/celluloid-playlist-widget.c:557 msgid "Loop _File" msgstr "" #: src/celluloid-playlist-widget.c:558 msgid "Loop _Playlist" msgstr "" #: src/celluloid-playlist-widget.c:688 msgid "Playlist" msgstr "播放列表" #: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 msgid "Add Plugin" msgstr "加入外掛" #: src/celluloid-plugins-manager.c:175 msgid "Lua Plugins" msgstr "Lua 外掛" #: src/celluloid-plugins-manager.c:181 msgid "JavaScript Plugins" msgstr "JavaScript 外掛" #: src/celluloid-plugins-manager.c:186 msgid "C Plugins" msgstr "C 外掛" #: src/celluloid-plugins-manager.c:334 #, c-format msgid "Failed to copy file from '%s' to '%s'. Reason: %s" msgstr "從 '%s' 複製檔案到 '%s' 失敗。原因:%s" #: src/celluloid-plugins-manager.c:385 msgid "No plugins found" msgstr "沒找到外掛" #: src/celluloid-plugins-manager-item.c:79 msgid "Remove" msgstr "移除" #: src/celluloid-plugins-manager-item.c:178 msgid "" "Are you sure you want to remove this script? This action cannot be undone." msgstr "確定要移除此外掛?這動作將無法復原。" #: src/celluloid-plugins-manager-item.c:199 #, c-format msgid "Failed to delete file '%s'. Reason: %s" msgstr "移除 '%s' 失敗。原因:%s" #: src/celluloid-preferences-dialog.c:302 msgid "Enable client-side decorations" msgstr "啟用客戶端裝飾" #: src/celluloid-preferences-dialog.c:305 msgid "Enable dark theme" msgstr "啟用暗色主題" #: src/celluloid-preferences-dialog.c:308 msgid "Use floating controls in windowed mode" msgstr "" #: src/celluloid-preferences-dialog.c:311 msgid "Autohide mouse cursor in windowed mode" msgstr "視窗模式下自動隱藏游標" #: src/celluloid-preferences-dialog.c:314 msgid "Use skip buttons for controlling playlist" msgstr "" #: src/celluloid-preferences-dialog.c:317 msgid "Remember last file's location" msgstr "記住最後一次開啟位置" #: src/celluloid-preferences-dialog.c:322 msgid "Load MPV configuration file" msgstr "載入 MPV 配置檔" #: src/celluloid-preferences-dialog.c:325 msgid "MPV configuration file:" msgstr "MPV 配置檔:" #: src/celluloid-preferences-dialog.c:328 msgid "Load MPV input configuration file" msgstr "載入 MPV 輸入配置檔" #: src/celluloid-preferences-dialog.c:331 msgid "MPV input configuration file:" msgstr "MPV 輸入配置檔:" #: src/celluloid-preferences-dialog.c:336 msgid "Always open new window" msgstr "總是開啟新視窗" #: src/celluloid-preferences-dialog.c:339 msgid "Ignore playback errors" msgstr "無視播放錯誤訊息" #: src/celluloid-preferences-dialog.c:342 msgid "Prefetch metadata" msgstr "" #: src/celluloid-preferences-dialog.c:345 msgid "Enable MPRIS support" msgstr "啟用 MPRIS 支援" #: src/celluloid-preferences-dialog.c:348 msgid "Enable media keys support" msgstr "啟用播放快捷鍵支援" #: src/celluloid-preferences-dialog.c:351 msgid "Extra MPV options:" msgstr "額外的 MPV 選項:" #: src/celluloid-preferences-dialog.c:384 msgid "Interface" msgstr "界面" #: src/celluloid-preferences-dialog.c:387 msgid "Config Files" msgstr "設定檔" #: src/celluloid-preferences-dialog.c:390 msgid "Miscellaneous" msgstr "" #: src/celluloid-preferences-dialog.c:393 msgid "Plugins" msgstr "外掛" #: src/celluloid-preferences-dialog.c:398 msgid "_Save" msgstr "儲存(_S)" #: src/celluloid-preferences-dialog.c:416 msgid "Preferences" msgstr "偏好設定" #: src/celluloid-shortcuts-window.c:57 msgid "Open file" msgstr "開啟檔案" #: src/celluloid-shortcuts-window.c:58 msgid "Open location" msgstr "開啟位置" #: src/celluloid-shortcuts-window.c:59 msgid "Add file to playlist" msgstr "將檔案加入至播放清單" #: src/celluloid-shortcuts-window.c:60 msgid "Add location to playlist" msgstr "將位置加入至播放清單" #: src/celluloid-shortcuts-window.c:61 msgid "Show preferences dialog" msgstr "" #: src/celluloid-shortcuts-window.c:62 msgid "Toggle controls" msgstr "" #: src/celluloid-shortcuts-window.c:63 msgid "Toggle playlist" msgstr "" #: src/celluloid-shortcuts-window.c:64 msgid "Toggle fullscreen mode" msgstr "開啟全螢幕" #: src/celluloid-shortcuts-window.c:65 msgid "Leave fullscreen mode" msgstr "離開全螢幕" #: src/celluloid-shortcuts-window.c:66 msgid "Toggle OSD states between normal and playback time/duration" msgstr "" #: src/celluloid-shortcuts-window.c:67 msgid "Show filename on the OSD" msgstr "" #: src/celluloid-shortcuts-window.c:68 msgid "Show progress, elapsed time, and duration on the OSD" msgstr "" #: src/celluloid-shortcuts-window.c:71 msgid "Seek backward/forward 5 seconds" msgstr "" #: src/celluloid-shortcuts-window.c:72 msgid "Exact seek backward/forward 1 second" msgstr "" #: src/celluloid-shortcuts-window.c:73 msgid "Seek backward/forward 1 minute" msgstr "" #: src/celluloid-shortcuts-window.c:74 msgid "Exact seek backward/forward 5 seconds" msgstr "" #: src/celluloid-shortcuts-window.c:75 msgid "Seek to previous/next subtitle" msgstr "" #: src/celluloid-shortcuts-window.c:76 msgid "Step backward/forward a single frame" msgstr "" #: src/celluloid-shortcuts-window.c:77 msgid "Seek to the beginning of the previous/next chapter" msgstr "" #: src/celluloid-shortcuts-window.c:80 msgid "Decrease/increase playback speed by 10%" msgstr "" #: src/celluloid-shortcuts-window.c:81 msgid "Halve/double current playback speed" msgstr "" #: src/celluloid-shortcuts-window.c:82 msgid "Reset playback speed to normal" msgstr "" #: src/celluloid-shortcuts-window.c:83 msgid "Go backward/forward in the playlist" msgstr "" #: src/celluloid-shortcuts-window.c:84 msgid "Remove selected playlist item" msgstr "" #: src/celluloid-shortcuts-window.c:85 msgid "Save playlist" msgstr "儲存播放清單" #: src/celluloid-shortcuts-window.c:86 msgid "Set/clear A-B loop points" msgstr "" #: src/celluloid-shortcuts-window.c:87 msgid "Toggle infinite looping" msgstr "" #: src/celluloid-shortcuts-window.c:88 msgid "Pause or unpause" msgstr "是否暫停" #: src/celluloid-shortcuts-window.c:89 msgid "Quit" msgstr "離開" #: src/celluloid-shortcuts-window.c:90 msgid "Save current playback position and quit" msgstr "" #: src/celluloid-shortcuts-window.c:93 msgid "Cycle through audio tracks" msgstr "" #: src/celluloid-shortcuts-window.c:94 src/celluloid-shortcuts-window.c:95 msgid "Decrease/increase volume" msgstr "增減音量" #: src/celluloid-shortcuts-window.c:96 msgid "Mute or unmute" msgstr "是否靜音" #: src/celluloid-shortcuts-window.c:97 msgid "Adjust audio delay by +/- 0.1 seconds" msgstr "" #: src/celluloid-shortcuts-window.c:100 msgid "Toggle subtitle visibility" msgstr "" #: src/celluloid-shortcuts-window.c:101 msgid "Cycle through available subtitles" msgstr "" #: src/celluloid-shortcuts-window.c:102 msgid "Adjust subtitle delay by +/- 0.1 seconds" msgstr "" #: src/celluloid-shortcuts-window.c:103 msgid "Toggle SSA/ASS subtitles style override" msgstr "" #: src/celluloid-shortcuts-window.c:104 msgid "Move subtitles up/down" msgstr "字幕上下移動" #: src/celluloid-shortcuts-window.c:105 msgid "Toggle VSFilter aspect compatibility mode" msgstr "" #: src/celluloid-shortcuts-window.c:108 msgid "Cycle through video tracks" msgstr "" #: src/celluloid-shortcuts-window.c:109 msgid "Decrease/increase pan-and-scan range" msgstr "" #: src/celluloid-shortcuts-window.c:110 msgid "Take a screenshot" msgstr "拍攝螢幕擷圖" #: src/celluloid-shortcuts-window.c:111 msgid "Take a screenshot, without subtitles" msgstr "" #: src/celluloid-shortcuts-window.c:112 msgid "Take a screenshot, as the window shows it" msgstr "" #: src/celluloid-shortcuts-window.c:113 msgid "Resize video to half its original size" msgstr "將影片縮至原來一半的大小" #: src/celluloid-shortcuts-window.c:114 msgid "Resize video to its original size" msgstr "將影片縮放至原始大小" #: src/celluloid-shortcuts-window.c:115 msgid "Resize video to double its original size" msgstr "將影片放大至原來的兩倍" #: src/celluloid-shortcuts-window.c:116 msgid "Adjust contrast" msgstr "調整對比" #: src/celluloid-shortcuts-window.c:117 msgid "Adjust brightness" msgstr "調整亮度" #: src/celluloid-shortcuts-window.c:118 msgid "Adjust gamma" msgstr "調整 gamma 值" #: src/celluloid-shortcuts-window.c:119 msgid "Adjust saturation" msgstr "調整飽和度" #: src/celluloid-shortcuts-window.c:120 msgid "Activate or deactivate deinterlacer" msgstr "是否啟用解調變" #: src/celluloid-shortcuts-window.c:121 msgid "Cycle aspect ratio override" msgstr "" #: src/celluloid-shortcuts-window.c:124 msgid "User Interface" msgstr "使用者界面" #: src/celluloid-shortcuts-window.c:125 msgid "Video" msgstr "影片" #: src/celluloid-shortcuts-window.c:126 msgid "Audio" msgstr "音訊" #: src/celluloid-shortcuts-window.c:127 msgid "Subtitle" msgstr "字幕" #: src/celluloid-shortcuts-window.c:128 msgid "Playback" msgstr "" #: src/celluloid-shortcuts-window.c:129 msgid "Seeking" msgstr "" #: src/celluloid-view.c:726 msgid "" "Enabling or disabling client-side decorations requires restarting to take " "effect." msgstr "" #: src/celluloid-view.c:1213 msgid "Add File to Playlist" msgstr "新增檔案到播放列表" #: src/celluloid-view.c:1214 msgid "Open File" msgstr "開啟檔案" #: src/celluloid-view.c:1243 msgid "Add Location to Playlist" msgstr "新增位置至播放清單" #: src/celluloid-view.c:1244 msgid "Open Location" msgstr "開啟位置" #: src/celluloid-view.c:1266 msgid "Load Audio Track…" msgstr "載入音訊檔" #: src/celluloid-view.c:1286 msgid "Load Subtitle Track…" msgstr "載入字幕檔" #: src/celluloid-view.c:1312 msgid "Save Playlist" msgstr "儲存播放列表" #: src/celluloid-view.c:1378 msgid "A GTK frontend for MPV" msgstr "MPV 的 GTK 前端程式" #: src/celluloid-view.c:1388 msgid "translator-credits" msgstr "" "Mingye Wang\n" "Sun" celluloid-0.18/src/000077500000000000000000000000001356026115400142105ustar00rootroot00000000000000celluloid-0.18/src/Makefile.am000066400000000000000000000070161356026115400162500ustar00rootroot00000000000000AUTOMAKE_OPTIONS = foreign bin_PROGRAMS = celluloid mpris_generated = mpris/celluloid-mpris-gdbus.c mpris/celluloid-mpris-gdbus.h mpris_files = mpris/celluloid-mpris.c mpris/celluloid-mpris.h \ mpris/celluloid-mpris-module.c mpris/celluloid-mpris-module.h \ mpris/celluloid-mpris-base.c mpris/celluloid-mpris-base.h \ mpris/celluloid-mpris-player.c mpris/celluloid-mpris-player.h \ mpris/celluloid-mpris-track-list.c mpris/celluloid-mpris-track-list.h \ $(mpris_generated) $(mpris_generated): $(top_srcdir)/data/celluloid-mpris-gdbus.xml $(AM_V_GEN) \ $(GDBUS_CODEGEN) --c-namespace celluloid_mpris --generate-c-code mpris/celluloid-mpris-gdbus $< && \ $(SED) -i '1i#pragma GCC diagnostic ignored \"-Wconversion\"' mpris/celluloid-mpris-gdbus.c marshal_generated = celluloid-marshal.c celluloid-marshal.h marshal_files = $(marshal_generated) celluloid-marshal.h: $(top_srcdir)/data/celluloid-marshal.lst $(AM_V_GEN) \ $(GLIB_GENMARSHAL) --prefix="g_cclosure_gen_marshal" --header $< > $@ celluloid-marshal.c: $(top_srcdir)/data/celluloid-marshal.lst $(AM_V_GEN) \ $(GLIB_GENMARSHAL) --prefix="g_cclosure_gen_marshal" --body $< > $@ && \ $(SED) -i '1i#pragma GCC diagnostic ignored \"-Wmissing-prototypes\"' $@ authors_generated = celluloid-authors.h authors_files = $(authors_generated) celluloid-authors.h: $(top_srcdir)/AUTHORS $(AM_V_GEN) \ $(AWK) 'BEGIN{print "#ifndef AUTHORS_H\n" \ "#define AUTHORS_H\n\n" \ "#define AUTHORS {\\"} \ /^[^#].+/{print "\"" $$0 "\",\\"} \ END{print "NULL}\n\n#endif"}' $< > $@ media_key_files = media-keys/celluloid-media-keys.c media-keys/celluloid-media-keys.h BUILT_SOURCES = $(mpris_generated) $(marshal_generated) $(authors_generated) celluloid_SOURCES = celluloid-main.c celluloid-def.h \ celluloid-application.c celluloid-application.h \ celluloid-common.c celluloid-common.h \ celluloid-controller.c celluloid-controller.h \ celluloid-controller-actions.c celluloid-controller-actions.h \ celluloid-controller-private.h \ celluloid-controller-input.c celluloid-controller-input.h \ celluloid-control-box.c celluloid-control-box.h \ celluloid-file-chooser.c celluloid-file-chooser.h \ celluloid-header-bar.c celluloid-header-bar.h \ celluloid-main-window.c celluloid-main-window.h celluloid-main-window-private.h \ celluloid-menu.c celluloid-menu.h \ celluloid-metadata-cache.c celluloid-metadata-cache.h \ celluloid-model.c celluloid-model.h \ celluloid-mpv.c celluloid-mpv.h \ celluloid-mpv-private.h \ celluloid-open-location-dialog.c celluloid-open-location-dialog.h \ celluloid-player.c celluloid-player.h celluloid-player-private.h \ celluloid-player-options.c celluloid-player-options.h \ celluloid-playlist-widget.c celluloid-playlist-widget.h \ celluloid-plugins-manager.c celluloid-plugins-manager.h \ celluloid-plugins-manager-item.c celluloid-plugins-manager-item.h \ celluloid-preferences-dialog.c celluloid-preferences-dialog.h \ celluloid-seek-bar.c celluloid-seek-bar.h \ celluloid-shortcuts-window.c celluloid-shortcuts-window.h \ celluloid-video-area.c celluloid-video-area.h \ celluloid-view.c celluloid-view.h \ celluloid-mpv-wrapper.c celluloid-mpv-wrapper.h \ $(mpris_files) $(marshal_files) $(media_key_files) \ $(authors_files) celluloid_CFLAGS = $(DEPS_CFLAGS) \ -DG_SETTINGS_ENABLE_BACKEND \ -DPACKAGE_LOCALEDIR=\""$(localedir)"\" \ -Impris celluloid_LDADD = $(DEPS_LIBS) CLEANFILES = $(mpris_generated) $(marshal_generated) $(authors_generated) EXTRA_DIST = meson.build generate-authors.py celluloid-0.18/src/celluloid-application.c000066400000000000000000000315011356026115400206310ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include #include "celluloid-application.h" #include "celluloid-controller.h" #include "celluloid-mpv-wrapper.h" #include "celluloid-common.h" #include "celluloid-def.h" struct _CelluloidApplication { GtkApplication parent; GSList *controllers; gboolean enqueue; gboolean new_window; gchar *mpv_options; gchar *role; guint inhibit_cookie; }; struct _CelluloidApplicationClass { GtkApplicationClass parent_class; }; static void migrate_config(void); static void initialize_gui(CelluloidApplication *app); static void create_dirs(void); static gboolean shutdown_signal_handler(gpointer data); static void new_window_handler(GSimpleAction *simple, GVariant *parameter, gpointer data); static void activate_handler(GApplication *gapp, gpointer data); static void open_handler( GApplication *gapp, GFile **files, gint n_files, gchar *hint, gpointer data ); static gint options_handler(GApplication *gapp, GVariantDict *options, gpointer data); static gint command_line_handler( GApplication *gapp, GApplicationCommandLine *cli, gpointer data ); static void startup_handler(GApplication *gapp, gpointer data); static void idle_handler(GObject *object, GParamSpec *pspec, gpointer data); static void shutdown_handler(CelluloidController *controller, gpointer data); static void celluloid_application_class_init(CelluloidApplicationClass *klass); static void celluloid_application_init(CelluloidApplication *app); G_DEFINE_TYPE(CelluloidApplication, celluloid_application, GTK_TYPE_APPLICATION) static void migrate_config() { const gchar *keys[] = { "dark-theme-enable", "csd-enable", "always-use-floating-controls", "always-autohide-cursor", "use-skip-buttons-for-playlist", "last-folder-enable", "always-open-new-window", "mpv-options", "mpv-config-file", "mpv-config-enable", "mpv-input-config-file", "mpv-input-config-enable", "mpris-enable", "media-keys-enable", "prefetch-metadata", NULL }; GSettings *old_settings = g_settings_new("io.github.GnomeMpv"); GSettings *new_settings = g_settings_new(CONFIG_ROOT); if(!g_settings_get_boolean(new_settings, "settings-migrated")) { g_settings_set_boolean(new_settings, "settings-migrated", TRUE); for(gint i = 0; keys[i]; i++) { GVariant *buf = g_settings_get_user_value (old_settings, keys[i]); if(buf) { g_settings_set_value (new_settings, keys[i], buf); g_variant_unref(buf); } } } g_object_unref(old_settings); g_object_unref(new_settings); } static void initialize_gui(CelluloidApplication *app) { CelluloidController *controller; CelluloidView *view; CelluloidMainWindow *window; GSettings *settings; migrate_config(); controller = celluloid_controller_new(app); view = celluloid_controller_get_view(controller); window = celluloid_view_get_main_window(view); settings = g_settings_new(CONFIG_ROOT); app->controllers = g_slist_prepend(app->controllers, controller); if(app->role) { gtk_window_set_role(GTK_WINDOW(window), app->role); } g_unix_signal_add(SIGHUP, shutdown_signal_handler, app); g_unix_signal_add(SIGINT, shutdown_signal_handler, app); g_unix_signal_add(SIGTERM, shutdown_signal_handler, app); g_signal_connect( controller, "notify::idle", G_CALLBACK(idle_handler), app ); g_signal_connect( controller, "shutdown", G_CALLBACK(shutdown_handler), app ); g_settings_bind( settings, "use-skip-buttons-for-playlist", controller, "use-skip-buttons-for-playlist", G_SETTINGS_BIND_GET ); g_settings_bind( settings, "always-use-floating-controls", celluloid_view_get_main_window(view), "always-use-floating-controls", G_SETTINGS_BIND_GET ); g_settings_bind( settings, "dark-theme-enable", gtk_settings_get_default(), "gtk-application-prefer-dark-theme", G_SETTINGS_BIND_GET ); g_object_unref(settings); } static void create_dirs() { gchar *config_dir = get_config_dir_path(); gchar *scripts_dir = get_scripts_dir_path(); gchar *watch_dir = get_watch_dir_path(); g_mkdir_with_parents(config_dir, 0755); g_mkdir_with_parents(scripts_dir, 0755); g_mkdir_with_parents(watch_dir, 0755); g_free(config_dir); g_free(scripts_dir); g_free(watch_dir); } static gboolean shutdown_signal_handler(gpointer data) { g_info("Shutdown signal received. Shutting down..."); celluloid_application_quit(data); return FALSE; } static void new_window_handler(GSimpleAction *simple, GVariant *parameter, gpointer data) { initialize_gui(data); } static void activate_handler(GApplication *gapp, gpointer data) { CelluloidApplication *app = data; if(!app->controllers) { initialize_gui(app); } } static void open_handler( GApplication *gapp, GFile **files, gint n_files, gchar *hint, gpointer data ) { CelluloidApplication *app = data; GSettings *settings = g_settings_new(CONFIG_ROOT); /* Only activate new-window if always-open-new-window is set. It is not * necessary to handle --new-window here since options_handler() would * have activated new-window already if it were set. */ if(g_settings_get_boolean(settings, "always-open-new-window")) { activate_action_string(G_ACTION_MAP(gapp), "new-window"); } g_application_activate(gapp); for(gint i = 0; i < n_files; i++) { GtkApplication *gtkapp = GTK_APPLICATION(gapp); GtkWindow *window = gtk_application_get_active_window(gtkapp); GActionMap *map = G_ACTION_MAP(window); gchar *uri = g_file_get_uri(((GFile **)files)[i]); gboolean append = i != 0 || app->enqueue; GVariant *param = g_variant_new("(sb)", uri, append); GAction *action = g_action_map_lookup_action(map, "open"); g_action_activate(action, param); g_free(uri); } g_object_unref(settings); } static gint options_handler(GApplication *gapp, GVariantDict *options, gpointer data) { gboolean version = FALSE; g_variant_dict_lookup(options, "version", "b", &version); if(version) { g_printf("Celluloid " VERSION "\n"); } else { gboolean no_existing_session = FALSE; g_variant_dict_lookup( options, "no-existing-session", "b", &no_existing_session ); if(no_existing_session) { GApplicationFlags flags = g_application_get_flags(gapp); g_info("Single instance negotiation is disabled"); g_application_set_flags (gapp, flags|G_APPLICATION_NON_UNIQUE); } } return version?0:-1; } static gint command_line_handler( GApplication *gapp, GApplicationCommandLine *cli, gpointer data ) { CelluloidApplication *app = data; gint argc = 1; gchar **argv = g_application_command_line_get_arguments(cli, &argc); GVariantDict *options = g_application_command_line_get_options_dict(cli); GSettings *settings = g_settings_new(CONFIG_ROOT); gboolean always_open_new_window = FALSE; const gint n_files = argc-1; GFile *files[n_files]; app->enqueue = FALSE; app->new_window = FALSE; always_open_new_window = g_settings_get_boolean (settings, "always-open-new-window"); g_clear_pointer(&app->mpv_options, g_free); g_clear_pointer(&app->role, g_free); g_variant_dict_lookup(options, "enqueue", "b", &app->enqueue); g_variant_dict_lookup(options, "new-window", "b", &app->new_window); g_variant_dict_lookup(options, "mpv-options", "s", &app->mpv_options); g_variant_dict_lookup(options, "role", "s", &app->role); for(gint i = 0; i < n_files; i++) { files[i] = g_application_command_line_create_file_for_arg (cli, argv[i+1]); } /* Only activate the new-window action or emit the activate signal if * there are no files to be opened. If there are files, open_handler() * will activate the action by itself. This is necessary because when * opening files from file managers, files to be opened may be sent in * the form of DBus message, bypassing this function entirely. */ if(app->new_window || (n_files == 0 && always_open_new_window)) { activate_action_string(G_ACTION_MAP(gapp), "new-window"); } else if(n_files == 0 && !app->controllers) { g_application_activate(gapp); } if(n_files > 0) { g_application_open (gapp, files, n_files, app->enqueue?"enqueue":""); } for(gint i = 0; i < n_files; i++) { g_object_unref(files[i]); } gdk_notify_startup_complete(); g_object_unref(settings); g_strfreev(argv); return 0; } static void startup_handler(GApplication *gapp, gpointer data) { g_set_application_name(_("Celluloid")); gtk_window_set_default_icon_name(ICON_NAME); bindtextdomain(GETTEXT_PACKAGE, PACKAGE_LOCALEDIR); bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); create_dirs(); g_info("Starting Celluloid " VERSION); } static void idle_handler(GObject *object, GParamSpec *pspec, gpointer data) { CelluloidApplication *app = data; CelluloidController *controller = NULL; gboolean idle = TRUE; for( GSList *iter = app->controllers; iter && idle; iter = g_slist_next(iter) ) { gboolean current = TRUE; g_object_get(iter->data, "idle", ¤t, NULL); idle &= current; controller = iter->data; } if(!idle && app->inhibit_cookie == 0) { CelluloidView *view = celluloid_controller_get_view(controller); CelluloidMainWindow *window = celluloid_view_get_main_window(view); app->inhibit_cookie = gtk_application_inhibit ( GTK_APPLICATION(app), GTK_WINDOW(window), GTK_APPLICATION_INHIBIT_IDLE, _("Playing") ); } else if(idle && app->inhibit_cookie != 0) { gtk_application_uninhibit (GTK_APPLICATION(app), app->inhibit_cookie); app->inhibit_cookie = 0; } } static void shutdown_handler(CelluloidController *controller, gpointer data) { CelluloidApplication *app = data; app->controllers = g_slist_remove(app->controllers, controller); g_object_unref(controller); g_free(app->mpv_options); g_free(app->role); if(!app->controllers) { celluloid_application_quit(data); } } static void celluloid_application_class_init(CelluloidApplicationClass *klass) { } static void celluloid_application_init(CelluloidApplication *app) { GSimpleAction *new_window = g_simple_action_new("new-window", NULL); app->controllers = NULL; app->enqueue = FALSE; app->new_window = FALSE; app->mpv_options = NULL; app->role = NULL; app->inhibit_cookie = 0; g_set_prgname(APP_ID); g_action_map_add_action(G_ACTION_MAP(app), G_ACTION(new_window)); g_application_add_main_option ( G_APPLICATION(app), "version", '\0', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, _("Show release version"), NULL ); g_application_add_main_option ( G_APPLICATION(app), "enqueue", '\0', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, _("Enqueue"), NULL ); g_application_add_main_option ( G_APPLICATION(app), "new-window", '\0', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, _("Create a new window"), NULL ); g_application_add_main_option ( G_APPLICATION(app), "mpv-options", '\0', G_OPTION_FLAG_NONE, G_OPTION_ARG_STRING, _("Options to pass to mpv"), _("OPTIONS") ); g_application_add_main_option ( G_APPLICATION(app), "role", '\0', G_OPTION_FLAG_NONE, G_OPTION_ARG_STRING, _("Set the window role"), NULL ); g_application_add_main_option ( G_APPLICATION(app), "no-existing-session", '\0', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, _("Don't connect to an already-running instance"), NULL ); g_signal_connect (new_window, "activate", G_CALLBACK(new_window_handler), app); g_signal_connect (app, "handle-local-options", G_CALLBACK(options_handler), app); g_signal_connect (app, "command-line", G_CALLBACK(command_line_handler), app); g_signal_connect (app, "startup", G_CALLBACK(startup_handler), app); g_signal_connect (app, "activate", G_CALLBACK(activate_handler), app); g_signal_connect (app, "open", G_CALLBACK(open_handler), app); } CelluloidApplication * celluloid_application_new(gchar *id, GApplicationFlags flags) { const GType type = celluloid_application_get_type(); return CELLULOID_APPLICATION(g_object_new( type, "application-id", id, "flags", flags, NULL )); } void celluloid_application_quit(CelluloidApplication *app) { g_application_quit(G_APPLICATION(app)); } const gchar * celluloid_application_get_mpv_options(CelluloidApplication *app) { return app->mpv_options; } celluloid-0.18/src/celluloid-application.h000066400000000000000000000024171356026115400206420ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef APPLICATION_H #define APPLICATION_H #include #include "celluloid-main-window.h" #include "celluloid-mpv.h" G_BEGIN_DECLS #define CELLULOID_TYPE_APPLICATION (celluloid_application_get_type()) G_DECLARE_FINAL_TYPE(CelluloidApplication, celluloid_application, CELLULOID, APPLICATION, GtkApplication) CelluloidApplication * celluloid_application_new(gchar *id, GApplicationFlags flags); void celluloid_application_quit(CelluloidApplication *app); const gchar * celluloid_application_get_mpv_options(CelluloidApplication *app); G_END_DECLS #endif celluloid-0.18/src/celluloid-common.c000066400000000000000000000125631356026115400176250ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include #include #include #include "celluloid-common.h" #include "celluloid-def.h" #include "celluloid-mpv.h" #include "celluloid-mpv-wrapper.h" #include "celluloid-main-window.h" #include "celluloid-control-box.h" CelluloidPlaylistEntry * celluloid_playlist_entry_new(const gchar *filename, const gchar *title) { CelluloidPlaylistEntry *entry = g_malloc(sizeof(CelluloidPlaylistEntry)); entry->filename = g_strdup(filename); entry->title = g_strdup(title); entry->metadata = g_ptr_array_new_with_free_func ((GDestroyNotify)celluloid_metadata_entry_free); return entry; } void celluloid_playlist_entry_free(CelluloidPlaylistEntry *entry) { if(entry) { g_free(entry->filename); g_free(entry->title); g_ptr_array_free(entry->metadata, TRUE); g_free(entry); } } CelluloidMetadataEntry * celluloid_metadata_entry_new(const gchar *key, const gchar *value) { CelluloidMetadataEntry *entry = g_malloc(sizeof(CelluloidMetadataEntry)); entry->key = g_strdup(key); entry->value = g_strdup(value); return entry; } void celluloid_metadata_entry_free(CelluloidMetadataEntry *entry) { if(entry) { g_free(entry->key); g_free(entry->value); g_free(entry); } } CelluloidTrack * celluloid_track_new(void) { CelluloidTrack *entry = g_malloc(sizeof(CelluloidTrack)); entry->type = TRACK_TYPE_INVALID; entry->title = NULL; entry->lang = NULL; entry->id = 0; return entry; } void celluloid_track_free(CelluloidTrack *entry) { if(entry) { g_free(entry->title); g_free(entry->lang); g_free(entry); } } CelluloidDisc * celluloid_disc_new(void) { return g_malloc0(sizeof(CelluloidDisc)); } void celluloid_disc_free(CelluloidDisc *disc) { g_free(disc->uri); g_free(disc->label); g_free(disc); } gchar * get_config_dir_path(void) { return g_build_filename( g_get_user_config_dir(), CONFIG_DIR, NULL ); } gchar * get_scripts_dir_path(void) { return g_build_filename( g_get_user_config_dir(), CONFIG_DIR, "scripts", NULL ); } gchar * get_watch_dir_path(void) { return g_build_filename( g_get_user_config_dir(), CONFIG_DIR, "watch_later", NULL ); } gchar * get_path_from_uri(const gchar *uri) { GFile *file = g_vfs_get_file_for_uri(g_vfs_get_default(), uri); gchar *path = g_file_get_path(file); if(file) { g_object_unref(file); } return path?path:g_strdup(uri); } gchar * get_name_from_path(const gchar *path) { const gchar *scheme = g_uri_parse_scheme(path); gchar *basename = NULL; /* Check whether the given path is likely to be a local path */ if(!scheme && path) { basename = g_path_get_basename(path); } return basename?basename:g_strdup(path); } gboolean extension_matches(const gchar *filename, const gchar **extensions) { const gchar *ext = strrchr(filename, '.'); gboolean result = FALSE; /* Only start checking the extension if there is at * least one character after the dot. */ if(ext && ++ext) { const gchar **iter = extensions; /* Check if the file extension matches one of the * supported subtitle formats. */ while(*iter && g_strcmp0(ext, *(iter++)) != 0); result = !!(*iter); } return result; } gboolean g_source_clear(guint *tag) { if(*tag != 0) { g_source_remove(*tag); *tag = 0; } return TRUE; } void * gslist_to_array(GSList *slist) { void **result = g_malloc(sizeof(void **)*(g_slist_length(slist)+1)); gint i = 0; for(GSList *iter = slist; iter; iter = g_slist_next(iter)) { result[i++] = iter->data; } result[i] = NULL; return result; } gchar * strnjoinv(const gchar *separator, const gchar **str_array, gsize count) { gsize args_size = ((gsize)count+1)*sizeof(gchar *); gchar **args = g_malloc(args_size); gchar *result; memcpy(args, str_array, args_size-sizeof(gchar *)); args[count] = NULL; result = g_strjoinv(separator, args); g_free(args); return result; } void activate_action_string(GActionMap *map, const gchar *str) { GAction *action = NULL; gchar *name = NULL; GVariant *param = NULL; gboolean param_match = FALSE; g_action_parse_detailed_name(str, &name, ¶m, NULL); if(name) { const GVariantType *action_ptype; const GVariantType *given_ptype; action = g_action_map_lookup_action(map, name); action_ptype = g_action_get_parameter_type(action); given_ptype = param?g_variant_get_type(param):NULL; param_match = (action_ptype == given_ptype) || ( given_ptype && g_variant_type_is_subtype_of (action_ptype, given_ptype) ); } if(action && param_match) { g_debug("Activating action %s", str); g_action_activate(action, param); } else { g_warning("Failed to activate action \"%s\"", str); } } celluloid-0.18/src/celluloid-common.h000066400000000000000000000047531356026115400176340ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef COMMON_H #define COMMON_H #include #include G_BEGIN_DECLS typedef enum TrackType TrackType; typedef struct _CelluloidPlaylistEntry CelluloidPlaylistEntry; typedef struct _CelluloidMetadataEntry CelluloidMetadataEntry; typedef struct CelluloidTrack CelluloidTrack; typedef struct CelluloidDisc CelluloidDisc; enum TrackType { TRACK_TYPE_INVALID, TRACK_TYPE_AUDIO, TRACK_TYPE_VIDEO, TRACK_TYPE_SUBTITLE, TRACK_TYPE_N }; struct _CelluloidPlaylistEntry { gchar *filename; gchar *title; gdouble duration; GPtrArray *metadata; }; struct _CelluloidMetadataEntry { gchar *key; gchar *value; }; struct CelluloidTrack { TrackType type; gint64 id; gchar *title; gchar *lang; }; struct CelluloidDisc { gchar *uri; gchar *label; }; CelluloidPlaylistEntry * celluloid_playlist_entry_new(const gchar *filename, const gchar *title); void celluloid_playlist_entry_free(CelluloidPlaylistEntry *entry); CelluloidMetadataEntry * celluloid_metadata_entry_new(const gchar *key, const gchar *value); void celluloid_metadata_entry_free(CelluloidMetadataEntry *entry); CelluloidTrack * celluloid_track_new(void); void celluloid_track_free(CelluloidTrack *entry); CelluloidDisc * celluloid_disc_new(void); void celluloid_disc_free(CelluloidDisc *disc); gchar * get_config_dir_path(void); gchar * get_scripts_dir_path(void); gchar * get_watch_dir_path(void); gchar * get_path_from_uri(const gchar *uri); gchar * get_name_from_path(const gchar *path); gboolean extension_matches(const gchar *filename, const gchar **extensions); gboolean g_source_clear(guint *tag); void * gslist_to_array(GSList *slist); gchar * strnjoinv(const gchar *separator, const gchar **str_array, gsize count); void activate_action_string(GActionMap *map, const gchar *str); G_END_DECLS #endif celluloid-0.18/src/celluloid-control-box.c000066400000000000000000000407421356026115400206030ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include "celluloid-control-box.h" #include "celluloid-seek-bar.h" enum { PROP_0, PROP_SKIP_ENABLED, PROP_DURATION, PROP_ENABLED, PROP_PAUSE, PROP_SHOW_FULLSCREEN_BUTTON, PROP_TIME_POSITION, PROP_LOOP, PROP_VOLUME, PROP_VOLUME_POPUP_VISIBLE, N_PROPERTIES }; struct _CelluloidControlBox { GtkBox parent_instance; GtkWidget *play_button; GtkWidget *stop_button; GtkWidget *forward_button; GtkWidget *rewind_button; GtkWidget *next_button; GtkWidget *previous_button; GtkWidget *loop_button; GtkWidget *volume_button; GtkWidget *fullscreen_button; GtkWidget *seek_bar; gboolean skip_enabled; gdouble duration; gboolean enabled; gboolean pause; gboolean show_fullscreen_button; gdouble time_position; gboolean loop; gdouble volume; gboolean volume_popup_visible; }; struct _CelluloidControlBoxClass { GtkBoxClass parent_class; }; static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ); static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ); static gboolean gtk_to_mpv_volume( GBinding *binding, const GValue *from_value, GValue *to_value, gpointer data ); static gboolean mpv_to_gtk_volume( GBinding *binding, const GValue *from_value, GValue *to_value, gpointer data ); static void seek_handler(CelluloidSeekBar *seek_bar, gdouble value, gpointer data); static void volume_changed_handler(GtkVolumeButton *button, gdouble value, gpointer data); static void simple_signal_handler(GtkWidget *widget, gpointer data); static void set_enabled(CelluloidControlBox *box, gboolean enabled); static void set_skip_enabled(CelluloidControlBox *box, gboolean enabled); static void set_playing_state(CelluloidControlBox *box, gboolean playing); static void init_button( GtkWidget *button, const gchar *icon_name, const gchar *tooltip_text ); G_DEFINE_TYPE(CelluloidControlBox, celluloid_control_box, GTK_TYPE_BOX) static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ) { CelluloidControlBox *self = CELLULOID_CONTROL_BOX(object); switch(property_id) { case PROP_SKIP_ENABLED: self->skip_enabled = g_value_get_boolean(value); set_skip_enabled(self, self->skip_enabled); break; case PROP_DURATION: self->duration = g_value_get_double(value); celluloid_seek_bar_set_duration (CELLULOID_SEEK_BAR(self->seek_bar), self->duration); break; case PROP_ENABLED: self->enabled = g_value_get_boolean(value); set_enabled(self, self->enabled); break; case PROP_PAUSE: self->pause = g_value_get_boolean(value); set_playing_state(self, !self->pause); break; case PROP_SHOW_FULLSCREEN_BUTTON: self->show_fullscreen_button = g_value_get_boolean(value); break; case PROP_TIME_POSITION: self->time_position = g_value_get_double(value); celluloid_seek_bar_set_pos ( CELLULOID_SEEK_BAR(self->seek_bar), self->time_position ); break; case PROP_LOOP: self->loop = g_value_get_boolean(value); break; case PROP_VOLUME: self->volume = g_value_get_double(value); break; case PROP_VOLUME_POPUP_VISIBLE: self->volume_popup_visible = g_value_get_boolean(value); if( self->volume_popup_visible && gtk_widget_is_visible(GTK_WIDGET(self)) ) { g_signal_emit_by_name(self->volume_button, "popup"); } else if(!self->volume_popup_visible) { g_signal_emit_by_name(self->volume_button, "popdown"); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ) { CelluloidControlBox *self = CELLULOID_CONTROL_BOX(object); switch(property_id) { case PROP_SKIP_ENABLED: g_value_set_boolean(value, self->skip_enabled); break; case PROP_DURATION: g_value_set_double(value, self->duration); break; case PROP_ENABLED: g_value_set_boolean(value, self->enabled); break; case PROP_PAUSE: g_value_set_boolean(value, self->pause); break; case PROP_SHOW_FULLSCREEN_BUTTON: g_value_set_boolean(value, self->show_fullscreen_button); break; case PROP_TIME_POSITION: g_value_set_double(value, self->time_position); break; case PROP_LOOP: g_value_set_boolean(value, self->loop); break; case PROP_VOLUME: g_value_set_double(value, self->volume); break; case PROP_VOLUME_POPUP_VISIBLE: g_value_set_boolean(value, self->volume_popup_visible); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static gboolean gtk_to_mpv_volume( GBinding *binding, const GValue *from_value, GValue *to_value, gpointer data ) { gdouble from = g_value_get_double(from_value); g_value_set_double(to_value, from*100); return TRUE; } static gboolean mpv_to_gtk_volume( GBinding *binding, const GValue *from_value, GValue *to_value, gpointer data ) { gdouble from = g_value_get_double(from_value); g_value_set_double(to_value, from/100.0); return TRUE; } static void seek_handler(CelluloidSeekBar *seek_bar, gdouble value, gpointer data) { g_signal_emit_by_name(data, "seek", value); } static void volume_changed_handler(GtkVolumeButton *button, gdouble value, gpointer data) { g_signal_emit_by_name(data, "volume-changed", value*100.0); } static void simple_signal_handler(GtkWidget *widget, gpointer data) { CelluloidControlBox *box = data; gint i; const struct { const GtkWidget *widget; const gchar *name; const gchar *button; } signal_map[] = { {box->play_button, "button-clicked", "play"}, {box->stop_button, "button-clicked", "stop"}, {box->forward_button, "button-clicked", "forward"}, {box->rewind_button, "button-clicked", "rewind"}, {box->previous_button, "button-clicked", "previous"}, {box->next_button, "button-clicked", "next"}, {box->fullscreen_button, "button-clicked", "fullscreen"}, {NULL, NULL, NULL} }; for(i = 0; signal_map[i].name && signal_map[i].widget != widget; i++); if(signal_map[i].name) { g_signal_emit_by_name (data, signal_map[i].name, signal_map[i].button); } } static void set_enabled(CelluloidControlBox *box, gboolean enabled) { gtk_widget_set_sensitive(box->previous_button, enabled); gtk_widget_set_sensitive(box->rewind_button, enabled); gtk_widget_set_sensitive(box->stop_button, enabled); gtk_widget_set_sensitive(box->play_button, enabled); gtk_widget_set_sensitive(box->forward_button, enabled); gtk_widget_set_sensitive(box->next_button, enabled); } static void set_skip_enabled(CelluloidControlBox *box, gboolean enabled) { if(enabled) { gtk_widget_show_all(box->previous_button); gtk_widget_show_all(box->next_button); } else { gtk_widget_hide(box->previous_button); gtk_widget_hide(box->next_button); } } static void set_playing_state(CelluloidControlBox *box, gboolean playing) { GtkWidget *image = gtk_button_get_image(GTK_BUTTON(box->play_button)); const gchar *tooltip = playing?_("Pause"):_("Play"); gtk_image_set_from_icon_name( GTK_IMAGE(image), playing? "media-playback-pause-symbolic": "media-playback-start-symbolic", GTK_ICON_SIZE_BUTTON ); gtk_widget_set_tooltip_text(box->play_button, tooltip); } static void init_button( GtkWidget *button, const gchar *icon_name, const gchar *tooltip_text ) { GtkWidget *icon = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_BUTTON); gtk_widget_set_tooltip_text(button, tooltip_text); g_object_set(button, "relief", GTK_RELIEF_NONE, NULL); gtk_widget_set_can_focus(button, FALSE); gtk_button_set_image(GTK_BUTTON(button), icon); } static void celluloid_control_box_class_init(CelluloidControlBoxClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS(klass); GParamSpec *pspec = NULL; object_class->set_property = set_property; object_class->get_property = get_property; pspec = g_param_spec_boolean ( "skip-enabled", "Skip enabled", "Whether the skip buttons are shown", FALSE, G_PARAM_READWRITE ); g_object_class_install_property (object_class, PROP_SKIP_ENABLED, pspec); pspec = g_param_spec_double ( "duration", "Duration", "Duration of the file", 0.0, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE ); g_object_class_install_property (object_class, PROP_DURATION, pspec); pspec = g_param_spec_boolean ( "enabled", "Enabled", "Whether the controls are enabled", TRUE, G_PARAM_READWRITE ); g_object_class_install_property (object_class, PROP_ENABLED, pspec); pspec = g_param_spec_boolean ( "pause", "Pause", "Whether there is a file playing", TRUE, G_PARAM_READWRITE ); g_object_class_install_property (object_class, PROP_PAUSE, pspec); pspec = g_param_spec_boolean ( "show-fullscreen-button", "Show fullscreen button", "Whether to show fullscreen button when applicable", FALSE, G_PARAM_READWRITE ); g_object_class_install_property (object_class, PROP_SHOW_FULLSCREEN_BUTTON, pspec); pspec = g_param_spec_double ( "time-position", "Time position", "The current timr position in the current file", 0.0, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE ); g_object_class_install_property (object_class, PROP_TIME_POSITION, pspec); pspec = g_param_spec_boolean ( "loop", "Loop", "Whether or not the loop button is active", FALSE, G_PARAM_READWRITE ); g_object_class_install_property (object_class, PROP_LOOP, pspec); pspec = g_param_spec_double ( "volume", "Volume", "The value of the volume button", 0.0, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE ); g_object_class_install_property (object_class, PROP_VOLUME, pspec); pspec = g_param_spec_boolean ( "volume-popup-visible", "Volume popup visible", "Whether or not the volume popup is visible", FALSE, G_PARAM_READWRITE ); g_object_class_install_property (object_class, PROP_VOLUME_POPUP_VISIBLE, pspec); g_signal_new( "button-clicked", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING ); g_signal_new( "seek", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__DOUBLE, G_TYPE_NONE, 1, G_TYPE_DOUBLE ); g_signal_new( "volume-changed", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__DOUBLE, G_TYPE_NONE, 1, G_TYPE_DOUBLE ); } static void celluloid_control_box_init(CelluloidControlBox *box) { GtkWidget *popup = NULL; box->play_button = gtk_button_new(); box->stop_button = gtk_button_new(); box->forward_button = gtk_button_new(); box->rewind_button = gtk_button_new(); box->next_button = gtk_button_new(); box->previous_button = gtk_button_new(); box->fullscreen_button = gtk_button_new(); box->loop_button = gtk_toggle_button_new(); box->volume_button = gtk_volume_button_new(); box->seek_bar = celluloid_seek_bar_new(); box->skip_enabled = FALSE; box->duration = 0.0; box->enabled = TRUE; box->pause = TRUE; box->show_fullscreen_button = FALSE; box->time_position = 0.0; box->loop = FALSE; box->volume = 0.0; init_button( box->play_button, "media-playback-start-symbolic", _("Play") ); init_button( box->stop_button, "media-playback-stop-symbolic", _("Stop") ); init_button( box->forward_button, "media-seek-forward-symbolic", _("Forward") ); init_button( box->rewind_button, "media-seek-backward-symbolic", _("Rewind") ); init_button( box->next_button, "media-skip-forward-symbolic", _("Next Chapter") ); init_button( box->previous_button, "media-skip-backward-symbolic", _("Previous Chapter") ); init_button( box->loop_button, "media-playlist-repeat-symbolic", _("Loop Playlist") ); init_button( box->fullscreen_button, "view-fullscreen-symbolic", _("Toggle Fullscreen") ); gtk_style_context_add_class ( gtk_widget_get_style_context(GTK_WIDGET(box)), GTK_STYLE_CLASS_BACKGROUND ); gtk_widget_set_margin_end(box->seek_bar, 6); gtk_widget_set_can_focus(box->volume_button, FALSE); gtk_widget_set_can_focus(box->seek_bar, FALSE); gtk_container_add(GTK_CONTAINER(box), box->previous_button); gtk_container_add(GTK_CONTAINER(box), box->rewind_button); gtk_container_add(GTK_CONTAINER(box), box->play_button); gtk_container_add(GTK_CONTAINER(box), box->stop_button); gtk_container_add(GTK_CONTAINER(box), box->forward_button); gtk_container_add(GTK_CONTAINER(box), box->next_button); gtk_box_pack_start(GTK_BOX(box), box->seek_bar, TRUE, TRUE, 0); gtk_container_add(GTK_CONTAINER(box), box->loop_button); gtk_container_add(GTK_CONTAINER(box), box->volume_button); gtk_container_add(GTK_CONTAINER(box), box->fullscreen_button); popup = gtk_scale_button_get_popup (GTK_SCALE_BUTTON(box->volume_button)); g_object_bind_property( popup, "visible", box, "volume-popup-visible", G_BINDING_DEFAULT ); g_object_bind_property( box, "loop", box->loop_button, "active", G_BINDING_BIDIRECTIONAL ); g_object_bind_property_full( box->volume_button, "value", box, "volume", G_BINDING_BIDIRECTIONAL, gtk_to_mpv_volume, mpv_to_gtk_volume, NULL, NULL ); g_signal_connect( box, "button-press-event", G_CALLBACK(gtk_true), NULL ); g_signal_connect( box->play_button, "clicked", G_CALLBACK(simple_signal_handler), box ); g_signal_connect( box->stop_button, "clicked", G_CALLBACK(simple_signal_handler), box ); g_signal_connect( box->seek_bar, "seek", G_CALLBACK(seek_handler), box ); g_signal_connect( box->forward_button, "clicked", G_CALLBACK(simple_signal_handler), box ); g_signal_connect( box->rewind_button, "clicked", G_CALLBACK(simple_signal_handler), box ); g_signal_connect( box->previous_button, "clicked", G_CALLBACK(simple_signal_handler), box ); g_signal_connect( box->next_button, "clicked", G_CALLBACK(simple_signal_handler), box ); g_signal_connect( box->fullscreen_button, "clicked", G_CALLBACK(simple_signal_handler), box ); g_signal_connect( box->volume_button, "value-changed", G_CALLBACK(volume_changed_handler), box ); } GtkWidget * celluloid_control_box_new(void) { return GTK_WIDGET(g_object_new(celluloid_control_box_get_type(), NULL)); } void celluloid_control_box_set_seek_bar_pos(CelluloidControlBox *box, gdouble pos) { celluloid_seek_bar_set_pos(CELLULOID_SEEK_BAR(box->seek_bar), pos); } void celluloid_control_box_set_seek_bar_duration( CelluloidControlBox *box, gint duration ) { celluloid_seek_bar_set_duration(CELLULOID_SEEK_BAR(box->seek_bar), duration); } void celluloid_control_box_set_volume(CelluloidControlBox *box, gdouble volume) { g_signal_handlers_block_by_func(box, volume_changed_handler, box); gtk_scale_button_set_value (GTK_SCALE_BUTTON(box->volume_button), volume/100.0); g_signal_handlers_unblock_by_func(box, volume_changed_handler, box); } gdouble celluloid_control_box_get_volume(CelluloidControlBox *box) { return gtk_scale_button_get_value(GTK_SCALE_BUTTON(box->volume_button)); } gboolean celluloid_control_box_get_volume_popup_visible(CelluloidControlBox *box) { return box->volume_popup_visible; } void celluloid_control_box_set_fullscreen_state( CelluloidControlBox *box, gboolean fullscreen ) { GtkWidget *image = gtk_button_get_image(GTK_BUTTON(box->fullscreen_button)); gtk_image_set_from_icon_name( GTK_IMAGE(image), fullscreen? "view-restore-symbolic": "view-fullscreen-symbolic", GTK_ICON_SIZE_BUTTON ); gtk_widget_set_visible( box->fullscreen_button, !fullscreen && box->show_fullscreen_button ); } void celluloid_control_box_reset(CelluloidControlBox *box) { celluloid_control_box_set_seek_bar_pos(box, 0); celluloid_control_box_set_seek_bar_duration(box, 0); set_playing_state(box, FALSE); set_skip_enabled(box, FALSE); celluloid_control_box_set_fullscreen_state(box, FALSE); } celluloid-0.18/src/celluloid-control-box.h000066400000000000000000000033321356026115400206020ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef CONTROL_BOX_H #define CONTROL_BOX_H #include #include #include G_BEGIN_DECLS #define CELLULOID_TYPE_CONTROL_BOX (celluloid_control_box_get_type()) G_DECLARE_FINAL_TYPE(CelluloidControlBox, celluloid_control_box, CELLULOID, CONTROL_BOX, GtkBox) GtkWidget * celluloid_control_box_new(void); void celluloid_control_box_set_enabled(CelluloidControlBox *box, gboolean enabled); void celluloid_control_box_set_seek_bar_pos(CelluloidControlBox *box, gdouble pos); void celluloid_control_box_set_seek_bar_duration( CelluloidControlBox *box, gint duration ); void celluloid_control_box_set_volume(CelluloidControlBox *box, gdouble volume); gdouble celluloid_control_box_get_volume(CelluloidControlBox *box); gboolean celluloid_control_box_get_volume_popup_visible(CelluloidControlBox *box); void celluloid_control_box_set_fullscreen_state( CelluloidControlBox *box, gboolean fullscreen ); void celluloid_control_box_reset(CelluloidControlBox *box); G_END_DECLS #endif celluloid-0.18/src/celluloid-controller-actions.c000066400000000000000000000332601356026115400221530ustar00rootroot00000000000000/* * Copyright (c) 2015-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include "celluloid-controller-actions.h" #include "celluloid-controller-private.h" #include "celluloid-file-chooser.h" #include "celluloid-common.h" static gboolean track_id_to_state( GBinding *binding, const GValue *from_value, GValue *to_value, gpointer user_data ); static gboolean state_to_track_id( GBinding *binding, const GValue *from_value, GValue *to_value, gpointer user_data ); static gboolean loop_to_state( GBinding *binding, const GValue *from_value, GValue *to_value, gpointer user_data ); static gboolean state_to_loop( GBinding *binding, const GValue *from_value, GValue *to_value, gpointer user_data ); static void bind_properties(CelluloidController *controller); static void open_handler(GSimpleAction *action, GVariant *param, gpointer data); static void show_open_dialog_handler(GSimpleAction *action, GVariant *param, gpointer data); static void show_open_location_dialog_handler( GSimpleAction *action, GVariant *param, gpointer data ); static void toggle_loop_handler(GSimpleAction *action, GVariant *value, gpointer data); static void show_shortcuts_dialog_handler( GSimpleAction *action, GVariant *param, gpointer data ); static void toggle_controls_handler( GSimpleAction *action, GVariant *param, gpointer data ); static void toggle_playlist_handler(GSimpleAction *action, GVariant *param, gpointer data); static void save_playlist_handler(GSimpleAction *action, GVariant *param, gpointer data); static void shuffle_playlist_handler(GSimpleAction *action, GVariant *param, gpointer data); static void copy_selected_playlist_item_handler( GSimpleAction *action, GVariant *param, gpointer data ); static void remove_selected_playlist_item_handler( GSimpleAction *action, GVariant *param, gpointer data ); static void show_preferences_dialog_handler( GSimpleAction *action, GVariant *param, gpointer data ); static void quit_handler(GSimpleAction *action, GVariant *param, gpointer data); static void set_audio_track_handler(GSimpleAction *action, GVariant *value, gpointer data); static void set_video_track_handler(GSimpleAction *action, GVariant *value, gpointer data); static void set_subtitle_track_handler( GSimpleAction *action, GVariant *value, gpointer data ); static void load_track_handler(GSimpleAction *action, GVariant *param, gpointer data); static void toggle_fullscreen_handler( GSimpleAction *action, GVariant *param, gpointer data ); static void enter_fullscreen_handler(GSimpleAction *action, GVariant *param, gpointer data); static void leave_fullscreen_handler(GSimpleAction *action, GVariant *param, gpointer data); static void set_video_size_handler(GSimpleAction *action, GVariant *param, gpointer data); static void show_about_dialog_handler( GSimpleAction *action, GVariant *param, gpointer data ); static gboolean track_id_to_state( GBinding *binding, const GValue *from_value, GValue *to_value, gpointer user_data ) { const gchar *id = g_value_get_string(from_value); gint64 value = g_strcmp0(id, "no") == 0?0:g_ascii_strtoll(id, NULL, 10); GVariant *to = g_variant_new("x", value); g_value_set_variant(to_value, to); return TRUE; } static gboolean state_to_track_id( GBinding *binding, const GValue *from_value, GValue *to_value, gpointer user_data ) { GVariant *from = g_value_get_variant(from_value); gint64 id = g_variant_get_int64(from); gchar *value = id <= 0? g_strdup("no"): g_strdup_printf("%" G_GINT64_FORMAT, id); g_value_take_string(to_value, value); return TRUE; } static gboolean loop_to_state( GBinding *binding, const GValue *from_value, GValue *to_value, gpointer user_data ) { const gchar *from = g_value_get_string(from_value); GVariant *to = g_variant_new("b", g_strcmp0(from, "no") != 0); g_value_set_variant(to_value, to); return TRUE; } static gboolean state_to_loop( GBinding *binding, const GValue *from_value, GValue *to_value, gpointer user_data ) { GVariant *from = g_value_get_variant(from_value); gboolean to = g_variant_get_boolean(from); g_value_set_static_string(to_value, to?"inf":"no"); return TRUE; } static void bind_properties(CelluloidController *controller) { CelluloidMainWindow *window = celluloid_view_get_main_window (controller->view); GAction *action = NULL; action = g_action_map_lookup_action (G_ACTION_MAP(window), "set-audio-track"); g_object_bind_property_full( controller->model, "aid", action, "state", G_BINDING_BIDIRECTIONAL, track_id_to_state, state_to_track_id, NULL, NULL ); action = g_action_map_lookup_action (G_ACTION_MAP(window), "set-video-track"); g_object_bind_property_full( controller->model, "vid", action, "state", G_BINDING_BIDIRECTIONAL, track_id_to_state, state_to_track_id, NULL, NULL ); action = g_action_map_lookup_action (G_ACTION_MAP(window), "set-subtitle-track"); g_object_bind_property_full( controller->model, "sid", action, "state", G_BINDING_BIDIRECTIONAL, track_id_to_state, state_to_track_id, NULL, NULL ); action = g_action_map_lookup_action (G_ACTION_MAP(window), "toggle-loop-file"); g_object_bind_property_full( controller->model, "loop-file", action, "state", G_BINDING_BIDIRECTIONAL, loop_to_state, state_to_loop, NULL, NULL ); action = g_action_map_lookup_action (G_ACTION_MAP(window), "toggle-loop-playlist"); g_object_bind_property_full( controller->model, "loop-playlist", action, "state", G_BINDING_BIDIRECTIONAL, loop_to_state, state_to_loop, NULL, NULL ); } static void open_handler(GSimpleAction *action, GVariant *param, gpointer data) { gchar *uri = NULL; gboolean append = FALSE; g_variant_get(param, "(sb)", &uri, &append); celluloid_controller_open(data, uri, append); g_free(uri); } static void show_open_dialog_handler(GSimpleAction *action, GVariant *param, gpointer data) { gboolean append = g_variant_get_boolean(param); celluloid_view_show_open_dialog (celluloid_controller_get_view(data), append); } static void show_open_location_dialog_handler( GSimpleAction *action, GVariant *param, gpointer data ) { gboolean append = g_variant_get_boolean(param); celluloid_view_show_open_location_dialog (celluloid_controller_get_view(data), append); } static void toggle_loop_handler(GSimpleAction *action, GVariant *value, gpointer data) { g_simple_action_set_state(action, value); } static void show_shortcuts_dialog_handler( GSimpleAction *action, GVariant *param, gpointer data ) { celluloid_view_show_shortcuts_dialog(celluloid_controller_get_view(data)); } static void toggle_controls_handler(GSimpleAction *action, GVariant *param, gpointer data) { CelluloidView *view = celluloid_controller_get_view(data); gboolean visible = celluloid_view_get_controls_visible(view); celluloid_view_set_controls_visible(view, !visible); } static void toggle_playlist_handler(GSimpleAction *action, GVariant *param, gpointer data) { CelluloidView *view = celluloid_controller_get_view(data); gboolean visible = celluloid_view_get_playlist_visible(view); celluloid_view_set_playlist_visible(view, !visible); } static void save_playlist_handler(GSimpleAction *action, GVariant *param, gpointer data) { celluloid_view_show_save_playlist_dialog (celluloid_controller_get_view(data)); } static void shuffle_playlist_handler(GSimpleAction *action, GVariant *param, gpointer data) { celluloid_model_shuffle_playlist(celluloid_controller_get_model(data)); } static void copy_selected_playlist_item_handler( GSimpleAction *action, GVariant *param, gpointer data ) { CelluloidView *view = celluloid_controller_get_view(data); CelluloidMainWindow *wnd = celluloid_view_get_main_window(view); if(celluloid_main_window_get_playlist_visible(wnd)) { CelluloidPlaylistWidget *playlist; playlist = celluloid_main_window_get_playlist(wnd); celluloid_playlist_widget_copy_selected(playlist); } } static void remove_selected_playlist_item_handler( GSimpleAction *action, GVariant *param, gpointer data ) { CelluloidView *view = celluloid_controller_get_view(data); CelluloidMainWindow *wnd = celluloid_view_get_main_window(view); if(celluloid_main_window_get_playlist_visible(wnd)) { CelluloidPlaylistWidget *playlist; playlist = celluloid_main_window_get_playlist(wnd); celluloid_playlist_widget_remove_selected(playlist); } } static void show_preferences_dialog_handler( GSimpleAction *action, GVariant *param, gpointer data ) { celluloid_view_show_preferences_dialog(celluloid_controller_get_view(data)); } static void quit_handler(GSimpleAction *action, GVariant *param, gpointer data) { celluloid_controller_quit(data); } static void set_audio_track_handler(GSimpleAction *action, GVariant *value, gpointer data) { g_simple_action_set_state(action, value); } static void set_video_track_handler(GSimpleAction *action, GVariant *value, gpointer data) { g_simple_action_set_state(action, value); } static void set_subtitle_track_handler( GSimpleAction *action, GVariant *value, gpointer data ) { g_simple_action_set_state(action, value); } static void load_track_handler(GSimpleAction *action, GVariant *param, gpointer data) { CelluloidView *view = celluloid_controller_get_view(data); gchar *cmd_name = NULL; g_variant_get(param, "s", &cmd_name); if(g_strcmp0(cmd_name, "audio-add") == 0) { celluloid_view_show_open_audio_track_dialog(view); } else if(g_strcmp0(cmd_name, "sub-add") == 0) { celluloid_view_show_open_subtitle_track_dialog(view); } else { g_assert_not_reached(); } g_free(cmd_name); } static void toggle_fullscreen_handler(GSimpleAction *action, GVariant *param, gpointer data) { CelluloidView *view = celluloid_controller_get_view(data); gboolean fullscreen = FALSE; g_object_get(view, "fullscreen", &fullscreen, NULL); celluloid_view_set_fullscreen(view, !fullscreen); } static void enter_fullscreen_handler(GSimpleAction *action, GVariant *param, gpointer data) { celluloid_view_set_fullscreen(celluloid_controller_get_view(data), TRUE); } static void leave_fullscreen_handler(GSimpleAction *action, GVariant *param, gpointer data) { celluloid_view_set_fullscreen(celluloid_controller_get_view(data), FALSE); } static void set_video_size_handler(GSimpleAction *action, GVariant *param, gpointer data) { CelluloidController *controller = data; gdouble value = g_variant_get_double(param); g_object_set(controller->model, "window-scale", value, NULL); } static void show_about_dialog_handler(GSimpleAction *action, GVariant *param, gpointer data) { celluloid_view_show_about_dialog(celluloid_controller_get_view(data)); } void celluloid_controller_action_register_actions(CelluloidController *controller) { const GActionEntry entries[] = { {.name = "open", .activate = open_handler, .parameter_type = "(sb)"}, {.name = "show-open-dialog", .activate = show_open_dialog_handler, .parameter_type = "b"}, {.name = "quit", .activate = quit_handler}, {.name = "show-about-dialog", .activate = show_about_dialog_handler}, {.name = "show-preferences-dialog", .activate = show_preferences_dialog_handler}, {.name = "show-open-location-dialog", .activate = show_open_location_dialog_handler, .parameter_type = "b"}, {.name = "toggle-loop-file", .state = "false", .change_state = toggle_loop_handler}, {.name = "toggle-loop-playlist", .state = "false", .change_state = toggle_loop_handler}, {.name = "show-shortcuts-dialog", .activate = show_shortcuts_dialog_handler}, {.name = "toggle-controls", .activate = toggle_controls_handler}, {.name = "toggle-playlist", .activate = toggle_playlist_handler}, {.name = "save-playlist", .activate = save_playlist_handler}, {.name = "shuffle-playlist", .activate = shuffle_playlist_handler}, {.name = "copy-selected-playlist-item", .activate = copy_selected_playlist_item_handler}, {.name = "remove-selected-playlist-item", .activate = remove_selected_playlist_item_handler}, {.name = "set-audio-track", .change_state = set_audio_track_handler, .state = "@x 0", .parameter_type = "x"}, {.name = "set-video-track", .change_state = set_video_track_handler, .state = "@x 0", .parameter_type = "x"}, {.name = "set-subtitle-track", .change_state = set_subtitle_track_handler, .state = "@x 0", .parameter_type = "x"}, {.name = "load-track", .activate = load_track_handler, .parameter_type = "s"}, {.name = "toggle-fullscreen", .activate = toggle_fullscreen_handler}, {.name = "enter-fullscreen", .activate = enter_fullscreen_handler}, {.name = "leave-fullscreen", .activate = leave_fullscreen_handler}, {.name = "set-video-size", .activate = set_video_size_handler, .parameter_type = "d"} }; CelluloidMainWindow *window = celluloid_view_get_main_window (controller->view); g_action_map_add_action_entries( G_ACTION_MAP(window), entries, G_N_ELEMENTS(entries), controller ); bind_properties(controller); } celluloid-0.18/src/celluloid-controller-actions.h000066400000000000000000000016741356026115400221640ustar00rootroot00000000000000/* * Copyright (c) 2015-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef CONTROLLER_ACTIONS_H #define CONTROLLER_ACTIONS_H #include #include "celluloid-controller.h" G_BEGIN_DECLS void celluloid_controller_action_register_actions(CelluloidController *controller); G_END_DECLS #endif celluloid-0.18/src/celluloid-controller-input.c000066400000000000000000000155721356026115400216600ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include #include #include "celluloid-controller-private.h" #include "celluloid-controller.h" #include "celluloid-controller-input.h" #include "celluloid-mpv.h" #include "celluloid-mpv-wrapper.h" #include "celluloid-main-window.h" #include "celluloid-video-area.h" #include "celluloid-def.h" static gchar * keyval_to_keystr(guint keyval); static gchar * get_modstr(guint state); static gchar * get_full_keystr(GdkEventKey *event); static gboolean key_press_handler(GtkWidget *widget, GdkEvent *event, gpointer data); static gboolean key_release_handler(GtkWidget *widget, GdkEvent *event, gpointer data); static gboolean mouse_button_handler(GtkWidget *widget, GdkEvent *event, gpointer data); static gboolean mouse_move_handler(GtkWidget *widget, GdkEvent *event, gpointer data); static gboolean scroll_handler(GtkWidget *widget, GdkEvent *event, gpointer data); static gchar * keyval_to_keystr(guint keyval) { const gchar *keystrmap[] = KEYSTRING_MAP; gboolean found = FALSE; gchar key_utf8[7] = {0}; // 6 bytes for output and 1 for NULL terminator const gchar *result = key_utf8; g_unichar_to_utf8(gdk_keyval_to_unicode(keyval), key_utf8); result = result[0] ? result : gdk_keyval_name(keyval); for(gint i = 0; !found && keystrmap[i]; i += 2) { const gint rc = g_ascii_strncasecmp (result, keystrmap[i+1], KEYSTRING_MAX_LEN); if(rc == 0) { result = keystrmap[i][0] ? keystrmap[i] : NULL; found = TRUE; } } return result ? g_strdup(result) : NULL; } static gchar * get_modstr(guint state) { const struct { guint mask; gchar *str; } mod_map[] = { {GDK_SHIFT_MASK, "Shift+"}, {GDK_CONTROL_MASK, "Ctrl+"}, {GDK_MOD1_MASK, "Alt+"}, {GDK_SUPER_MASK, "Meta+"}, // Super is Meta in mpv {0, NULL} }; const gsize max_len = 21; // strlen("Ctrl+Alt+Shift+Meta")+1 gchar *result = g_malloc0(max_len); for(gint i = 0; mod_map[i].str; i++) { if(state & mod_map[i].mask) { g_strlcat(result, mod_map[i].str, max_len); } } return result; } static gchar * get_full_keystr(GdkEventKey *event) { gchar *modstr = get_modstr(event->state); gchar *keystr = keyval_to_keystr(event->keyval); char *result = keystr ? g_strconcat(modstr, keystr, NULL) : NULL; g_free(keystr); g_free(modstr); return result; } static gboolean key_press_handler(GtkWidget *widget, GdkEvent *event, gpointer data) { CelluloidController *controller = data; gchar *keystr = get_full_keystr((GdkEventKey *)event); if(keystr) { celluloid_model_key_down(controller->model, keystr); g_free(keystr); } return FALSE; } static gboolean key_release_handler(GtkWidget *widget, GdkEvent *event, gpointer data) { CelluloidController *controller = data; gchar *keystr = get_full_keystr((GdkEventKey *)event); if(keystr) { celluloid_model_key_up(controller->model, keystr); g_free(keystr); } return FALSE; } static gboolean mouse_button_handler(GtkWidget *widget, GdkEvent *event, gpointer data) { GdkEventButton *btn_event = (GdkEventButton *)event; if(btn_event->type == GDK_BUTTON_PRESS || btn_event->type == GDK_BUTTON_RELEASE || btn_event->type == GDK_SCROLL) { CelluloidController *controller = data; gchar *btn_str = g_strdup_printf ("MOUSE_BTN%u", btn_event->button-1); void (*func)(CelluloidModel *, const gchar *) = (btn_event->type == GDK_SCROLL)? celluloid_model_key_press: (btn_event->type == GDK_BUTTON_PRESS)? celluloid_model_key_down:celluloid_model_key_up; func(controller->model, btn_str); g_free(btn_str); } return TRUE; } static gboolean mouse_move_handler(GtkWidget *widget, GdkEvent *event, gpointer data) { CelluloidController *controller = data; GdkEventMotion *motion_event = (GdkEventMotion *)event; if(controller->model) { celluloid_model_mouse( controller->model, (gint)motion_event->x, (gint)motion_event->y ); } return FALSE; } static gboolean scroll_handler(GtkWidget *widget, GdkEvent *event, gpointer data) { GdkEventScroll *scroll_event = (GdkEventScroll *)event; guint button = 0; gint count = 0; /* Only one axis will be used at a time to prevent accidental activation * of commands bound to buttons associated with the other axis. */ if(ABS(scroll_event->delta_x) > ABS(scroll_event->delta_y)) { count = (gint)ABS(scroll_event->delta_x); if(scroll_event->delta_x <= -1) { button = 6; } else if(scroll_event->delta_x >= 1) { button = 7; } } else { count = (gint)ABS(scroll_event->delta_y); if(scroll_event->delta_y <= -1) { button = 4; } else if(scroll_event->delta_y >= 1) { button = 5; } } if(button > 0) { GdkEventButton btn_event; btn_event.type = scroll_event->type; btn_event.window = scroll_event->window; btn_event.send_event = scroll_event->send_event; btn_event.time = scroll_event->time; btn_event.x = scroll_event->x; btn_event.y = scroll_event->y; btn_event.axes = NULL; btn_event.state = scroll_event->state; btn_event.button = button; btn_event.device = scroll_event->device; btn_event.x_root = scroll_event->x_root; btn_event.y_root = scroll_event->y_root; for(gint i = 0; i < count; i++) { /* Not used */ gboolean rc; g_signal_emit_by_name (widget, "button-press-event", &btn_event, &rc); } } return TRUE; } void celluloid_controller_input_connect_signals(CelluloidController *controller) { CelluloidMainWindow *wnd = celluloid_view_get_main_window (controller->view); CelluloidVideoArea *video_area = celluloid_main_window_get_video_area (wnd); g_signal_connect( controller->view, "key-press-event", G_CALLBACK(key_press_handler), controller ); g_signal_connect( controller->view, "key-release-event", G_CALLBACK(key_release_handler), controller ); g_signal_connect( video_area, "button-press-event", G_CALLBACK(mouse_button_handler), controller ); g_signal_connect( video_area, "button-release-event", G_CALLBACK(mouse_button_handler), controller ); g_signal_connect( controller->view, "motion-notify-event", G_CALLBACK(mouse_move_handler), controller ); g_signal_connect( video_area, "scroll-event", G_CALLBACK(scroll_handler), controller ); } celluloid-0.18/src/celluloid-controller-input.h000066400000000000000000000016741356026115400216630ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef CONTROLLER_INPUT_H #define CONTROLLER_INPUT_H #include #include "celluloid-controller-input.h" G_BEGIN_DECLS void celluloid_controller_input_connect_signals(CelluloidController *controller); G_END_DECLS #endif celluloid-0.18/src/celluloid-controller-private.h000066400000000000000000000027621356026115400221750ustar00rootroot00000000000000/* * Copyright (c) 2017-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef CONTROLLER_PRIVATE_H #define CONTROLLER_PRIVATE_H #include "celluloid-model.h" #include "celluloid-view.h" #include "mpris/celluloid-mpris.h" #include "media-keys/celluloid-media-keys.h" G_BEGIN_DECLS enum { PROP_0, PROP_APP, PROP_READY, PROP_IDLE, PROP_USE_SKIP_BUTTONS_FOR_PLAYLIST, N_PROPERTIES }; struct _CelluloidController { GObject parent; CelluloidApplication *app; CelluloidModel *model; CelluloidView *view; gboolean ready; gboolean idle; gboolean use_skip_buttons_for_playlist; gint64 target_playlist_pos; guint update_seekbar_id; guint resize_timeout_tag; GBinding *skip_buttons_binding; GSettings *settings; CelluloidMediaKeys *media_keys; CelluloidMpris *mpris; }; struct _CelluloidControllerClass { GObjectClass parent_class; }; G_END_DECLS #endif celluloid-0.18/src/celluloid-controller.c000066400000000000000000000754671356026115400205340ustar00rootroot00000000000000/* * Copyright (c) 2017-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include #include #include #include "celluloid-controller-private.h" #include "celluloid-controller.h" #include "celluloid-controller-actions.h" #include "celluloid-controller-input.h" #include "celluloid-player-options.h" #include "celluloid-def.h" static void constructed(GObject *object); static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ); static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ); static void dispose(GObject *object); static gboolean loop_to_boolean( GBinding *binding, const GValue *from_value, GValue *to_value, gpointer data ); static gboolean boolean_to_loop( GBinding *binding, const GValue *from_value, GValue *to_value, gpointer data ); static void mpris_enable_handler(GSettings *settings, gchar *key, gpointer data); static void media_keys_enable_handler(GSettings *settings, gchar *key, gpointer data); static void view_ready_handler(CelluloidView *view, gpointer data); static void render_handler(CelluloidView *view, gpointer data); static void preferences_updated_handler(CelluloidView *view, gpointer data); static void audio_track_load_handler(CelluloidView *view, const gchar *uri, gpointer data); static void subtitle_track_load_handler( CelluloidView *view, const gchar *uri, gpointer data ); static void file_open_handler( CelluloidView *view, const gchar **uri_list, gboolean append, gpointer data ); static void grab_handler(CelluloidView *view, gboolean was_grabbed, gpointer data); static gboolean delete_handler(CelluloidView *view, GdkEvent *event, gpointer data); static void playlist_item_activated_handler(CelluloidView *view, gint pos, gpointer data); static void playlist_item_deleted_handler(CelluloidView *view, gint pos, gpointer data); static void playlist_reordered_handler( CelluloidView *view, gint src, gint dst, gpointer data ); static void set_use_skip_button_for_playlist( CelluloidController *controller, gboolean value); static void connect_signals(CelluloidController *controller); static gboolean update_seek_bar(gpointer data); static gboolean is_more_than_one( GBinding *binding, const GValue *from_value, GValue *to_value, gpointer data ); static void idle_active_handler(GObject *object, GParamSpec *pspec, gpointer data); static void playlist_handler(GObject *object, GParamSpec *pspec, gpointer data); static void vid_handler(GObject *object, GParamSpec *pspec, gpointer data); static void window_scale_handler(GObject *object, GParamSpec *pspec, gpointer data); static void model_ready_handler(GObject *object, GParamSpec *pspec, gpointer data); static void frame_ready_handler(CelluloidModel *model, gpointer data); static void metadata_update_handler(CelluloidModel *model, gint64 pos, gpointer data); static void window_resize_handler( CelluloidModel *model, gint64 width, gint64 height, gpointer data ); static void window_move_handler( CelluloidModel *model, gboolean flip_x, gboolean flip_y, GValue *x, GValue *y, gpointer data ); static void message_handler(CelluloidMpv *mpv, const gchar *message, gpointer data); static void error_handler(CelluloidMpv *mpv, const gchar *message, gpointer data); static void shutdown_handler(CelluloidMpv *mpv, gpointer data); static gboolean update_window_scale(gpointer data); static void video_area_resize_handler( CelluloidView *view, gint width, gint height, gpointer data ); static void fullscreen_handler(GObject *object, GParamSpec *pspec, gpointer data); static void play_button_handler(GtkButton *button, gpointer data); static void stop_button_handler(GtkButton *button, gpointer data); static void forward_button_handler(GtkButton *button, gpointer data); static void rewind_button_handler(GtkButton *button, gpointer data); static void next_button_handler(GtkButton *button, gpointer data); static void previous_button_handler(GtkButton *button, gpointer data); static void fullscreen_button_handler(GtkButton *button, gpointer data); static void seek_handler(GtkButton *button, gdouble value, gpointer data); static void celluloid_controller_class_init(CelluloidControllerClass *klass); static void celluloid_controller_init(CelluloidController *controller); G_DEFINE_TYPE(CelluloidController, celluloid_controller, G_TYPE_OBJECT) static void constructed(GObject *object) { CelluloidController *controller; CelluloidMainWindow *window; CelluloidVideoArea *video_area; gboolean always_floating; gint64 wid; controller = CELLULOID_CONTROLLER(object); always_floating = g_settings_get_boolean ( controller->settings, "always-use-floating-controls" ); controller->view = celluloid_view_new(controller->app, always_floating); window = CELLULOID_MAIN_WINDOW(controller->view); video_area = celluloid_main_window_get_video_area(window); wid = celluloid_video_area_get_xid(video_area); controller->model = celluloid_model_new(wid); connect_signals(controller); celluloid_controller_action_register_actions(controller); celluloid_controller_input_connect_signals(controller); gtk_widget_show_all(GTK_WIDGET(window)); g_signal_connect( controller->settings, "changed::mpris-enable", G_CALLBACK(mpris_enable_handler), controller ); g_signal_connect( controller->settings, "changed::media-keys-enable", G_CALLBACK(media_keys_enable_handler), controller ); if(g_settings_get_boolean(controller->settings, "mpris-enable")) { controller->mpris = celluloid_mpris_new(controller); } if(g_settings_get_boolean(controller->settings, "media-keys-enable")) { controller->media_keys = celluloid_media_keys_new(controller); } G_OBJECT_CLASS(celluloid_controller_parent_class)->constructed(object); } static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ) { CelluloidController *self = CELLULOID_CONTROLLER(object); switch(property_id) { case PROP_APP: self->app = g_value_get_pointer(value); break; case PROP_READY: self->ready = g_value_get_boolean(value); break; case PROP_IDLE: self->idle = g_value_get_boolean(value); break; case PROP_USE_SKIP_BUTTONS_FOR_PLAYLIST: self->use_skip_buttons_for_playlist = g_value_get_boolean(value); set_use_skip_button_for_playlist (self, self->use_skip_buttons_for_playlist); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ) { CelluloidController *self = CELLULOID_CONTROLLER(object); switch(property_id) { case PROP_APP: g_value_set_pointer(value, self->app); break; case PROP_READY: g_value_set_boolean(value, self->ready); break; case PROP_IDLE: g_value_set_boolean(value, self->idle); break; case PROP_USE_SKIP_BUTTONS_FOR_PLAYLIST: g_value_set_boolean(value, self->use_skip_buttons_for_playlist); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void dispose(GObject *object) { CelluloidController *controller = CELLULOID_CONTROLLER(object); g_clear_object(&controller->settings); g_clear_object(&controller->mpris); g_clear_object(&controller->media_keys); g_source_clear(&controller->update_seekbar_id); g_source_clear(&controller->resize_timeout_tag); if(controller->view) { celluloid_view_make_gl_context_current(controller->view); g_clear_object(&controller->model); gtk_widget_destroy(GTK_WIDGET(controller->view)); controller->view = NULL; } G_OBJECT_CLASS(celluloid_controller_parent_class)->dispose(object); } static gboolean loop_to_boolean( GBinding *binding, const GValue *from_value, GValue *to_value, gpointer data ) { const gchar *from = g_value_get_string(from_value); gboolean to = g_strcmp0(from, "no") != 0; g_value_set_boolean(to_value, to); return TRUE; } static gboolean boolean_to_loop( GBinding *binding, const GValue *from_value, GValue *to_value, gpointer data ) { gboolean from = g_value_get_boolean(from_value); const gchar *to = from?"inf":"no"; g_value_set_static_string(to_value, to); return TRUE; } static void mpris_enable_handler(GSettings *settings, gchar *key, gpointer data) { CelluloidController *controller = data; if(!controller->mpris && g_settings_get_boolean(settings, key)) { controller->mpris = celluloid_mpris_new(controller); } else if(controller->mpris) { g_clear_object(&controller->mpris); } } static void media_keys_enable_handler(GSettings *settings, gchar *key, gpointer data) { CelluloidController *controller = data; if(!controller->media_keys && g_settings_get_boolean(settings, key)) { controller->media_keys = celluloid_media_keys_new(controller); } else if(controller->media_keys) { g_clear_object(&controller->media_keys); } } static void view_ready_handler(CelluloidView *view, gpointer data) { CelluloidController *controller = CELLULOID_CONTROLLER(data); CelluloidApplication *app = controller->app; CelluloidModel *model = controller->model; GSettings *settings = g_settings_new(CONFIG_ROOT); const gchar *cli_options = celluloid_application_get_mpv_options(app); gchar *pref_options = g_settings_get_string(settings, "mpv-options"); gchar *options = g_strjoin(" ", pref_options, cli_options, NULL); celluloid_player_options_init ( CELLULOID_PLAYER(controller->model), CELLULOID_MAIN_WINDOW(controller->view) ); g_object_set(model, "extra-options", options, NULL); celluloid_model_initialize(model, options); g_free(options); g_free(pref_options); g_object_unref(settings); } static void render_handler(CelluloidView *view, gpointer data) { CelluloidController *controller = data; gint scale = 1; gint width = -1; gint height = -1; scale = celluloid_view_get_scale_factor(controller->view); celluloid_view_get_video_area_geometry (controller->view, &width, &height); celluloid_model_render_frame (controller->model, scale*width, scale*height); } static void preferences_updated_handler(CelluloidView *view, gpointer data) { celluloid_model_reset(CELLULOID_CONTROLLER(data)->model); } static void audio_track_load_handler(CelluloidView *view, const gchar *uri, gpointer data) { celluloid_model_load_audio_track(CELLULOID_CONTROLLER(data)->model, uri); } static void subtitle_track_load_handler( CelluloidView *view, const gchar *uri, gpointer data ) { celluloid_model_load_subtitle_track (CELLULOID_CONTROLLER(data)->model, uri); } static void file_open_handler( CelluloidView *view, const gchar **uri_list, gboolean append, gpointer data ) { for(const gchar **iter = uri_list; iter && *iter; iter++) { celluloid_model_load_file ( CELLULOID_CONTROLLER(data)->model, *iter, append || iter != uri_list ); } } static void grab_handler(CelluloidView *view, gboolean was_grabbed, gpointer data) { if(!was_grabbed) { celluloid_model_reset_keys(CELLULOID_CONTROLLER(data)->model); } } static gboolean delete_handler(CelluloidView *view, GdkEvent *event, gpointer data) { g_signal_emit_by_name(data, "shutdown"); return TRUE; } static void playlist_item_activated_handler(CelluloidView *view, gint pos, gpointer data) { CelluloidController *controller = CELLULOID_CONTROLLER(data); gboolean idle_active = FALSE; g_object_get(controller->model, "idle-active", &idle_active, NULL); celluloid_model_play(controller->model); if(idle_active) { controller->target_playlist_pos = pos; } else { celluloid_model_set_playlist_position(controller->model, pos); } } static void playlist_item_deleted_handler(CelluloidView *view, gint pos, gpointer data) { celluloid_model_remove_playlist_entry (CELLULOID_CONTROLLER(data)->model, pos); } static void playlist_reordered_handler( CelluloidView *view, gint src, gint dst, gpointer data ) { celluloid_model_move_playlist_entry (CELLULOID_CONTROLLER(data)->model, src, dst); } static void set_use_skip_button_for_playlist( CelluloidController *controller, gboolean value ) { if(controller->skip_buttons_binding) { g_binding_unbind(controller->skip_buttons_binding); } controller->skip_buttons_binding = g_object_bind_property_full ( controller->model, value?"playlist-count":"chapters", controller->view, "skip-enabled", G_BINDING_DEFAULT|G_BINDING_SYNC_CREATE, is_more_than_one, NULL, NULL, NULL ); } static void connect_signals(CelluloidController *controller) { g_object_bind_property( controller->model, "core-idle", controller, "idle", G_BINDING_DEFAULT ); g_object_bind_property( controller->model, "border", controller->view, "border", G_BINDING_DEFAULT ); g_object_bind_property( controller->model, "fullscreen", controller->view, "fullscreen", G_BINDING_BIDIRECTIONAL ); g_object_bind_property( controller->model, "pause", controller->view, "pause", G_BINDING_DEFAULT ); g_object_bind_property( controller->model, "media-title", controller->view, "title", G_BINDING_DEFAULT ); g_object_bind_property( controller->model, "volume", controller->view, "volume", G_BINDING_BIDIRECTIONAL ); g_object_bind_property( controller->model, "duration", controller->view, "duration", G_BINDING_DEFAULT ); g_object_bind_property( controller->model, "playlist-pos", controller->view, "playlist-pos", G_BINDING_DEFAULT ); g_object_bind_property( controller->model, "track-list", controller->view, "track-list", G_BINDING_DEFAULT ); g_object_bind_property( controller->model, "disc-list", controller->view, "disc-list", G_BINDING_DEFAULT ); g_object_bind_property( controller->view, "display-fps", controller->model, "display-fps", G_BINDING_DEFAULT|G_BINDING_SYNC_CREATE ); g_object_bind_property_full( controller->model, "loop-playlist", controller->view, "loop", G_BINDING_BIDIRECTIONAL, loop_to_boolean, boolean_to_loop, NULL, NULL ); g_signal_connect( controller->model, "notify::ready", G_CALLBACK(model_ready_handler), controller ); g_signal_connect( controller->model, "notify::idle-active", G_CALLBACK(idle_active_handler), controller ); g_signal_connect( controller->model, "notify::playlist", G_CALLBACK(playlist_handler), controller ); g_signal_connect( controller->model, "notify::vid", G_CALLBACK(vid_handler), controller ); g_signal_connect( controller->model, "notify::window-scale", G_CALLBACK(window_scale_handler), controller ); g_signal_connect( controller->model, "frame-ready", G_CALLBACK(frame_ready_handler), controller ); g_signal_connect( controller->model, "metadata-update", G_CALLBACK(metadata_update_handler), controller ); g_signal_connect( controller->model, "window-resize", G_CALLBACK(window_resize_handler), controller ); g_signal_connect( controller->model, "window-move", G_CALLBACK(window_move_handler), controller ); g_signal_connect( controller->model, "message", G_CALLBACK(message_handler), controller ); g_signal_connect( controller->model, "error", G_CALLBACK(error_handler), controller ); g_signal_connect( controller->model, "shutdown", G_CALLBACK(shutdown_handler), controller ); g_signal_connect( controller->view, "video-area-resize", G_CALLBACK(video_area_resize_handler), controller ); g_signal_connect( controller->view, "notify::fullscreen", G_CALLBACK(fullscreen_handler), controller ); g_signal_connect( controller->view, "button-clicked::play", G_CALLBACK(play_button_handler), controller ); g_signal_connect( controller->view, "button-clicked::stop", G_CALLBACK(stop_button_handler), controller ); g_signal_connect( controller->view, "button-clicked::forward", G_CALLBACK(forward_button_handler), controller ); g_signal_connect( controller->view, "button-clicked::rewind", G_CALLBACK(rewind_button_handler), controller ); g_signal_connect( controller->view, "button-clicked::next", G_CALLBACK(next_button_handler), controller ); g_signal_connect( controller->view, "button-clicked::previous", G_CALLBACK(previous_button_handler), controller ); g_signal_connect( controller->view, "button-clicked::fullscreen", G_CALLBACK(fullscreen_button_handler), controller ); g_signal_connect( controller->view, "seek", G_CALLBACK(seek_handler), controller ); g_signal_connect( controller->view, "ready", G_CALLBACK(view_ready_handler), controller ); g_signal_connect( controller->view, "render", G_CALLBACK(render_handler), controller ); g_signal_connect( controller->view, "preferences-updated", G_CALLBACK(preferences_updated_handler), controller ); g_signal_connect( controller->view, "audio-track-load", G_CALLBACK(audio_track_load_handler), controller ); g_signal_connect( controller->view, "subtitle-track-load", G_CALLBACK(subtitle_track_load_handler), controller ); g_signal_connect( controller->view, "file-open", G_CALLBACK(file_open_handler), controller ); g_signal_connect( controller->view, "grab-notify", G_CALLBACK(grab_handler), controller ); g_signal_connect( controller->view, "delete-event", G_CALLBACK(delete_handler), controller ); g_signal_connect( controller->view, "playlist-item-activated", G_CALLBACK(playlist_item_activated_handler), controller ); g_signal_connect( controller->view, "playlist-item-deleted", G_CALLBACK(playlist_item_deleted_handler), controller ); g_signal_connect( controller->view, "playlist-reordered", G_CALLBACK(playlist_reordered_handler), controller ); } static gboolean update_seek_bar(gpointer data) { CelluloidController *controller = data; gdouble time_pos = celluloid_model_get_time_position(controller->model); celluloid_view_set_time_position(controller->view, time_pos); return TRUE; } static gboolean is_more_than_one( GBinding *binding, const GValue *from_value, GValue *to_value, gpointer data ) { gint64 from = g_value_get_int64(from_value); g_value_set_boolean(to_value, from > 1); return TRUE; } static void idle_active_handler(GObject *object, GParamSpec *pspec, gpointer data) { CelluloidController *controller = data; gboolean idle_active = TRUE; g_object_get(object, "idle-active", &idle_active, NULL); if(idle_active) { celluloid_view_reset(CELLULOID_CONTROLLER(data)->view); } else if(controller->target_playlist_pos >= 0) { celluloid_model_set_playlist_position (controller->model, controller->target_playlist_pos); } } static void playlist_handler(GObject *object, GParamSpec *pspec, gpointer data) { CelluloidView *view = CELLULOID_CONTROLLER(data)->view; GPtrArray *playlist = NULL; gint64 pos = 0; g_object_get( object, "playlist", &playlist, "playlist-pos", &pos, NULL ); celluloid_view_update_playlist(view, playlist); celluloid_view_set_playlist_pos(view, pos); } static void vid_handler(GObject *object, GParamSpec *pspec, gpointer data) { CelluloidController *controller = data; CelluloidMainWindow *window = celluloid_view_get_main_window(controller->view); GActionMap *map = G_ACTION_MAP(window); GAction *action = g_action_map_lookup_action(map, "set-video-size"); gchar *vid_str = NULL; gint64 vid = 0; // Queue render to clear last frame from the buffer in case video // becomes disabled celluloid_view_queue_render(CELLULOID_CONTROLLER(data)->view); g_object_get(object, "vid", &vid_str, NULL); vid = g_ascii_strtoll(vid_str, NULL, 10); g_simple_action_set_enabled(G_SIMPLE_ACTION(action), vid > 0); g_free(vid_str); } static void window_scale_handler(GObject *object, GParamSpec *pspec, gpointer data) { CelluloidController *controller = data; gint64 video_width = 1; gint64 video_height = 1; gint width = 1; gint height = 1; gdouble window_scale = 1.0; gdouble new_window_scale = 1.0; celluloid_model_get_video_geometry (controller->model, &video_width, &video_height); celluloid_view_get_video_area_geometry (controller->view, &width, &height); g_object_get(object, "window-scale", &new_window_scale, NULL); window_scale = MIN( width/(gdouble)video_width, height/(gdouble)video_height ); if(ABS(window_scale-new_window_scale) > 0.0001) { celluloid_controller_autofit(data, new_window_scale); } } static void model_ready_handler(GObject *object, GParamSpec *pspec, gpointer data) { CelluloidController *controller = data; gboolean ready = FALSE; g_object_get(object, "ready", &ready, NULL); if(ready) { gboolean use_opengl_cb; use_opengl_cb = celluloid_model_get_use_opengl_cb (controller->model); celluloid_view_set_use_opengl_cb (controller->view, use_opengl_cb); if(use_opengl_cb) { celluloid_view_make_gl_context_current(controller->view); celluloid_model_initialize_gl(controller->model); } } g_source_clear(&controller->update_seekbar_id); controller->update_seekbar_id = g_timeout_add( SEEK_BAR_UPDATE_INTERVAL, (GSourceFunc)update_seek_bar, controller ); controller->ready = ready; g_object_notify(data, "ready"); } static void frame_ready_handler(CelluloidModel *model, gpointer data) { celluloid_view_queue_render(CELLULOID_CONTROLLER(data)->view); } static void metadata_update_handler(CelluloidModel *model, gint64 pos, gpointer data) { CelluloidView *view = CELLULOID_CONTROLLER(data)->view; GPtrArray *playlist = NULL; g_object_get(G_OBJECT(model), "playlist", &playlist, NULL); celluloid_view_update_playlist(view, playlist); } static void window_resize_handler( CelluloidModel *model, gint64 width, gint64 height, gpointer data ) { CelluloidController *controller = data; celluloid_view_resize_video_area(controller->view, (gint)width, (gint)height); } static void window_move_handler( CelluloidModel *model, gboolean flip_x, gboolean flip_y, GValue *x, GValue *y, gpointer data ) { celluloid_view_move (CELLULOID_CONTROLLER(data)->view, flip_x, flip_y, x, y); } static void message_handler(CelluloidMpv *mpv, const gchar *message, gpointer data) { const gsize prefix_length = sizeof(ACTION_PREFIX)-1; /* Verify that both the prefix and the scope matches */ if(message && strncmp(message, ACTION_PREFIX, prefix_length) == 0) { const gchar *action = message+prefix_length+1; CelluloidController *controller = data; CelluloidView *view = controller->view; GActionMap *map = NULL; if(g_str_has_prefix(action, "win.")) { map = G_ACTION_MAP(celluloid_view_get_main_window(view)); } else if(g_str_has_prefix(action, "app.")) { map = G_ACTION_MAP(controller->app); } if(map) { /* Strip scope and activate */ activate_action_string(map, strchr(action, '.')+1); } else { g_warning( "Received action with missing or " "unknown scope %s", action ); } } } static void error_handler(CelluloidMpv *mpv, const gchar *message, gpointer data) { celluloid_view_show_message_dialog ( CELLULOID_CONTROLLER(data)->view, GTK_MESSAGE_ERROR, _("Error"), NULL, message ); } static void shutdown_handler(CelluloidMpv *mpv, gpointer data) { g_signal_emit_by_name(data, "shutdown"); } static gboolean update_window_scale(gpointer data) { gpointer *params = data; CelluloidController *controller = CELLULOID_CONTROLLER(params[0]); gint64 video_width = 1; gint64 video_height = 1; gint width = 1; gint height = 1; gdouble window_scale = 0; gdouble new_window_scale = 0; celluloid_model_get_video_geometry (controller->model, &video_width, &video_height); celluloid_view_get_video_area_geometry (controller->view, &width, &height); new_window_scale = MIN( width/(gdouble)video_width, height/(gdouble)video_height ); g_object_get(controller->model, "window-scale", &window_scale, NULL); if(ABS(window_scale-new_window_scale) > 0.0001) { g_object_set( controller->model, "window-scale", new_window_scale, NULL ); } // Clear event source ID for the timeout *((guint *)params[1]) = 0; g_free(params); return FALSE; } static void video_area_resize_handler( CelluloidView *view, gint width, gint height, gpointer data ) { CelluloidController *controller = data; gpointer *params = g_new(gpointer, 2); g_source_clear(&controller->resize_timeout_tag); params[0] = data; params[1] = &(controller->resize_timeout_tag); // Rate-limit the call to update_window_scale(), which will update the // window-scale property in the model, to no more than once every 250ms. controller->resize_timeout_tag = g_timeout_add( 250, update_window_scale, params ); } static void fullscreen_handler(GObject *object, GParamSpec *pspec, gpointer data) { CelluloidView *view = CELLULOID_CONTROLLER(data)->view; CelluloidMainWindow *window = celluloid_view_get_main_window(view); GActionMap *map = G_ACTION_MAP(window); GAction *toggle_playlist = NULL; GAction *toggle_controls = NULL; gboolean fullscreen = FALSE; toggle_playlist = g_action_map_lookup_action(map, "toggle-playlist"); toggle_controls = g_action_map_lookup_action(map, "toggle-controls"); g_object_get(view, "fullscreen", &fullscreen, NULL); g_simple_action_set_enabled (G_SIMPLE_ACTION(toggle_playlist), !fullscreen); g_simple_action_set_enabled (G_SIMPLE_ACTION(toggle_controls), !fullscreen); } static void play_button_handler(GtkButton *button, gpointer data) { CelluloidModel *model = CELLULOID_CONTROLLER(data)->model; gboolean pause = TRUE; g_object_get(model, "pause", &pause, NULL); if(pause) { celluloid_model_play(model); } else { celluloid_model_pause(model); } } static void stop_button_handler(GtkButton *button, gpointer data) { celluloid_model_stop(CELLULOID_CONTROLLER(data)->model); } static void forward_button_handler(GtkButton *button, gpointer data) { celluloid_model_forward(CELLULOID_CONTROLLER(data)->model); } static void rewind_button_handler(GtkButton *button, gpointer data) { celluloid_model_rewind(CELLULOID_CONTROLLER(data)->model); } static void next_button_handler(GtkButton *button, gpointer data) { CelluloidController *controller = data; if(controller->use_skip_buttons_for_playlist) { celluloid_model_next_playlist_entry (CELLULOID_CONTROLLER(data)->model); } else { celluloid_model_next_chapter (CELLULOID_CONTROLLER(data)->model); } } static void previous_button_handler(GtkButton *button, gpointer data) { CelluloidController *controller = data; if(controller->use_skip_buttons_for_playlist) { celluloid_model_previous_playlist_entry (CELLULOID_CONTROLLER(data)->model); } else { celluloid_model_previous_chapter (CELLULOID_CONTROLLER(data)->model); } } static void fullscreen_button_handler(GtkButton *button, gpointer data) { CelluloidView *view = CELLULOID_CONTROLLER(data)->view; gboolean fullscreen = FALSE; g_object_get(view, "fullscreen", &fullscreen, NULL); g_object_set(view, "fullscreen", !fullscreen, NULL); } static void seek_handler(GtkButton *button, gdouble value, gpointer data) { celluloid_model_seek(CELLULOID_CONTROLLER(data)->model, value); } static void celluloid_controller_class_init(CelluloidControllerClass *klass) { GObjectClass *obj_class = G_OBJECT_CLASS(klass); GParamSpec *pspec; obj_class->constructed = constructed; obj_class->set_property = set_property; obj_class->get_property = get_property; obj_class->dispose = dispose; pspec = g_param_spec_pointer ( "app", "App", "The CelluloidApplication to use", G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); g_object_class_install_property(obj_class, PROP_APP, pspec); pspec = g_param_spec_boolean ( "ready", "Ready", "Whether mpv is ready to receive commands", FALSE, G_PARAM_READWRITE ); g_object_class_install_property(obj_class, PROP_READY, pspec); pspec = g_param_spec_boolean ( "idle", "Idle", "Whether or not the player is idle", TRUE, G_PARAM_READWRITE ); g_object_class_install_property(obj_class, PROP_IDLE, pspec); pspec = g_param_spec_boolean ( "use-skip-buttons-for-playlist", "Use skip buttons for playlist", "Whether or not to use the skip buttons to control the playlist", FALSE, G_PARAM_READWRITE ); g_object_class_install_property(obj_class, PROP_USE_SKIP_BUTTONS_FOR_PLAYLIST, pspec); g_signal_new( "shutdown", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); } static void celluloid_controller_init(CelluloidController *controller) { controller->app = NULL; controller->model = NULL; controller->view = NULL; controller->ready = FALSE; controller->idle = TRUE; controller->target_playlist_pos = -1; controller->update_seekbar_id = 0; controller->resize_timeout_tag = 0; controller->skip_buttons_binding = NULL; controller->settings = g_settings_new(CONFIG_ROOT); controller->media_keys = NULL; controller->mpris = NULL; } CelluloidController * celluloid_controller_new(CelluloidApplication *app) { const GType type = celluloid_controller_get_type(); return CELLULOID_CONTROLLER(g_object_new(type, "app", app, NULL)); } void celluloid_controller_quit(CelluloidController *controller) { celluloid_view_quit(controller->view); } void celluloid_controller_autofit( CelluloidController *controller, gdouble multiplier ) { gchar *vid = NULL; gint64 width = -1; gint64 height = -1; g_object_get(G_OBJECT(controller->model), "vid", &vid, NULL); celluloid_model_get_video_geometry(controller->model, &width, &height); if(vid && strncmp(vid, "no", 3) != 0 && width >= 0 && width >= 0) { gint new_width = (gint)(multiplier*(gdouble)width); gint new_height = (gint)(multiplier*(gdouble)height); g_debug("Resizing window to %dx%d", new_width, new_height); celluloid_view_resize_video_area( controller->view, new_width, new_height ); } g_free(vid); } void celluloid_controller_present(CelluloidController *controller) { celluloid_view_present(controller->view); } void celluloid_controller_open( CelluloidController *controller, const gchar *uri, gboolean append ) { celluloid_model_load_file(controller->model, uri, append); } CelluloidView * celluloid_controller_get_view(CelluloidController *controller) { return controller->view; } CelluloidModel * celluloid_controller_get_model(CelluloidController *controller) { return controller->model; } celluloid-0.18/src/celluloid-controller.h000066400000000000000000000031311356026115400205140ustar00rootroot00000000000000/* * Copyright (c) 2017-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef CONTROLLER_H #define CONTROLLER_H #include #include "celluloid-model.h" #include "celluloid-view.h" G_BEGIN_DECLS #define CELLULOID_TYPE_CONTROLLER (celluloid_controller_get_type()) G_DECLARE_FINAL_TYPE(CelluloidController, celluloid_controller, CELLULOID, CONTROLLER, GObject) CelluloidController * celluloid_controller_new(CelluloidApplication *app); void celluloid_controller_quit(CelluloidController *controller); void celluloid_controller_autofit( CelluloidController *controller, gdouble multiplier ); void celluloid_controller_present(CelluloidController *controller); void celluloid_controller_open( CelluloidController *controller, const gchar *uri, gboolean append ); CelluloidView * celluloid_controller_get_view(CelluloidController *controller); CelluloidModel * celluloid_controller_get_model(CelluloidController *controller); G_END_DECLS #endif celluloid-0.18/src/celluloid-def.h000066400000000000000000000151741356026115400171010ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef DEF_H #define DEF_H #define APP_ID "io.github.celluloid_player.Celluloid" #define ICON_NAME APP_ID #define BIN_NAME "celluloid" #define CONFIG_DIR BIN_NAME #define CONFIG_ROOT "io.github.celluloid-player.Celluloid" #define CONFIG_WIN_STATE CONFIG_ROOT".window-state" #define ACTION_PREFIX "celluloid-action" #define DEFAULT_LOG_LEVEL MPV_LOG_LEVEL_ERROR #define MPRIS_TRACK_LIST_BEFORE 10 #define MPRIS_TRACK_LIST_AFTER 10 #define MPRIS_TRACK_ID_NO_TRACK "/org/mpris/MediaPlayer2/TrackList/NoTrack" #define MPRIS_TRACK_ID_PREFIX "/io/github/CelluloidPlayer/Celluloid/Track/" #define MPRIS_BUS_NAME "org.mpris.MediaPlayer2."APP_ID #define MPRIS_OBJ_ROOT_PATH "/org/mpris/MediaPlayer2" #define PLAYLIST_DEFAULT_WIDTH 200 #define PLAYLIST_MIN_WIDTH 20 #define CSD_WIDTH_OFFSET 52 #define CSD_HEIGHT_OFFSET 99 #define WAYLAND_NOCSD_HEIGHT_OFFSET 60 #define MAIN_WINDOW_DEFAULT_WIDTH 625 #define MAIN_WINDOW_DEFAULT_HEIGHT 400 #define SEEK_BAR_UPDATE_INTERVAL 250 #define FS_CONTROL_HIDE_DELAY 1 #define KEYSTRING_MAX_LEN 16 #define MIN_MPV_MAJOR 0 #define MIN_MPV_MINOR 29 #define MIN_MPV_PATCH 0 #define SUBTITLE_EXTS { "utf",\ "utf8",\ "utf-8",\ "idx",\ "sub",\ "srt",\ "smi",\ "rt",\ "txt",\ "ssa",\ "aqt",\ "jss",\ "js",\ "ass",\ "mks",\ "vtt",\ "sup",\ NULL } #define PLAYLIST_EXTS { "m3u",\ "m3u8",\ "ini",\ "pls",\ "txt",\ NULL } #define DND_TARGETS { {.target = "PLAYLIST_PATH",\ .flags = GTK_TARGET_SAME_APP,\ .info = 0},\ {.target = "text/uri-list",\ .flags = 0,\ .info = 0},\ {.target = "text/plain",\ .flags = 0,\ .info = 0},\ {.target = "STRING",\ .flags = 0,\ .info = 0} } #define DEFAULT_KEYBINDS \ { "Ctrl+o script-message celluloid-action win.show-open-dialog(false)",\ "Ctrl+l script-message celluloid-action win.show-open-location-dialog(false)",\ "Ctrl+Shift+o script-message celluloid-action win.show-open-dialog(true)",\ "Ctrl+Shift+l script-message celluloid-action win.show-open-location-dialog(true)",\ "Ctrl+Shift+s script-message celluloid-action win.save-playlist",\ "Ctrl+q script-message celluloid-action win.quit",\ "Ctrl+? script-message celluloid-action win.show-shortcuts-dialog",\ "Ctrl+p script-message celluloid-action win.show-preferences-dialog",\ "Ctrl+h script-message celluloid-action win.toggle-controls",\ "F9 script-message celluloid-action win.toggle-playlist",\ "DEL script-message celluloid-action win.remove-selected-playlist-item",\ "U stop",\ "STOP stop",\ "F11 cycle fullscreen",\ "WHEEL_UP add volume 2",\ "WHEEL_DOWN add volume -2",\ "WHEEL_LEFT no-osd seek -10",\ "WHEEL_RIGHT no-osd seek 10",\ NULL } #define KEYSTRING_MAP { "PGUP", "Page_Up",\ "PGDWN", "Page_Down",\ "BS", "\b",\ "SHARP", "#",\ "RIGHT", "Right",\ "LEFT", "Left",\ "UP", "Up",\ "DOWN", "Down",\ "ESC", "\x1b",\ "DEL", "\x7f",\ "ENTER", "\r",\ "INS", "Insert",\ "VOLUME_LOWER", "AudioLowerVolume",\ "MUTE", "AudioMute",\ "VOLUME_UP", "AudioRaiseVolume",\ "PLAY", "AudioPlay",\ "STOP", "AudioStop",\ "PREV", "AudioPrev",\ "NEXT", "AudioNext",\ "FORWARD", "AudioForward",\ "REWIND", "AudioRewind",\ "MENU", "Menu",\ "HOMEPAGE", "HomePage",\ "MAIL", "Mail",\ "FAVORITES", "Favorites",\ "SEARCH", "Search",\ "SLEEP", "Sleep",\ "CANCEL", "Cancel",\ "RECORD", "AudioRecord",\ "", "Control_L",\ "", "Control_R",\ "", "Alt_L",\ "", "Alt_R",\ "", "Meta_L",\ "", "Meta_R",\ "", "Shift_L",\ "", "Shift_R",\ NULL } #define SUPPORTED_PROTOCOLS { "cdda",\ "rtmp",\ "rtsp",\ "http",\ "https",\ "mms",\ "mmst",\ "mmsh",\ "mmshttp",\ "rtp",\ "httpproxy",\ "hls",\ "rtmpe",\ "rtmps",\ "rtmpt",\ "rtmpte",\ "rtmpts",\ "srtp",\ "lavf",\ "ffmpeg",\ "udp",\ "ftp",\ "tcp",\ "tls",\ "unix",\ "sftp",\ "md5",\ "concat",\ "avdevice",\ "av",\ "dvb",\ "tv",\ "pvr",\ "smb",\ "file",\ "dvdread",\ "dvd",\ "dvdnav",\ "bd",\ "br",\ "bluray",\ "bdnav",\ "brnav",\ "bluraynav",\ "memory",\ "null",\ "mf",\ "edl",\ "rar",\ NULL } #define SUPPORTED_MIME_TYPES { "application/ogg",\ "application/x-ogg",\ "application/sdp",\ "application/smil",\ "application/x-smil",\ "application/streamingmedia",\ "application/x-streamingmedia",\ "application/vnd.rn-realmedia",\ "application/vnd.rn-realmedia-vbr",\ "audio/aac",\ "audio/x-aac",\ "audio/m4a",\ "audio/x-m4a",\ "audio/mp1",\ "audio/x-mp1",\ "audio/mp2",\ "audio/x-mp2",\ "audio/mp3",\ "audio/x-mp3",\ "audio/mpeg",\ "audio/x-mpeg",\ "audio/mpegurl",\ "audio/x-mpegurl",\ "audio/mpg",\ "audio/x-mpg",\ "audio/rn-mpeg",\ "audio/ogg",\ "audio/scpls",\ "audio/x-scpls",\ "audio/vnd.rn-realaudio",\ "audio/wav",\ "audio/x-pn-windows-pcm",\ "audio/x-realaudio",\ "audio/x-pn-realaudio",\ "audio/x-ms-wma",\ "audio/x-pls",\ "audio/x-wav",\ "video/mpeg",\ "video/x-mpeg",\ "video/x-mpeg2",\ "video/mp4",\ "video/msvideo",\ "video/x-msvideo",\ "video/ogg",\ "video/quicktime",\ "video/vnd.rn-realvideo",\ "video/x-ms-afs",\ "video/x-ms-asf",\ "video/x-ms-wmv",\ "video/x-ms-wmx",\ "video/x-ms-wvxvideo",\ "video/x-avi",\ "video/x-fli",\ "video/x-flv",\ "video/x-theora",\ "video/x-matroska",\ "video/webm",\ "audio/x-flac",\ "audio/x-vorbis+ogg",\ "video/x-ogm+ogg",\ "audio/x-shorten",\ "audio/x-ape",\ "audio/x-wavpack",\ "audio/x-tta",\ "audio/AMR",\ "audio/ac3",\ "video/mp2t",\ "audio/flac",\ NULL } #endif celluloid-0.18/src/celluloid-file-chooser.c000066400000000000000000000122011356026115400207010ustar00rootroot00000000000000/* * Copyright (c) 2017-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include "celluloid-file-chooser.h" #include "celluloid-def.h" static void load_last_folder(GtkFileChooser *chooser); static void save_last_folder(GtkFileChooser *chooser); static void response_handler(GtkDialog *dialog, gint response_id, gpointer data); static void load_last_folder(GtkFileChooser *chooser) { GSettings *win_config = g_settings_new(CONFIG_WIN_STATE); gchar *uri = g_settings_get_string(win_config, "last-folder-uri"); if(uri && *uri) { gtk_file_chooser_set_current_folder_uri(chooser, uri); } g_free(uri); g_object_unref(win_config); } static void save_last_folder(GtkFileChooser *chooser) { gchar *uri = gtk_file_chooser_get_current_folder_uri(chooser); GSettings *win_config = g_settings_new(CONFIG_WIN_STATE); g_settings_set_string(win_config, "last-folder-uri", uri?:""); g_free(uri); g_object_unref(win_config); } static void response_handler(GtkDialog *dialog, gint response_id, gpointer data) { if(response_id == GTK_RESPONSE_ACCEPT) { GSettings *main_config; gboolean last_folder_enable; main_config = g_settings_new(CONFIG_ROOT); last_folder_enable = g_settings_get_boolean (main_config, "last-folder-enable"); if(last_folder_enable) { save_last_folder(GTK_FILE_CHOOSER(dialog)); } g_object_unref(main_config); } } CelluloidFileChooser * celluloid_file_chooser_new( const gchar *title, GtkWindow *parent, GtkFileChooserAction action ) { CelluloidFileChooser *chooser; GtkFileChooser *gtk_chooser; GSettings *main_config; gboolean last_folder_enable; chooser = gtk_file_chooser_native_new(title, parent, action, NULL, NULL); gtk_chooser = GTK_FILE_CHOOSER(chooser); main_config = g_settings_new(CONFIG_ROOT); last_folder_enable = g_settings_get_boolean (main_config, "last-folder-enable"); if(last_folder_enable) { load_last_folder(GTK_FILE_CHOOSER(chooser)); } celluloid_file_chooser_set_modal(chooser, TRUE); gtk_file_chooser_set_local_only(gtk_chooser, FALSE); gtk_file_chooser_set_select_multiple(gtk_chooser, TRUE); gtk_file_chooser_set_do_overwrite_confirmation(gtk_chooser, TRUE); g_signal_connect(chooser, "response", G_CALLBACK(response_handler), NULL); g_object_unref(main_config); return chooser; } void celluloid_file_chooser_set_default_filters( CelluloidFileChooser *chooser, gboolean audio, gboolean video, gboolean image, gboolean subtitle ) { GtkFileChooser *gtk_chooser = GTK_FILE_CHOOSER(chooser); GSList *filters = gtk_file_chooser_list_filters(gtk_chooser); for(GSList *iter = filters; iter; iter = g_slist_next(iter)) { gtk_file_chooser_remove_filter(gtk_chooser, iter->data); } if(audio || video || image || subtitle) { GtkFileFilter *filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, _("All Files")); gtk_file_filter_add_pattern(filter, "*"); gtk_file_chooser_add_filter(gtk_chooser, filter); } if(audio && video && image) { GtkFileFilter *filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, _("Media Files")); gtk_file_filter_add_mime_type(filter, "audio/*"); gtk_file_filter_add_mime_type(filter, "video/*"); gtk_file_filter_add_mime_type(filter, "images/*"); gtk_file_chooser_add_filter(gtk_chooser, filter); gtk_file_chooser_set_filter(gtk_chooser, filter); } if(audio) { GtkFileFilter *filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, _("Audio Files")); gtk_file_filter_add_mime_type(filter, "audio/*"); gtk_file_chooser_add_filter(gtk_chooser, filter); } if(video) { GtkFileFilter *filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, _("Video Files")); gtk_file_filter_add_mime_type(filter, "video/*"); gtk_file_chooser_add_filter(gtk_chooser, filter); } if(image) { GtkFileFilter *filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, _("Image Files")); gtk_file_filter_add_mime_type(filter, "images/*"); gtk_file_chooser_add_filter(gtk_chooser, filter); } if(subtitle) { GtkFileFilter *filter = gtk_file_filter_new(); const gchar *exts[] = SUBTITLE_EXTS; gtk_file_filter_set_name(filter, _("Subtitle Files")); for(gint i = 0; exts[i]; i++) { gchar *pattern = g_strdup_printf("*.%s", exts[i]); gtk_file_filter_add_pattern(filter, pattern); g_free(pattern); } gtk_file_chooser_add_filter(gtk_chooser, filter); if(!(audio || video || image)) { gtk_file_chooser_set_filter(gtk_chooser, filter); } } g_slist_free(filters); } celluloid-0.18/src/celluloid-file-chooser.h000066400000000000000000000030701356026115400207120ustar00rootroot00000000000000/* * Copyright (c) 2017-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef FILE_CHOOSER_H #define FILE_CHOOSER_H #include G_BEGIN_DECLS #define CELLULOID_FILE_CHOOSER GTK_FILE_CHOOSER_NATIVE #define CelluloidFileChooser GtkFileChooserNative #define celluloid_file_chooser_destroy(x) gtk_native_dialog_destroy(GTK_NATIVE_DIALOG(x)) #define celluloid_file_chooser_show(x) gtk_native_dialog_show(GTK_NATIVE_DIALOG(x)) #define celluloid_file_chooser_set_modal(x, y) gtk_native_dialog_set_modal(GTK_NATIVE_DIALOG(x), y) #define celluloid_file_chooser_run(x) gtk_native_dialog_run(GTK_NATIVE_DIALOG(x)) CelluloidFileChooser * celluloid_file_chooser_new( const gchar *title, GtkWindow *parent, GtkFileChooserAction action ); void celluloid_file_chooser_set_default_filters( CelluloidFileChooser *chooser, gboolean audio, gboolean video, gboolean image, gboolean subtitle ); G_END_DECLS #endif celluloid-0.18/src/celluloid-header-bar.c000066400000000000000000000111611356026115400203200ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include "celluloid-header-bar.h" #include "celluloid-menu.h" struct _CelluloidHeaderBar { GtkHeaderBar parent_instance; GtkWidget *open_btn; GtkWidget *fullscreen_btn; GtkWidget *menu_btn; }; struct _CelluloidHeaderBarClass { GtkHeaderBarClass parent_class; }; G_DEFINE_TYPE(CelluloidHeaderBar, celluloid_header_bar, GTK_TYPE_HEADER_BAR) static void celluloid_header_bar_class_init(CelluloidHeaderBarClass *klass) { } static void celluloid_header_bar_init(CelluloidHeaderBar *hdr) { GtkHeaderBar *ghdr; GMenu *open_btn_menu; GMenu *menu_btn_menu; GtkWidget *open_icon; GtkWidget *fullscreen_icon; GtkWidget *menu_icon; ghdr = GTK_HEADER_BAR(hdr); open_btn_menu = g_menu_new(); menu_btn_menu = g_menu_new(); open_icon = gtk_image_new_from_icon_name ("list-add-symbolic", GTK_ICON_SIZE_MENU); fullscreen_icon = gtk_image_new_from_icon_name ("view-fullscreen-symbolic", GTK_ICON_SIZE_MENU); menu_icon = gtk_image_new_from_icon_name ("open-menu-symbolic", GTK_ICON_SIZE_MENU); hdr->open_btn = gtk_menu_button_new(); hdr->fullscreen_btn = gtk_button_new(); hdr->menu_btn = gtk_menu_button_new(); celluloid_menu_build_open_btn(open_btn_menu, NULL); celluloid_menu_build_menu_btn(menu_btn_menu, NULL); g_object_set(open_icon, "use-fallback", TRUE, NULL); g_object_set(fullscreen_icon, "use-fallback", TRUE, NULL); g_object_set(menu_icon, "use-fallback", TRUE, NULL); gtk_button_set_image(GTK_BUTTON(hdr->open_btn), open_icon); gtk_button_set_image(GTK_BUTTON(hdr->fullscreen_btn), fullscreen_icon); gtk_button_set_image(GTK_BUTTON(hdr->menu_btn), menu_icon); gtk_menu_button_set_menu_model ( GTK_MENU_BUTTON(hdr->open_btn), G_MENU_MODEL(open_btn_menu) ); gtk_menu_button_set_menu_model ( GTK_MENU_BUTTON(hdr->menu_btn), G_MENU_MODEL(menu_btn_menu) ); gtk_widget_set_tooltip_text (hdr->fullscreen_btn, _("Toggle Fullscreen")); gtk_actionable_set_action_name (GTK_ACTIONABLE(hdr->fullscreen_btn), "win.toggle-fullscreen"); gtk_widget_set_can_focus(hdr->open_btn, FALSE); gtk_widget_set_can_focus(hdr->fullscreen_btn, FALSE); gtk_widget_set_can_focus(hdr->menu_btn, FALSE); gtk_header_bar_pack_start(ghdr, hdr->open_btn); gtk_header_bar_pack_end(ghdr, hdr->menu_btn); gtk_header_bar_pack_end(ghdr, hdr->fullscreen_btn); gtk_header_bar_set_show_close_button(ghdr, TRUE); } GtkWidget * celluloid_header_bar_new() { return GTK_WIDGET(g_object_new(celluloid_header_bar_get_type(), NULL)); } gboolean celluloid_header_bar_get_open_button_popup_visible(CelluloidHeaderBar *hdr) { GtkMenuButton *btn = GTK_MENU_BUTTON(hdr->open_btn); GtkWidget *popover = GTK_WIDGET(gtk_menu_button_get_popover(btn)); return gtk_widget_is_visible(popover); } gboolean celluloid_header_bar_get_menu_button_popup_visible(CelluloidHeaderBar *hdr) { GtkMenuButton *btn = GTK_MENU_BUTTON(hdr->menu_btn); GtkWidget *popover = GTK_WIDGET(gtk_menu_button_get_popover(btn)); return gtk_widget_is_visible(popover); } void celluloid_header_bar_set_fullscreen_state( CelluloidHeaderBar *hdr, gboolean fullscreen ) { GtkWidget *image = gtk_button_get_image(GTK_BUTTON(hdr->fullscreen_btn)); gtk_image_set_from_icon_name( GTK_IMAGE(image), fullscreen? "view-restore-symbolic": "view-fullscreen-symbolic", GTK_ICON_SIZE_MENU ); gtk_header_bar_set_show_close_button(GTK_HEADER_BAR(hdr), !fullscreen); } void celluloid_header_bar_update_track_list( CelluloidHeaderBar *hdr, const GPtrArray *track_list ) { GMenu *menu = g_menu_new(); celluloid_menu_build_menu_btn(menu, track_list); gtk_menu_button_set_menu_model (GTK_MENU_BUTTON(hdr->menu_btn), G_MENU_MODEL(menu)); } void celluloid_header_bar_update_disc_list( CelluloidHeaderBar *hdr, const GPtrArray *disc_list ) { GMenu *menu = g_menu_new(); celluloid_menu_build_open_btn(menu, disc_list); gtk_menu_button_set_menu_model (GTK_MENU_BUTTON(hdr->open_btn), G_MENU_MODEL(menu)); } celluloid-0.18/src/celluloid-header-bar.h000066400000000000000000000030071356026115400203250ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef HEADER_BAR_H #define HEADER_BAR_H #include #include #include #define CELLULOID_TYPE_HEADER_BAR (celluloid_header_bar_get_type ()) G_DECLARE_FINAL_TYPE(CelluloidHeaderBar, celluloid_header_bar, CELLULOID, HEADER_BAR, GtkHeaderBar) GtkWidget * celluloid_header_bar_new(void); gboolean celluloid_header_bar_get_open_button_popup_visible(CelluloidHeaderBar *hdr); gboolean celluloid_header_bar_get_menu_button_popup_visible(CelluloidHeaderBar *hdr); void celluloid_header_bar_set_fullscreen_state( CelluloidHeaderBar *hdr, gboolean fullscreen ); void celluloid_header_bar_update_track_list( CelluloidHeaderBar *hdr, const GPtrArray *track_list ); void celluloid_header_bar_update_disc_list( CelluloidHeaderBar *hdr, const GPtrArray *disc_list ); #endif celluloid-0.18/src/celluloid-main-window-private.h000066400000000000000000000032221356026115400222330ustar00rootroot00000000000000/* * Copyright (c) 2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef CELLULOID_MAIN_WINDOW_PRIVATE_H #define CELLULOID_MAIN_WINDOW_PRIVATE_H #include G_BEGIN_DECLS typedef struct _CelluloidMainWindowPrivate CelluloidMainWindowPrivate; enum { PROP_0, PROP_ALWAYS_FLOATING, N_PROPERTIES }; struct _CelluloidMainWindowPrivate { GtkApplicationWindow parent; gint width_offset; gint height_offset; gint resize_target[2]; gboolean csd; gboolean always_floating; gboolean use_floating_controls; gboolean fullscreen; gboolean playlist_visible; gboolean playlist_first_toggle; gboolean pre_fs_playlist_visible; gint playlist_width; guint resize_tag; const GPtrArray *track_list; const GPtrArray *disc_list; GtkWidget *header_bar; GtkWidget *main_box; GtkWidget *vid_area_paned; GtkWidget *vid_area; GtkWidget *control_box; GtkWidget *playlist; }; #define get_private(window) \ G_TYPE_INSTANCE_GET_PRIVATE(window, CELLULOID_TYPE_MAIN_WINDOW, CelluloidMainWindowPrivate) G_END_DECLS #endif celluloid-0.18/src/celluloid-main-window.c000066400000000000000000000472341356026115400205710ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include #include "celluloid-main-window-private.h" #include "celluloid-def.h" #include "celluloid-marshal.h" #include "celluloid-menu.h" #include "celluloid-application.h" #include "celluloid-playlist-widget.h" #include "celluloid-main-window.h" #include "celluloid-header-bar.h" #include "celluloid-control-box.h" #include "celluloid-video-area.h" static void constructed(GObject *object); static void dispose(GObject *object); static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ); static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ); static void seek_handler(GtkWidget *widget, gdouble value, gpointer data); static void button_clicked_handler( CelluloidControlBox *control_box, const gchar *button, gpointer data ); static void notify(GObject *object, GParamSpec *pspec); static void resize_video_area_finalize( GtkWidget *widget, GdkRectangle *allocation, gpointer data ); static gboolean resize_to_target(gpointer data); G_DEFINE_TYPE_WITH_PRIVATE(CelluloidMainWindow, celluloid_main_window, GTK_TYPE_APPLICATION_WINDOW) static void constructed(GObject *object) { CelluloidMainWindowPrivate *priv = get_private(object); priv->playlist = celluloid_playlist_widget_new(); gtk_widget_show_all(priv->playlist); gtk_widget_hide(priv->playlist); gtk_widget_set_no_show_all(priv->playlist, TRUE); gtk_widget_show_all(priv->control_box); gtk_widget_hide(priv->control_box); gtk_widget_set_no_show_all(priv->control_box, TRUE); gtk_paned_pack1( GTK_PANED(priv->vid_area_paned), priv->vid_area, TRUE, TRUE ); gtk_paned_pack2( GTK_PANED(priv->vid_area_paned), priv->playlist, FALSE, FALSE ); G_OBJECT_CLASS(celluloid_main_window_parent_class)->constructed(object); } static void dispose(GObject *object) { g_source_clear(&get_private(object)->resize_tag); G_OBJECT_CLASS(celluloid_main_window_parent_class)->dispose(object); } static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ) { CelluloidMainWindowPrivate *priv = get_private(object); if(property_id == PROP_ALWAYS_FLOATING) { priv->always_floating = g_value_get_boolean(value); } else { G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); } } static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ) { CelluloidMainWindowPrivate *priv = get_private(object); if(property_id == PROP_ALWAYS_FLOATING) { g_value_set_boolean(value, priv->always_floating); } else { G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); } } static void seek_handler(GtkWidget *widget, gdouble value, gpointer data) { g_signal_emit_by_name(data, "seek", value); } static void button_clicked_handler( CelluloidControlBox *control_box, const gchar *button, gpointer data ) { gchar *name = g_strconcat("button-clicked::", button, NULL); g_signal_emit_by_name(data, name); g_free(name); } static void notify(GObject *object, GParamSpec *pspec) { if(g_strcmp0(pspec->name, "always-use-floating-controls") == 0) { CelluloidMainWindow *wnd = CELLULOID_MAIN_WINDOW(object); CelluloidMainWindowPrivate *priv = get_private(wnd); gboolean floating = priv->always_floating || priv->fullscreen; celluloid_main_window_set_use_floating_controls(wnd, floating); } } static void resize_video_area_finalize( GtkWidget *widget, GdkRectangle *allocation, gpointer data ) { CelluloidMainWindow *wnd = data; CelluloidMainWindowPrivate *priv = get_private(wnd); GdkWindow *gdk_window = gtk_widget_get_window(data); GdkDisplay *display = gdk_display_get_default(); GdkMonitor *monitor = gdk_display_get_monitor_at_window (display, gdk_window); GdkRectangle monitor_geom = {0}; gint width = allocation->width; gint height = allocation->height; gint target_width = priv->resize_target[0]; gint target_height = priv->resize_target[1]; g_signal_handlers_disconnect_by_func (widget, resize_video_area_finalize, data); gdk_monitor_get_geometry(monitor, &monitor_geom); /* Adjust resize offset */ if((width != target_width || height != target_height) && ( target_width < monitor_geom.width && target_height < monitor_geom.height ) && !gtk_window_is_maximized(GTK_WINDOW(wnd)) && !priv->fullscreen) { priv->width_offset += target_width-width; priv->height_offset += target_height-height; g_source_clear(&priv->resize_tag); priv->resize_tag = g_idle_add_full( G_PRIORITY_HIGH_IDLE, resize_to_target, wnd, NULL ); } } static gboolean resize_to_target(gpointer data) { CelluloidMainWindow *wnd = data; CelluloidMainWindowPrivate *priv = get_private(data); gint target_width = priv->resize_target[0]; gint target_height = priv->resize_target[1]; g_source_clear(&priv->resize_tag); /* Emulate mpv resizing behavior by using GDK_GRAVITY_CENTER */ gtk_window_set_gravity(GTK_WINDOW(wnd), GDK_GRAVITY_CENTER); gtk_window_resize( GTK_WINDOW(wnd), target_width+priv->width_offset, target_height+priv->height_offset ); gtk_window_set_gravity(GTK_WINDOW(wnd), GDK_GRAVITY_NORTH_WEST); /* Prevent graphical glitches that appear when calling * celluloid_main_window_resize_video_area() with the current size as * the target size. */ celluloid_playlist_widget_queue_draw (CELLULOID_PLAYLIST_WIDGET(priv->playlist)); return FALSE; } static void celluloid_main_window_class_init(CelluloidMainWindowClass *klass) { GObjectClass *obj_class = G_OBJECT_CLASS(klass); GParamSpec *pspec = NULL; obj_class->constructed = constructed; obj_class->dispose = dispose; obj_class->set_property = set_property; obj_class->get_property = get_property; obj_class->notify = notify; pspec = g_param_spec_boolean ( "always-use-floating-controls", "Always use floating controls", "Whether or not to use floating controls in windowed mode", FALSE, G_PARAM_READWRITE ); g_object_class_install_property(obj_class, PROP_ALWAYS_FLOATING, pspec); g_signal_new( "button-clicked", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST|G_SIGNAL_DETAILED, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); g_signal_new( "seek", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__DOUBLE, G_TYPE_NONE, 1, G_TYPE_DOUBLE ); } static void celluloid_main_window_init(CelluloidMainWindow *wnd) { CelluloidMainWindowPrivate *priv = get_private(wnd); CelluloidControlBox *vid_area_control_box = NULL; priv->csd = FALSE; priv->always_floating = FALSE; priv->use_floating_controls = FALSE; priv->fullscreen = FALSE; priv->playlist_visible = FALSE; priv->pre_fs_playlist_visible = FALSE; priv->playlist_width = PLAYLIST_DEFAULT_WIDTH; priv->resize_tag = 0; priv->track_list = NULL; priv->disc_list = NULL; priv->header_bar = celluloid_header_bar_new(); priv->main_box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); priv->vid_area_paned = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL); priv->vid_area = celluloid_video_area_new(); priv->control_box = celluloid_control_box_new(); priv->playlist_first_toggle = TRUE; priv->width_offset = 0; priv->height_offset = 0; vid_area_control_box = celluloid_video_area_get_control_box (CELLULOID_VIDEO_AREA(priv->vid_area)); g_object_bind_property( wnd, "title", priv->vid_area, "title", G_BINDING_DEFAULT ); g_object_bind_property( priv->control_box, "duration", vid_area_control_box, "duration", G_BINDING_DEFAULT ); g_object_bind_property( priv->control_box, "pause", vid_area_control_box, "pause", G_BINDING_DEFAULT ); g_object_bind_property( priv->control_box, "skip-enabled", vid_area_control_box, "skip-enabled", G_BINDING_DEFAULT ); g_object_bind_property( priv->control_box, "time-position", vid_area_control_box, "time-position", G_BINDING_DEFAULT ); g_object_bind_property( priv->control_box, "loop", vid_area_control_box, "loop", G_BINDING_BIDIRECTIONAL ); g_object_bind_property( priv->control_box, "volume", vid_area_control_box, "volume", G_BINDING_BIDIRECTIONAL ); g_object_bind_property( priv->control_box, "volume-popup-visible", vid_area_control_box, "volume-popup-visible", G_BINDING_BIDIRECTIONAL ); g_signal_connect( priv->control_box, "seek", G_CALLBACK(seek_handler), wnd ); g_signal_connect( priv->control_box, "button-clicked", G_CALLBACK(button_clicked_handler), wnd ); g_signal_connect( vid_area_control_box, "seek", G_CALLBACK(seek_handler), wnd ); g_signal_connect( vid_area_control_box, "button-clicked", G_CALLBACK(button_clicked_handler), wnd ); gtk_widget_add_events( priv->vid_area, GDK_ENTER_NOTIFY_MASK |GDK_LEAVE_NOTIFY_MASK ); gtk_window_set_title(GTK_WINDOW(wnd), g_get_application_name()); gtk_paned_set_position( GTK_PANED(priv->vid_area_paned), MAIN_WINDOW_DEFAULT_WIDTH -PLAYLIST_DEFAULT_WIDTH ); gtk_window_set_default_size( GTK_WINDOW(wnd), MAIN_WINDOW_DEFAULT_WIDTH, MAIN_WINDOW_DEFAULT_HEIGHT ); gtk_box_pack_start (GTK_BOX(priv->main_box), priv->vid_area_paned, TRUE, TRUE, 0); gtk_container_add(GTK_CONTAINER(priv->main_box), priv->control_box); gtk_container_add(GTK_CONTAINER(wnd), priv->main_box); } GtkWidget * celluloid_main_window_new( GtkApplication *app, gboolean always_floating ) { return GTK_WIDGET(g_object_new( celluloid_main_window_get_type(), "application", app, "always-use-floating-controls", always_floating, NULL )); } CelluloidPlaylistWidget * celluloid_main_window_get_playlist(CelluloidMainWindow *wnd) { return CELLULOID_PLAYLIST_WIDGET(get_private(wnd)->playlist); } CelluloidControlBox * celluloid_main_window_get_control_box(CelluloidMainWindow *wnd) { return CELLULOID_CONTROL_BOX(get_private(wnd)->control_box); } CelluloidVideoArea * celluloid_main_window_get_video_area(CelluloidMainWindow *wnd) { return CELLULOID_VIDEO_AREA(get_private(wnd)->vid_area); } void celluloid_main_window_set_use_floating_controls( CelluloidMainWindow *wnd, gboolean floating ) { CelluloidMainWindowPrivate *priv = get_private(wnd); if(floating != priv->use_floating_controls) { GSettings *settings = g_settings_new(CONFIG_WIN_STATE); gboolean controls_visible = g_settings_get_boolean (settings, "show-controls"); gtk_widget_set_visible (priv->control_box, controls_visible && !floating); celluloid_video_area_set_control_box_visible (CELLULOID_VIDEO_AREA(priv->vid_area), floating); priv->use_floating_controls = floating; g_clear_object(&settings); } } gboolean celluloid_main_window_get_use_floating_controls(CelluloidMainWindow *wnd) { return get_private(wnd)->use_floating_controls; } void celluloid_main_window_set_fullscreen(CelluloidMainWindow *wnd, gboolean fullscreen) { CelluloidMainWindowPrivate *priv = get_private(wnd); if(fullscreen != priv->fullscreen) { CelluloidVideoArea *vid_area = CELLULOID_VIDEO_AREA(priv->vid_area); gboolean floating = priv->always_floating || fullscreen; gboolean playlist_visible = !fullscreen && priv->pre_fs_playlist_visible; if(fullscreen) { gtk_window_fullscreen(GTK_WINDOW(wnd)); gtk_window_present(GTK_WINDOW(wnd)); priv->pre_fs_playlist_visible = priv->playlist_visible; } else { gtk_window_unfullscreen(GTK_WINDOW(wnd)); priv->playlist_visible = priv->pre_fs_playlist_visible; } if(!celluloid_main_window_get_csd_enabled(wnd)) { gtk_application_window_set_show_menubar (GTK_APPLICATION_WINDOW(wnd), !fullscreen); } celluloid_video_area_set_fullscreen_state(vid_area, fullscreen); celluloid_main_window_set_use_floating_controls(wnd, floating); gtk_widget_set_visible(priv->playlist, playlist_visible); priv->fullscreen = fullscreen; } } gboolean celluloid_main_window_get_fullscreen(CelluloidMainWindow *wnd) { return get_private(wnd)->fullscreen; } void celluloid_main_window_toggle_fullscreen(CelluloidMainWindow *wnd) { celluloid_main_window_set_fullscreen(wnd, !get_private(wnd)->fullscreen); } void celluloid_main_window_reset(CelluloidMainWindow *wnd) { gtk_window_set_title (GTK_WINDOW(wnd), g_get_application_name()); celluloid_control_box_reset (CELLULOID_CONTROL_BOX(get_private(wnd)->control_box)); } void celluloid_main_window_save_state(CelluloidMainWindow *wnd) { GSettings *settings; CelluloidMainWindowPrivate *priv; gint width; gint height; gint handle_pos; gdouble volume; gboolean controls_visible; settings = g_settings_new(CONFIG_WIN_STATE); priv = get_private(wnd); handle_pos = gtk_paned_get_position(GTK_PANED(priv->vid_area_paned)); volume = celluloid_control_box_get_volume (CELLULOID_CONTROL_BOX(priv->control_box)); controls_visible = gtk_widget_get_visible(priv->control_box); gtk_window_get_size(GTK_WINDOW(wnd), &width, &height); g_settings_set_int(settings, "width", width); g_settings_set_int(settings, "height", height); g_settings_set_double(settings, "volume", volume); g_settings_set_boolean(settings, "show-controls", controls_visible); g_settings_set_boolean(settings, "show-playlist", priv->playlist_visible); if(celluloid_main_window_get_playlist_visible(wnd)) { g_settings_set_int( settings, "playlist-width", width-handle_pos ); } else { g_settings_set_int( settings, "playlist-width", priv->playlist_width ); } g_clear_object(&settings); } void celluloid_main_window_load_state(CelluloidMainWindow *wnd) { if(!gtk_widget_get_realized(GTK_WIDGET(wnd))) { GSettings *settings = g_settings_new(CONFIG_WIN_STATE); CelluloidMainWindowPrivate *priv = get_private(wnd); gint width = g_settings_get_int(settings, "width"); gint height = g_settings_get_int(settings, "height"); gint handle_pos; gboolean controls_visible; gdouble volume; priv->playlist_width = g_settings_get_int(settings, "playlist-width"); priv->playlist_visible = g_settings_get_boolean(settings, "show-playlist"); controls_visible = g_settings_get_boolean(settings, "show-controls"); volume = g_settings_get_double(settings, "volume"); handle_pos = width-(priv->playlist_visible?priv->playlist_width:0); celluloid_control_box_set_volume (CELLULOID_CONTROL_BOX(priv->control_box), volume); gtk_widget_set_visible(priv->control_box, controls_visible); gtk_widget_set_visible(priv->playlist, priv->playlist_visible); gtk_window_resize(GTK_WINDOW(wnd), width, height); gtk_paned_set_position (GTK_PANED(priv->vid_area_paned), handle_pos); g_clear_object(&settings); } else { g_critical( "Attempted to call " "celluloid_main_window_load_state() " "on realized window" ); } } void celluloid_main_window_update_track_list( CelluloidMainWindow *wnd, const GPtrArray *track_list ) { CelluloidMainWindowPrivate *priv = get_private(wnd); priv->track_list = track_list; if(celluloid_main_window_get_csd_enabled(wnd)) { celluloid_header_bar_update_track_list (CELLULOID_HEADER_BAR(priv->header_bar), track_list); celluloid_video_area_update_track_list (CELLULOID_VIDEO_AREA(priv->vid_area), track_list); } else { GtkApplication *app; GMenu *menu; app = gtk_window_get_application(GTK_WINDOW(wnd)); menu = G_MENU(gtk_application_get_menubar(app)); if(menu) { g_menu_remove_all(menu); celluloid_menu_build_full (menu, track_list, priv->disc_list); } } } void celluloid_main_window_update_disc_list( CelluloidMainWindow *wnd, const GPtrArray *disc_list ) { CelluloidMainWindowPrivate *priv = get_private(wnd); priv->disc_list = disc_list; if(celluloid_main_window_get_csd_enabled(wnd)) { celluloid_header_bar_update_disc_list (CELLULOID_HEADER_BAR(priv->header_bar), disc_list); celluloid_video_area_update_disc_list (CELLULOID_VIDEO_AREA(priv->vid_area), disc_list); } else { GtkApplication *app; GMenu *menu; app = gtk_window_get_application(GTK_WINDOW(wnd)); menu = G_MENU(gtk_application_get_menubar(app)); if(menu) { g_menu_remove_all(menu); celluloid_menu_build_full (menu, priv->track_list, disc_list); } } } void celluloid_main_window_resize_video_area( CelluloidMainWindow *wnd, gint width, gint height ) { CelluloidMainWindowPrivate *priv = get_private(wnd); g_signal_connect( priv->vid_area, "size-allocate", G_CALLBACK(resize_video_area_finalize), wnd ); priv->resize_target[0] = width; priv->resize_target[1] = height; resize_to_target(wnd); /* The size may not change, so this is needed to ensure that * resize_video_area_finalize() will be called so that the event handler * will be disconnected. */ gtk_widget_queue_allocate(priv->vid_area); } void celluloid_main_window_enable_csd(CelluloidMainWindow *wnd) { CelluloidMainWindowPrivate *priv = get_private(wnd); priv->csd = TRUE; gtk_window_set_titlebar(GTK_WINDOW(wnd), priv->header_bar); gtk_window_set_title(GTK_WINDOW(wnd), g_get_application_name()); } gboolean celluloid_main_window_get_csd_enabled(CelluloidMainWindow *wnd) { return get_private(wnd)->csd; } void celluloid_main_window_set_playlist_visible( CelluloidMainWindow *wnd, gboolean visible ) { CelluloidMainWindowPrivate *priv = get_private(wnd); if(visible != priv->playlist_visible && !priv->fullscreen) { GdkWindow *gdk_window; GdkWindowState window_state; gboolean resize; gint handle_pos; gint width; gint height; gdk_window = gtk_widget_get_window(GTK_WIDGET(wnd)); window_state = gdk_window_get_state(gdk_window); resize = window_state & ( GDK_WINDOW_STATE_TOP_RESIZABLE | GDK_WINDOW_STATE_RIGHT_RESIZABLE | GDK_WINDOW_STATE_BOTTOM_RESIZABLE | GDK_WINDOW_STATE_LEFT_RESIZABLE ); handle_pos = gtk_paned_get_position (GTK_PANED(priv->vid_area_paned)); gtk_window_get_size(GTK_WINDOW(wnd), &width, &height); if(priv->playlist_first_toggle && visible) { gint new_pos = width-(resize?0:priv->playlist_width); gtk_paned_set_position (GTK_PANED(priv->vid_area_paned), new_pos); } else if(!visible) { priv->playlist_width = width-handle_pos; } priv->playlist_visible = visible; gtk_widget_set_visible(priv->playlist, visible); if(resize) { gint new_width; new_width = visible? width+priv->playlist_width: handle_pos; gtk_window_resize( GTK_WINDOW(wnd), new_width, height ); } priv->playlist_first_toggle = FALSE; } } gboolean celluloid_main_window_get_playlist_visible(CelluloidMainWindow *wnd) { return gtk_widget_get_visible(GTK_WIDGET(get_private(wnd)->playlist)); } void celluloid_main_window_set_controls_visible( CelluloidMainWindow *wnd, gboolean visible ) { GSettings *settings = g_settings_new(CONFIG_WIN_STATE); CelluloidMainWindowPrivate *priv = get_private(wnd); const gboolean floating = priv->use_floating_controls; gtk_widget_set_visible (GTK_WIDGET(priv->control_box), visible && !floating); g_settings_set_boolean (settings, "show-controls", visible); g_clear_object(&settings); } gboolean celluloid_main_window_get_controls_visible(CelluloidMainWindow *wnd) { return gtk_widget_get_visible(GTK_WIDGET(get_private(wnd)->control_box)); } celluloid-0.18/src/celluloid-main-window.h000066400000000000000000000057651356026115400206010ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef MAIN_WINDOW_H #define MAIN_WINDOW_H #include #include #include #include "celluloid-playlist-widget.h" #include "celluloid-control-box.h" #include "celluloid-video-area.h" G_BEGIN_DECLS #define CELLULOID_TYPE_MAIN_WINDOW (celluloid_main_window_get_type ()) G_DECLARE_DERIVABLE_TYPE(CelluloidMainWindow, celluloid_main_window, CELLULOID, MAIN_WINDOW, GtkApplicationWindow) struct _CelluloidMainWindowClass { GtkApplicationWindowClass parent_class; }; GtkWidget * celluloid_main_window_new(GtkApplication *app, gboolean always_floating); CelluloidPlaylistWidget * celluloid_main_window_get_playlist(CelluloidMainWindow *wnd); CelluloidControlBox * celluloid_main_window_get_control_box(CelluloidMainWindow *wnd); CelluloidVideoArea * celluloid_main_window_get_video_area(CelluloidMainWindow *wnd); void celluloid_main_window_set_use_floating_controls( CelluloidMainWindow *wnd, gboolean floating ); gboolean celluloid_main_window_get_use_floating_controls(CelluloidMainWindow *wnd); void celluloid_main_window_set_fullscreen( CelluloidMainWindow *wnd, gboolean fullscreen ); gboolean celluloid_main_window_get_fullscreen(CelluloidMainWindow *wnd); void celluloid_main_window_toggle_fullscreen(CelluloidMainWindow *wnd); void celluloid_main_window_reset(CelluloidMainWindow *wnd); void celluloid_main_window_save_state(CelluloidMainWindow *wnd); void celluloid_main_window_load_state(CelluloidMainWindow *wnd); void celluloid_main_window_update_track_list( CelluloidMainWindow *wnd, const GPtrArray *track_list ); void celluloid_main_window_update_disc_list( CelluloidMainWindow *wnd, const GPtrArray *disc_list ); void celluloid_main_window_resize_video_area( CelluloidMainWindow *wnd, gint width, gint height ); void celluloid_main_window_enable_csd(CelluloidMainWindow *wnd); gboolean celluloid_main_window_get_csd_enabled(CelluloidMainWindow *wnd); void celluloid_main_window_set_playlist_visible( CelluloidMainWindow *wnd, gboolean visible ); gboolean celluloid_main_window_get_playlist_visible(CelluloidMainWindow *wnd); void celluloid_main_window_set_controls_visible( CelluloidMainWindow *wnd, gboolean visible ); gboolean celluloid_main_window_get_controls_visible(CelluloidMainWindow *wnd); G_END_DECLS #endif celluloid-0.18/src/celluloid-main.c000066400000000000000000000022321356026115400172510ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include "celluloid-application.h" #include "celluloid-def.h" int main(int argc, char **argv) { GApplicationFlags flags; CelluloidApplication *app; gint status; flags = G_APPLICATION_HANDLES_COMMAND_LINE|G_APPLICATION_HANDLES_OPEN; app = celluloid_application_new(APP_ID, flags); status = g_application_run(G_APPLICATION(app), argc, argv); g_object_unref(app); return status; } celluloid-0.18/src/celluloid-menu.c000066400000000000000000000234711356026115400173010ustar00rootroot00000000000000/* * Copyright (c) 2015-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include #include "celluloid-menu.h" #include "celluloid-common.h" static void split_track_list( const GPtrArray *track_list, GPtrArray **audio_tracks, GPtrArray **video_tracks, GPtrArray **subtitle_tracks ); static GMenu * build_menu_from_track_list( const GPtrArray *list, const gchar *action, const gchar *load_action ); static GMenu * build_video_track_menu(const GPtrArray *list); static GMenu * build_audio_track_menu(const GPtrArray *list); static GMenu * build_subtitle_track_menu(const GPtrArray *list); static GMenu * build_disc_menu(const GPtrArray *disc_list); static void split_track_list( const GPtrArray *track_list, GPtrArray **audio_tracks, GPtrArray **video_tracks, GPtrArray **subtitle_tracks ) { guint track_list_len = track_list?track_list->len:0; g_assert(audio_tracks && video_tracks && subtitle_tracks); /* The contents of these array are shallow-copied from track_list and * therefore only the container should be freed. */ *audio_tracks = g_ptr_array_new(); *video_tracks = g_ptr_array_new(); *subtitle_tracks = g_ptr_array_new(); for(guint i = 0; i < track_list_len; i++) { CelluloidTrack *track = g_ptr_array_index(track_list, i); switch(track->type) { case TRACK_TYPE_AUDIO: g_ptr_array_add(*audio_tracks, track); break; case TRACK_TYPE_VIDEO: g_ptr_array_add(*video_tracks, track); break; case TRACK_TYPE_SUBTITLE: g_ptr_array_add(*subtitle_tracks, track); break; default: g_assert_not_reached(); break; } } } static GMenu * build_menu_from_track_list( const GPtrArray *list, const gchar *action, const gchar *load_action ) { GMenu *menu = g_menu_new(); const glong max_len = 32; gchar *detailed_action; g_assert(list); detailed_action = g_strdup_printf("%s(@x 0)", action); g_menu_append(menu, _("None"), detailed_action); g_free(detailed_action); for(guint i = 0; i < list->len; i++) { CelluloidTrack *entry; glong entry_title_len; gchar *entry_title; gchar *title; entry = g_ptr_array_index(list, i); /* For simplicity, also dup the default string used when the * track has no title. */ entry_title = g_strdup(entry->title?:_("Unknown")); /* Maximum number of bytes per UTF-8 character is 4 */ entry_title_len = g_utf8_strlen(entry_title, 4*(max_len+1)); if(entry_title_len > max_len) { /* Truncate the string */ *(g_utf8_offset_to_pointer(entry_title, max_len)) = '\0'; } detailed_action = g_strdup_printf( "%s(@x %" G_GINT64_FORMAT ")", action, entry->id ); /* Ellipsize the title if it's longer than max_len */ title = g_strdup_printf( entry->lang? "%s%s (%s)":"%s%s", entry_title, (entry_title_len > max_len)? "…":"", entry->lang ); g_menu_append(menu, title, detailed_action); g_free(detailed_action); g_free(entry_title); g_free(title); } if(load_action) { g_menu_append(menu, _("_Load External…"), load_action); } return menu; } static GMenu * build_video_track_menu(const GPtrArray *list) { return build_menu_from_track_list (list, "win.set-video-track", NULL); } static GMenu * build_audio_track_menu(const GPtrArray *list) { return build_menu_from_track_list ( list, "win.set-audio-track", "win.load-track('audio-add')" ); } static GMenu * build_subtitle_track_menu(const GPtrArray *list) { return build_menu_from_track_list ( list, "win.set-subtitle-track", "win.load-track('sub-add')" ); } static GMenu * build_disc_menu(const GPtrArray *disc_list) { GMenu *menu = g_menu_new(); for(guint i = 0; disc_list && i < disc_list->len; i++) { CelluloidDisc *disc = g_ptr_array_index(disc_list, i); gchar *action = g_strdup_printf ("win.open(('%s', false))", disc->uri); g_menu_append(menu, disc->label, action); g_free(action); } if(!disc_list || disc_list->len == 0) { /* Disable the menu item by setting the action to something * invalid. */ g_menu_append(menu, _("No disc found"), "_"); } return menu; } void celluloid_menu_build_full( GMenu *menu, const GPtrArray *track_list, const GPtrArray *disc_list ) { GPtrArray *audio_tracks = NULL; GPtrArray *video_tracks = NULL; GPtrArray *subtitle_tracks = NULL; GMenu *video_menu = NULL; GMenu *audio_menu = NULL; GMenu *subtitle_menu = NULL; GMenu *disc_menu = NULL; split_track_list (track_list, &audio_tracks, &video_tracks, &subtitle_tracks); video_menu = build_video_track_menu(video_tracks); audio_menu = build_audio_track_menu(audio_tracks); subtitle_menu = build_subtitle_track_menu(subtitle_tracks); disc_menu = build_disc_menu(disc_list); const CelluloidMenuEntry entries[] = { CELLULOID_MENU_SUBMENU(_("_File"), NULL), CELLULOID_MENU_ITEM(_("_Open…"), "win.show-open-dialog(false)"), CELLULOID_MENU_ITEM(_("Open _Location…"), "win.show-open-location-dialog(false)"), CELLULOID_MENU_SUBMENU(_("Open _Disc…"), disc_menu), CELLULOID_MENU_ITEM(_("_Save Playlist"), "win.save-playlist"), CELLULOID_MENU_ITEM(_("_New Window"), "app.new-window"), CELLULOID_MENU_SUBMENU(_("_Edit"), NULL), CELLULOID_MENU_ITEM(_("_Preferences"), "win.show-preferences-dialog"), CELLULOID_MENU_SUBMENU(_("_Video Track"), video_menu), CELLULOID_MENU_SUBMENU(_("_Audio Track"), audio_menu), CELLULOID_MENU_SUBMENU(_("S_ubtitle Track"), subtitle_menu), CELLULOID_MENU_SUBMENU(_("_View"), NULL), CELLULOID_MENU_ITEM(_("_Toggle Controls"), "win.toggle-controls"), CELLULOID_MENU_ITEM(_("_Toggle Playlist"), "win.toggle-playlist"), CELLULOID_MENU_ITEM(_("_Fullscreen"), "win.toggle-fullscreen"), CELLULOID_MENU_SUBMENU(_("_Help"), NULL), CELLULOID_MENU_ITEM(_("_Keyboard Shortcuts"), "win.show-shortcuts-dialog"), CELLULOID_MENU_ITEM(_("_About Celluloid"), "win.show-about-dialog"), CELLULOID_MENU_END }; celluloid_menu_build_menu(menu, entries, FALSE); g_ptr_array_free(audio_tracks, FALSE); g_ptr_array_free(video_tracks, FALSE); g_ptr_array_free(subtitle_tracks, FALSE); g_object_unref(video_menu); g_object_unref(audio_menu); g_object_unref(subtitle_menu); g_object_unref(disc_menu); } void celluloid_menu_build_menu_btn(GMenu *menu, const GPtrArray *track_list) { GPtrArray *audio_tracks = NULL; GPtrArray *video_tracks = NULL; GPtrArray *subtitle_tracks = NULL; GMenu *video_menu = NULL; GMenu *audio_menu = NULL; GMenu *subtitle_menu = NULL; split_track_list (track_list, &audio_tracks, &video_tracks, &subtitle_tracks); video_menu = build_video_track_menu(video_tracks); audio_menu = build_audio_track_menu(audio_tracks); subtitle_menu = build_subtitle_track_menu(subtitle_tracks); const CelluloidMenuEntry entries[] = { CELLULOID_MENU_SEPARATOR, CELLULOID_MENU_ITEM(_("_Toggle Controls"), "win.toggle-controls"), CELLULOID_MENU_SEPARATOR, CELLULOID_MENU_ITEM(_("_Toggle Playlist"), "win.toggle-playlist"), CELLULOID_MENU_ITEM(_("_Save Playlist"), "win.save-playlist"), CELLULOID_MENU_SEPARATOR, CELLULOID_MENU_SUBMENU(_("_Video Track"), video_menu), CELLULOID_MENU_SUBMENU(_("_Audio Track"), audio_menu), CELLULOID_MENU_SUBMENU(_("S_ubtitle Track"), subtitle_menu), CELLULOID_MENU_SEPARATOR, CELLULOID_MENU_ITEM(_("_Preferences"), "win.show-preferences-dialog"), CELLULOID_MENU_ITEM(_("_Keyboard Shortcuts"), "win.show-shortcuts-dialog"), CELLULOID_MENU_ITEM(_("_About Celluloid"), "win.show-about-dialog"), CELLULOID_MENU_END }; celluloid_menu_build_menu(menu, entries, TRUE); g_ptr_array_free(audio_tracks, FALSE); g_ptr_array_free(video_tracks, FALSE); g_ptr_array_free(subtitle_tracks, FALSE); g_object_unref(video_menu); g_object_unref(audio_menu); g_object_unref(subtitle_menu); } void celluloid_menu_build_open_btn(GMenu *menu, const GPtrArray *disc_list) { GMenu *disc_menu = build_disc_menu(disc_list); const CelluloidMenuEntry entries[] = { CELLULOID_MENU_SEPARATOR, CELLULOID_MENU_ITEM(_("_Open…"), "win.show-open-dialog(false)"), CELLULOID_MENU_ITEM(_("Open _Location…"), "win.show-open-location-dialog(false)"), CELLULOID_MENU_SUBMENU(_("Open _Disc"), disc_menu), CELLULOID_MENU_SEPARATOR, CELLULOID_MENU_ITEM(_("_New Window"), "app.new-window"), CELLULOID_MENU_END }; celluloid_menu_build_menu(menu, entries, TRUE); g_clear_object(&disc_menu); } void celluloid_menu_build_menu( GMenu *menu, const CelluloidMenuEntry *entries, gboolean flat ) { GMenu *current_submenu = NULL; for( gint i = 0; entries[i].title || entries[i].action || entries[i].submenu; i++ ) { const gchar *title = entries[i].title; const gchar *action = entries[i].action; const GMenu *submenu = entries[i].submenu; if(title && (action || submenu)) { GMenuItem *item; if(submenu) { item = g_menu_item_new_submenu (title, G_MENU_MODEL(submenu)); } else { item = g_menu_item_new(title, action); } g_menu_append_item(current_submenu, item); g_object_unref(item); } else { GMenuModel *model; current_submenu = g_menu_new(); model = G_MENU_MODEL(current_submenu); if(flat) { g_menu_append_section(menu, title, model); } else { g_menu_append_submenu(menu, title, model); } } } } celluloid-0.18/src/celluloid-menu.h000066400000000000000000000031761356026115400173060ustar00rootroot00000000000000/* * Copyright (c) 2015-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef MENU_H #define MENU_H #include #include G_BEGIN_DECLS #define CELLULOID_MENU_ITEM(title, action) {title, action, NULL} #define CELLULOID_MENU_SUBMENU(title, submenu) {title, NULL, submenu} #define CELLULOID_MENU_SEPARATOR {NULL, "", NULL} #define CELLULOID_MENU_END {NULL, NULL, NULL} struct CelluloidMenuEntry { gchar *title; gchar *action; GMenu *submenu; }; typedef struct CelluloidMenuEntry CelluloidMenuEntry; void celluloid_menu_build_full( GMenu *celluloid_menu, const GPtrArray *track_list, const GPtrArray *disc_list ); void celluloid_menu_build_menu_btn(GMenu *celluloid_menu, const GPtrArray *track_list); void celluloid_menu_build_open_btn(GMenu *celluloid_menu, const GPtrArray *disc_list); void celluloid_menu_build_app_menu(GMenu *celluloid_menu); void celluloid_menu_build_menu( GMenu *menu, const CelluloidMenuEntry *entries, gboolean flat ); G_END_DECLS #endif celluloid-0.18/src/celluloid-metadata-cache.c000066400000000000000000000207451356026115400211570ustar00rootroot00000000000000/* * Copyright (c) 2017-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include "celluloid-metadata-cache.h" #include "celluloid-mpv.h" #include "celluloid-mpv-wrapper.h" struct _CelluloidMetadataCache { GObject parent; GHashTable *table; CelluloidMpv *fetcher; GQueue *fetch_queue; guint fetch_timeout_id; }; struct _CelluloidMetadataCacheClass { GObjectClass parent_class; }; static CelluloidMetadataCacheEntry * celluloid_metadata_cache_entry_new(void); static void celluloid_metadata_cache_entry_free(CelluloidMetadataCacheEntry *entry); static void dispose(GObject *object); static void finalize(GObject *object); static void metadata_to_ptr_array(mpv_node metadata, GPtrArray *array); static void mpv_event_notify( CelluloidMpv *mpv, gint event_id, gpointer event_data, gpointer data ); static gboolean fetch_metadata(CelluloidMetadataCache *cache); G_DEFINE_TYPE(CelluloidMetadataCache, celluloid_metadata_cache, G_TYPE_OBJECT) static CelluloidMetadataCacheEntry * celluloid_metadata_cache_entry_new(void) { CelluloidMetadataCacheEntry *entry = g_new0(CelluloidMetadataCacheEntry, 1); entry->tags = g_ptr_array_new_with_free_func ((GDestroyNotify)celluloid_metadata_entry_free); return entry; } static void celluloid_metadata_cache_entry_free(CelluloidMetadataCacheEntry *entry) { if(entry) { g_free(entry->title); g_ptr_array_free(entry->tags, TRUE); g_free(entry); } } static void dispose(GObject *object) { CelluloidMetadataCache *cache = CELLULOID_METADATA_CACHE(object); g_source_clear(&cache->fetch_timeout_id); g_clear_object(&CELLULOID_METADATA_CACHE(object)->fetcher); } static void finalize(GObject *object) { CelluloidMetadataCache *cache = CELLULOID_METADATA_CACHE(object); g_hash_table_unref(cache->table); g_queue_free_full(cache->fetch_queue, g_free); } static void metadata_to_ptr_array(mpv_node metadata, GPtrArray *array) { mpv_node_list *list = metadata.u.list; g_ptr_array_set_size(array, 0); if(metadata.format == MPV_FORMAT_NODE_MAP && list->num > 0) { for(gint i = 0; i < list->num; i++) { const gchar *key = list->keys[i]; mpv_node value = list->values[i]; if(value.format == MPV_FORMAT_STRING) { CelluloidMetadataEntry *entry; entry = celluloid_metadata_entry_new (key, value.u.string); g_ptr_array_add(array, entry); } else { g_warning( "Ignored metadata field %s " "with unexpected format %d", key, value.format ); } } } } static void mpv_event_notify( CelluloidMpv *mpv, gint event_id, gpointer event_data, gpointer data ) { if(event_id == MPV_EVENT_FILE_LOADED) { CelluloidMetadataCache *cache = data; CelluloidMetadataCacheEntry *entry = NULL; gchar *path = NULL; celluloid_mpv_get_property (mpv, "path", MPV_FORMAT_STRING, &path); g_debug("Fetched metadata for %s", path); entry = g_hash_table_lookup(cache->table, path); if(entry) { const gchar *cmd[] = {"playlist-next", "force", NULL}; gchar *media_title = NULL; mpv_node metadata; celluloid_mpv_get_property( mpv, "duration", MPV_FORMAT_DOUBLE, &entry->duration ); celluloid_mpv_get_property( mpv, "media-title", MPV_FORMAT_STRING, &media_title ); celluloid_mpv_get_property( mpv, "metadata", MPV_FORMAT_NODE, &metadata ); if(!entry->title) { entry->title = g_strdup(media_title); } metadata_to_ptr_array(metadata, entry->tags); celluloid_mpv_command(mpv, cmd); g_signal_emit_by_name(cache, "update", path); mpv_free(media_title); mpv_free_node_contents(&metadata); } mpv_free(path); } else if(event_id == MPV_EVENT_END_FILE) { mpv_event_end_file *event = event_data; if(event->reason == MPV_END_FILE_REASON_ERROR) { g_debug("Failed to fetch metadata"); } } } static void shutdown_handler(CelluloidMpv *mpv, gpointer data) { CelluloidMetadataCache *cache = data; g_clear_object(&cache->fetcher); if(!g_queue_is_empty(cache->fetch_queue)) { g_source_clear(&cache->fetch_timeout_id); cache->fetch_timeout_id = g_idle_add((GSourceFunc)fetch_metadata, cache); } } static gboolean fetch_metadata(CelluloidMetadataCache *cache) { g_assert(!cache->fetcher); cache->fetcher = celluloid_mpv_new(0); g_signal_connect( cache->fetcher, "mpv-event-notify", G_CALLBACK(mpv_event_notify), cache ); g_signal_connect( cache->fetcher, "shutdown", G_CALLBACK(shutdown_handler), cache ); celluloid_mpv_set_option_string(cache->fetcher, "ao", "null"); celluloid_mpv_set_option_string(cache->fetcher, "vo", "null"); celluloid_mpv_set_option_string(cache->fetcher, "idle", "once"); celluloid_mpv_set_option_string(cache->fetcher, "ytdl", "yes"); celluloid_mpv_initialize(cache->fetcher); for( gchar *uri = g_queue_pop_tail(cache->fetch_queue); uri; uri = g_queue_pop_tail(cache->fetch_queue) ) { g_debug("Queuing %s for metadata fetch", uri); celluloid_mpv_load_file(cache->fetcher, uri, TRUE); g_free(uri); } cache->fetch_timeout_id = 0; return G_SOURCE_REMOVE; } static void celluloid_metadata_cache_class_init(CelluloidMetadataCacheClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS(klass); object_class->dispose = dispose; object_class->finalize = finalize; g_signal_new( "update", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING ); } static void celluloid_metadata_cache_init(CelluloidMetadataCache *cache) { cache->table = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, (GDestroyNotify) celluloid_metadata_cache_entry_free ); cache->fetcher = NULL; cache->fetch_queue = g_queue_new(); cache->fetch_timeout_id = 0; } CelluloidMetadataCache * celluloid_metadata_cache_new(void) { return g_object_new(celluloid_metadata_cache_get_type(), NULL); } void celluloid_metadata_cache_ref_entry( CelluloidMetadataCache *cache, const gchar *uri ) { celluloid_metadata_cache_lookup(cache, uri)->references++; } void celluloid_metadata_cache_unref_entry( CelluloidMetadataCache *cache, const gchar *uri ) { CelluloidMetadataCacheEntry *entry = g_hash_table_lookup(cache->table, uri); if(entry && --entry->references == 0) { g_hash_table_remove(cache->table, uri); } } void celluloid_metadata_cache_load_playlist( CelluloidMetadataCache *cache, const GPtrArray *playlist ) { CelluloidMetadataCacheEntry *entry = NULL; GHashTableIter iter; g_hash_table_iter_init(&iter, cache->table); /* First, set the refrence count for all entries to zero */ while(g_hash_table_iter_next(&iter, NULL, (gpointer)&entry)) { g_assert(entry); entry->references = 0; } /* Then ref all entries in the playlist. This sets the reference count * to the number of times the entry appears in the playlist. */ for(guint i = 0; i < playlist->len; i++) { CelluloidPlaylistEntry *entry = g_ptr_array_index(playlist, i); celluloid_metadata_cache_ref_entry(cache, entry->filename); } g_hash_table_iter_init(&iter, cache->table); /* Remove all entries that with refrence count of zero, which means that * the entry no longer exists in the playlist. */ while(g_hash_table_iter_next(&iter, NULL, (gpointer)&entry)) { g_assert(entry); if(entry->references == 0) { g_hash_table_iter_remove(&iter); } } } CelluloidMetadataCacheEntry * celluloid_metadata_cache_lookup( CelluloidMetadataCache *cache, const gchar *uri ) { CelluloidMetadataCacheEntry *entry = g_hash_table_lookup(cache->table, uri); if(!entry) { entry = celluloid_metadata_cache_entry_new(); g_hash_table_insert(cache->table, g_strdup(uri), entry); if(!cache->fetcher && g_queue_is_empty(cache->fetch_queue)) { g_source_clear(&cache->fetch_timeout_id); cache->fetch_timeout_id = g_idle_add((GSourceFunc)fetch_metadata, cache); } g_queue_push_head(cache->fetch_queue, g_strdup(uri)); } return entry; } celluloid-0.18/src/celluloid-metadata-cache.h000066400000000000000000000032351356026115400211570ustar00rootroot00000000000000/* * Copyright (c) 2017-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef METADATA_CACHE #define METADATA_CACHE #include G_BEGIN_DECLS typedef struct _CelluloidMetadataCacheEntry CelluloidMetadataCacheEntry; struct _CelluloidMetadataCacheEntry { gint references; gchar *title; gdouble duration; GPtrArray *tags; }; #define CELLULOID_TYPE_METADATA_CACHE (celluloid_metadata_cache_get_type()) G_DECLARE_FINAL_TYPE(CelluloidMetadataCache, celluloid_metadata_cache, CELLULOID, METADATA_CACHE, GObject) CelluloidMetadataCache * celluloid_metadata_cache_new(void); void celluloid_metadata_cache_ref_entry( CelluloidMetadataCache *cache, const gchar *uri ); void celluloid_metadata_cache_unref_entry( CelluloidMetadataCache *cache, const gchar *uri ); void celluloid_metadata_cache_load_playlist( CelluloidMetadataCache *cache, const GPtrArray *playlist ); CelluloidMetadataCacheEntry * celluloid_metadata_cache_lookup( CelluloidMetadataCache *cache, const gchar *uri ); G_END_DECLS #endif celluloid-0.18/src/celluloid-model.c000066400000000000000000000534051356026115400174350ustar00rootroot00000000000000/* * Copyright (c) 2017-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include "celluloid-model.h" #include "celluloid-marshal.h" #include "celluloid-mpv-wrapper.h" enum { PROP_INVALID, PROP_AID, PROP_VID, PROP_SID, PROP_CHAPTERS, PROP_CORE_IDLE, PROP_IDLE_ACTIVE, PROP_BORDER, PROP_FULLSCREEN, PROP_PAUSE, PROP_LOOP_FILE, PROP_LOOP_PLAYLIST, PROP_DURATION, PROP_MEDIA_TITLE, PROP_PLAYLIST_COUNT, PROP_PLAYLIST_POS, PROP_SPEED, PROP_VOLUME, PROP_WINDOW_SCALE, PROP_DISPLAY_FPS, N_PROPERTIES }; struct _CelluloidModel { CelluloidPlayer parent; gchar *extra_options; gboolean ready; GPtrArray *metadata; GPtrArray *track_list; gboolean update_mpv_properties; gboolean resetting; gchar *aid; gchar *vid; gchar *sid; gint64 chapters; gboolean core_idle; gboolean idle_active; gboolean border; gboolean fullscreen; gboolean pause; gchar *loop_file; gchar *loop_playlist; gdouble duration; gchar *media_title; gint64 playlist_count; gint64 playlist_pos; gdouble speed; gdouble volume; gdouble window_scale; gdouble display_fps; }; struct _CelluloidModelClass { GObjectClass parent_class; }; static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ); static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ); static void dispose(GObject *object); static void finalize(GObject *object); static void set_mpv_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ); static void g_value_set_by_type(GValue *gvalue, GType type, gpointer value); static GParamSpec * g_param_spec_by_type( const gchar *name, const gchar *nick, const gchar *blurb, GType type, GParamFlags flags ); static gboolean emit_frame_ready(gpointer data); static void render_update_callback(gpointer render_ctx); static void mpv_prop_change_handler( CelluloidMpv *mpv, const gchar *name, gpointer value, gpointer data ); G_DEFINE_TYPE(CelluloidModel, celluloid_model, CELLULOID_TYPE_PLAYER) static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ) { CelluloidModel *self = CELLULOID_MODEL(object); switch(property_id) { case PROP_AID: g_free(self->aid); self->aid = g_value_dup_string(value); break; case PROP_VID: g_free(self->vid); self->vid = g_value_dup_string(value); break; case PROP_SID: g_free(self->sid); self->sid = g_value_dup_string(value); break; case PROP_CHAPTERS: self->chapters = g_value_get_int64(value); break; case PROP_CORE_IDLE: self->core_idle = g_value_get_boolean(value); if(self->resetting) { if(self->pause) { celluloid_model_pause(self); } else { celluloid_model_play(self); } self->resetting = FALSE; } break; case PROP_IDLE_ACTIVE: self->idle_active = g_value_get_boolean(value); if(self->idle_active) { g_object_notify(object, "playlist-pos"); } break; case PROP_BORDER: self->border = g_value_get_boolean(value); break; case PROP_FULLSCREEN: self->fullscreen = g_value_get_boolean(value); break; case PROP_PAUSE: self->pause = g_value_get_boolean(value); break; case PROP_LOOP_FILE: g_free(self->loop_file); self->loop_file = g_value_dup_string(value); break; case PROP_LOOP_PLAYLIST: g_free(self->loop_playlist); self->loop_playlist = g_value_dup_string(value); break; case PROP_DURATION: self->duration = g_value_get_double(value); break; case PROP_MEDIA_TITLE: g_free(self->media_title); self->media_title = g_value_dup_string(value); break; case PROP_PLAYLIST_COUNT: self->playlist_count = g_value_get_int64(value); break; case PROP_PLAYLIST_POS: self->playlist_pos = g_value_get_int64(value); break; case PROP_SPEED: self->speed = g_value_get_double(value); break; case PROP_VOLUME: self->volume = g_value_get_double(value); break; case PROP_WINDOW_SCALE: self->window_scale = g_value_get_double(value); break; case PROP_DISPLAY_FPS: self->display_fps = g_value_get_double(value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } /* Do not propagate changes from mpv back to itself */ if(self->update_mpv_properties) { set_mpv_property(object, property_id, value, pspec); } } static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ) { CelluloidModel *self = CELLULOID_MODEL(object); switch(property_id) { case PROP_AID: g_value_set_string(value, self->aid); break; case PROP_VID: g_value_set_string(value, self->vid); break; case PROP_SID: g_value_set_string(value, self->sid); break; case PROP_CHAPTERS: g_value_set_int64(value, self->chapters); break; case PROP_CORE_IDLE: g_value_set_boolean(value, self->core_idle); break; case PROP_IDLE_ACTIVE: g_value_set_boolean(value, self->idle_active); break; case PROP_BORDER: g_value_set_boolean(value, self->border); break; case PROP_FULLSCREEN: g_value_set_boolean(value, self->fullscreen); break; case PROP_PAUSE: g_value_set_boolean(value, self->pause); break; case PROP_LOOP_FILE: g_value_set_string(value, self->loop_file); break; case PROP_LOOP_PLAYLIST: g_value_set_string(value, self->loop_playlist); break; case PROP_DURATION: g_value_set_double(value, self->duration); break; case PROP_MEDIA_TITLE: g_value_set_string(value, self->media_title); break; case PROP_PLAYLIST_COUNT: g_value_set_int64(value, self->playlist_count); break; case PROP_PLAYLIST_POS: g_value_set_int64(value, self->idle_active?0:self->playlist_pos); break; case PROP_SPEED: g_value_set_double(value, self->speed); break; case PROP_VOLUME: g_value_set_double(value, self->volume); break; case PROP_WINDOW_SCALE: g_value_set_double(value, self->window_scale); break; case PROP_DISPLAY_FPS: g_value_set_double(value, self->display_fps); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void dispose(GObject *object) { CelluloidModel *model = CELLULOID_MODEL(object); CelluloidMpv *mpv = CELLULOID_MPV(model); if(mpv) { celluloid_mpv_set_render_update_callback(mpv, NULL, NULL); while(g_source_remove_by_user_data(model)); } g_free(model->extra_options); G_OBJECT_CLASS(celluloid_model_parent_class)->dispose(object); } static void finalize(GObject *object) { CelluloidModel *model = CELLULOID_MODEL(object); g_free(model->aid); g_free(model->vid); g_free(model->sid); g_free(model->loop_file); g_free(model->loop_playlist); g_free(model->media_title); G_OBJECT_CLASS(celluloid_model_parent_class)->finalize(object); } static void set_mpv_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ) { CelluloidModel *self = CELLULOID_MODEL(object); CelluloidMpv *mpv = CELLULOID_MPV(self); switch(property_id) { case PROP_AID: celluloid_mpv_set_property( mpv, "aid", MPV_FORMAT_STRING, &self->aid ); break; case PROP_VID: celluloid_mpv_set_property( mpv, "vid", MPV_FORMAT_STRING, &self->vid ); break; case PROP_SID: celluloid_mpv_set_property( mpv, "sid", MPV_FORMAT_STRING, &self->sid ); break; case PROP_BORDER: celluloid_mpv_set_property( mpv, "border", MPV_FORMAT_FLAG, &self->border ); break; case PROP_FULLSCREEN: celluloid_mpv_set_property( mpv, "fullscreen", MPV_FORMAT_FLAG, &self->fullscreen ); break; case PROP_PAUSE: celluloid_mpv_set_property( mpv, "pause", MPV_FORMAT_FLAG, &self->pause ); break; case PROP_LOOP_FILE: celluloid_mpv_set_property( mpv, "loop-file", MPV_FORMAT_STRING, &self->loop_file ); break; case PROP_LOOP_PLAYLIST: celluloid_mpv_set_property( mpv, "loop-playlist", MPV_FORMAT_STRING, &self->loop_playlist ); break; case PROP_MEDIA_TITLE: celluloid_mpv_set_property( mpv, "media-title", MPV_FORMAT_INT64, &self->media_title ); break; case PROP_PLAYLIST_POS: celluloid_mpv_set_property( mpv, "playlist-pos", MPV_FORMAT_INT64, &self->playlist_pos ); break; case PROP_SPEED: celluloid_mpv_set_property( mpv, "speed", MPV_FORMAT_DOUBLE, &self->speed ); break; case PROP_VOLUME: celluloid_mpv_set_property( mpv, "volume", MPV_FORMAT_DOUBLE, &self->volume ); break; case PROP_WINDOW_SCALE: celluloid_mpv_set_property( mpv, "window-scale", MPV_FORMAT_DOUBLE, &self->window_scale ); break; case PROP_DISPLAY_FPS: celluloid_mpv_set_property( mpv, "display-fps", MPV_FORMAT_DOUBLE, &self->display_fps ); break; } } static void g_value_set_by_type(GValue *gvalue, GType type, gpointer value) { g_value_unset(gvalue); g_value_init(gvalue, type); switch(type) { case G_TYPE_STRING: g_value_set_string(gvalue, *((const gchar **)value)); break; case G_TYPE_BOOLEAN: g_value_set_boolean(gvalue, *((gboolean *)value)); break; case G_TYPE_INT64: g_value_set_int64(gvalue, *((gint64 *)value)); break; case G_TYPE_DOUBLE: g_value_set_double(gvalue, *((gdouble *)value)); break; case G_TYPE_POINTER: g_value_set_pointer(gvalue, *((gpointer *)value)); break; default: g_assert_not_reached(); break; } } static GParamSpec * g_param_spec_by_type( const gchar *name, const gchar *nick, const gchar *blurb, GType type, GParamFlags flags ) { GParamSpec *result = NULL; switch(type) { case G_TYPE_STRING: result = g_param_spec_string(name, nick, blurb, NULL, flags); break; case G_TYPE_BOOLEAN: result = g_param_spec_boolean(name, nick, blurb, FALSE, flags); break; case G_TYPE_INT64: result = g_param_spec_int64( name, nick, blurb, G_MININT64, G_MAXINT64, 0, flags ); break; case G_TYPE_DOUBLE: result = g_param_spec_double( name, nick, blurb, -G_MAXDOUBLE, G_MAXDOUBLE, 0.0, flags ); break; case G_TYPE_POINTER: result = g_param_spec_pointer(name, nick, blurb, flags); break; default: g_assert_not_reached(); break; } return result; } static gboolean emit_frame_ready(gpointer data) { CelluloidModel *model = data; guint64 flags = celluloid_mpv_render_context_update(CELLULOID_MPV(model)); if(flags&MPV_RENDER_UPDATE_FRAME) { g_signal_emit_by_name(model, "frame-ready"); } return FALSE; } static void render_update_callback(gpointer data) { g_idle_add_full( G_PRIORITY_HIGH, emit_frame_ready, data, NULL ); } static void mpv_prop_change_handler( CelluloidMpv *mpv, const gchar *name, gpointer value, gpointer data ) { if( g_strcmp0(name, "playlist") != 0 && g_strcmp0(name, "metadata") != 0 && g_strcmp0(name, "track-list") != 0 ) { GObjectClass *klass; GParamSpec *pspec; GValue gvalue = G_VALUE_INIT; klass = G_TYPE_INSTANCE_GET_CLASS (data, CELLULOID_TYPE_MODEL, GObjectClass); pspec = g_object_class_find_property(klass, name); if(pspec && value) { CELLULOID_MODEL(data)->update_mpv_properties = FALSE; g_value_set_by_type(&gvalue, pspec->value_type, value); g_object_set_property(data, name, &gvalue); CELLULOID_MODEL(data)->update_mpv_properties = TRUE; } } } static void celluloid_model_class_init(CelluloidModelClass *klass) { /* The "no" value of aid, vid, and sid cannot be represented with an * int64, so we need to observe them as string to receive notifications * for all possible values. */ const struct { const gchar *name; guint id; GType type; } mpv_props[] = { {"aid", PROP_AID, G_TYPE_STRING}, {"vid", PROP_VID, G_TYPE_STRING}, {"sid", PROP_SID, G_TYPE_STRING}, {"chapters", PROP_CHAPTERS, G_TYPE_INT64}, {"core-idle", PROP_CORE_IDLE, G_TYPE_BOOLEAN}, {"idle-active", PROP_IDLE_ACTIVE, G_TYPE_BOOLEAN}, {"border", PROP_BORDER, G_TYPE_BOOLEAN}, {"fullscreen", PROP_FULLSCREEN, G_TYPE_BOOLEAN}, {"pause", PROP_PAUSE, G_TYPE_BOOLEAN}, {"loop-file", PROP_LOOP_FILE, G_TYPE_STRING}, {"loop-playlist", PROP_LOOP_PLAYLIST, G_TYPE_STRING}, {"duration", PROP_DURATION, G_TYPE_DOUBLE}, {"media-title", PROP_MEDIA_TITLE, G_TYPE_STRING}, {"playlist-count", PROP_PLAYLIST_COUNT, G_TYPE_INT64}, {"playlist-pos", PROP_PLAYLIST_POS, G_TYPE_INT64}, {"speed", PROP_SPEED, G_TYPE_DOUBLE}, {"volume", PROP_VOLUME, G_TYPE_DOUBLE}, {"window-scale", PROP_WINDOW_SCALE, G_TYPE_DOUBLE}, {"display-fps", PROP_DISPLAY_FPS, G_TYPE_DOUBLE}, {NULL, PROP_INVALID, 0} }; GObjectClass *obj_class = G_OBJECT_CLASS(klass); GParamSpec *pspec = NULL; obj_class->set_property = set_property; obj_class->get_property = get_property; obj_class->dispose = dispose; obj_class->finalize = finalize; for(int i = 0; mpv_props[i].name; i++) { pspec = g_param_spec_by_type( mpv_props[i].name, mpv_props[i].name, mpv_props[i].name, mpv_props[i].type, G_PARAM_READWRITE ); g_object_class_install_property (obj_class, mpv_props[i].id, pspec); } g_signal_new( "playback-restart", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); g_signal_new( "frame-ready", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); } static void celluloid_model_init(CelluloidModel *model) { model->extra_options = NULL; model->ready = FALSE; model->metadata = NULL; model->track_list = NULL; model->update_mpv_properties = TRUE; model->resetting = FALSE; model->aid = NULL; model->vid = NULL; model->sid = NULL; model->chapters = 0; model->core_idle = FALSE; model->idle_active = FALSE; model->border = FALSE; model->fullscreen = FALSE; model->pause = TRUE; model->loop_file = NULL; model->loop_playlist = NULL; model->duration = 0.0; model->media_title = NULL; model->playlist_count = 0; model->playlist_pos = 0; model->speed = 1.0; model->volume = 1.0; model->window_scale = 1.0; model->display_fps = 0.0; } CelluloidModel * celluloid_model_new(gint64 wid) { const GType type = celluloid_model_get_type(); CelluloidModel *model = CELLULOID_MODEL(g_object_new( type, "wid", wid, NULL )); g_signal_connect( model, "mpv-property-changed", G_CALLBACK(mpv_prop_change_handler), model ); return model; } void celluloid_model_initialize(CelluloidModel *model, const gchar *options) { CelluloidMpv *mpv = CELLULOID_MPV(model); celluloid_mpv_initialize (mpv); celluloid_mpv_set_render_update_callback (mpv, render_update_callback, model); } void celluloid_model_reset(CelluloidModel *model) { model->resetting = TRUE; model->ready = FALSE; g_object_notify(G_OBJECT(model), "ready"); celluloid_mpv_reset(CELLULOID_MPV(model)); } void celluloid_model_quit(CelluloidModel *model) { if(model->ready) { model->ready = FALSE; g_object_notify(G_OBJECT(model), "ready"); celluloid_mpv_quit(CELLULOID_MPV(model)); } } void celluloid_model_mouse(CelluloidModel *model, gint x, gint y) { gchar *x_str = g_strdup_printf("%d", x); gchar *y_str = g_strdup_printf("%d", y); const gchar *cmd[] = {"mouse", x_str, y_str, NULL}; g_debug("Set mouse location to (%s, %s)", x_str, y_str); celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); g_free(x_str); g_free(y_str); } void celluloid_model_key_down(CelluloidModel *model, const gchar* keystr) { const gchar *cmd[] = {"keydown", keystr, NULL}; g_debug("Sent '%s' key down to mpv", keystr); celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); } void celluloid_model_key_up(CelluloidModel *model, const gchar* keystr) { const gchar *cmd[] = {"keyup", keystr, NULL}; g_debug("Sent '%s' key up to mpv", keystr); celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); } void celluloid_model_key_press(CelluloidModel *model, const gchar* keystr) { const gchar *cmd[] = {"keypress", keystr, NULL}; g_debug("Sent '%s' key press to mpv", keystr); celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); } void celluloid_model_reset_keys(CelluloidModel *model) { // As of Sep 20, 2019, mpv will crash if the command doesn't have any // arguments. The empty string is there to work around the issue. const gchar *cmd[] = {"keyup", "", NULL}; g_debug("Sent global key up to mpv"); celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); } void celluloid_model_play(CelluloidModel *model) { celluloid_mpv_set_property_flag(CELLULOID_MPV(model), "pause", FALSE); } void celluloid_model_pause(CelluloidModel *model) { celluloid_mpv_set_property_flag(CELLULOID_MPV(model), "pause", TRUE); } void celluloid_model_stop(CelluloidModel *model) { const gchar *cmd[] = {"stop", NULL}; celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); } void celluloid_model_forward(CelluloidModel *model) { const gchar *cmd[] = {"seek", "10", NULL}; celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); } void celluloid_model_rewind(CelluloidModel *model) { const gchar *cmd[] = {"seek", "-10", NULL}; celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); } void celluloid_model_next_chapter(CelluloidModel *model) { const gchar *cmd[] = {"osd-msg", "cycle", "chapter", NULL}; celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); } void celluloid_model_previous_chapter(CelluloidModel *model) { const gchar *cmd[] = {"osd-msg", "cycle", "chapter", "down", NULL}; celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); } void celluloid_model_next_playlist_entry(CelluloidModel *model) { const gchar *cmd[] = {"osd-msg", "playlist-next", "weak", NULL}; celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); } void celluloid_model_previous_playlist_entry(CelluloidModel *model) { const gchar *cmd[] = {"osd-msg", "playlist-prev", "weak", NULL}; celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); } void celluloid_model_shuffle_playlist(CelluloidModel *model) { const gchar *cmd[] = {"osd-msg", "playlist-shuffle", NULL}; celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); } void celluloid_model_seek(CelluloidModel *model, gdouble value) { celluloid_mpv_set_property(CELLULOID_MPV(model), "time-pos", MPV_FORMAT_DOUBLE, &value); } void celluloid_model_seek_offset(CelluloidModel *model, gdouble offset) { const gchar *cmd[] = {"seek", NULL, NULL}; gchar buf[G_ASCII_DTOSTR_BUF_SIZE]; g_ascii_dtostr(buf, G_ASCII_DTOSTR_BUF_SIZE, offset); cmd[1] = buf; celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); } void celluloid_model_load_audio_track(CelluloidModel *model, const gchar *filename) { celluloid_mpv_load_track (CELLULOID_MPV(model), filename, TRACK_TYPE_AUDIO); } void celluloid_model_load_subtitle_track( CelluloidModel *model, const gchar *filename ) { celluloid_mpv_load_track (CELLULOID_MPV(model), filename, TRACK_TYPE_SUBTITLE); } gdouble celluloid_model_get_time_position(CelluloidModel *model) { gdouble time_pos = 0.0; if(!model->idle_active) { celluloid_mpv_get_property( CELLULOID_MPV(model), "time-pos", MPV_FORMAT_DOUBLE, &time_pos ); } /* time-pos may become negative during seeks */ return MAX(0, time_pos); } void celluloid_model_set_playlist_position(CelluloidModel *model, gint64 position) { celluloid_player_set_playlist_position (CELLULOID_PLAYER(model), position); } void celluloid_model_remove_playlist_entry(CelluloidModel *model, gint64 position) { celluloid_player_remove_playlist_entry (CELLULOID_PLAYER(model), position); } void celluloid_model_move_playlist_entry( CelluloidModel *model, gint64 src, gint64 dst ) { celluloid_player_move_playlist_entry(CELLULOID_PLAYER(model), src, dst); } void celluloid_model_load_file( CelluloidModel *model, const gchar *uri, gboolean append ) { celluloid_mpv_load(CELLULOID_MPV(model), uri, append); /* Start playing when replacing the playlist, ie. not appending, or * adding the first file to the playlist. */ if(!append || model->playlist_count == 1) { celluloid_model_play(model); } } gboolean celluloid_model_get_use_opengl_cb(CelluloidModel *model) { return celluloid_mpv_get_use_opengl_cb(CELLULOID_MPV(model)); } void celluloid_model_initialize_gl(CelluloidModel *model) { celluloid_mpv_init_gl(CELLULOID_MPV(model)); } void celluloid_model_render_frame(CelluloidModel *model, gint width, gint height) { mpv_render_context *render_ctx; render_ctx = celluloid_mpv_get_render_context(CELLULOID_MPV(model)); if(render_ctx) { gint fbo = -1; glGetIntegerv(GL_FRAMEBUFFER_BINDING, &fbo); mpv_opengl_fbo opengl_fbo = {fbo, width, height, 0}; mpv_render_param params[] = { {MPV_RENDER_PARAM_OPENGL_FBO, &opengl_fbo}, {MPV_RENDER_PARAM_FLIP_Y, &(int){1}}, {0, NULL} }; mpv_render_context_render(render_ctx, params); } } void celluloid_model_get_video_geometry( CelluloidModel *model, gint64 *width, gint64 *height ) { CelluloidMpv *mpv = CELLULOID_MPV(model); celluloid_mpv_get_property(mpv, "dwidth", MPV_FORMAT_INT64, width); celluloid_mpv_get_property(mpv, "dheight", MPV_FORMAT_INT64, height); } gchar * celluloid_model_get_current_path(CelluloidModel *model) { CelluloidMpv *mpv = CELLULOID_MPV(model); gchar *path = celluloid_mpv_get_property_string(mpv, "path"); gchar *buf = g_strdup(path); mpv_free(path); return buf; } celluloid-0.18/src/celluloid-model.h000066400000000000000000000064041356026115400174370ustar00rootroot00000000000000/* * Copyright (c) 2017-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef MODEL_H #define MODEL_H #include #include "celluloid-mpv.h" #include "celluloid-player.h" G_BEGIN_DECLS #define CELLULOID_TYPE_MODEL (celluloid_model_get_type()) G_DECLARE_FINAL_TYPE(CelluloidModel, celluloid_model, CELLULOID, MODEL, CelluloidPlayer) CelluloidModel * celluloid_model_new(gint64 wid); void celluloid_model_initialize(CelluloidModel *model, const gchar *options); void celluloid_model_reset(CelluloidModel *model); void celluloid_model_quit(CelluloidModel *model); void celluloid_model_mouse(CelluloidModel *model, gint x, gint y); void celluloid_model_key_down(CelluloidModel *model, const gchar* keystr); void celluloid_model_key_up(CelluloidModel *model, const gchar* keystr); void celluloid_model_key_press(CelluloidModel *model, const gchar* keystr); void celluloid_model_reset_keys(CelluloidModel *model); void celluloid_model_play(CelluloidModel *model); void celluloid_model_pause(CelluloidModel *model); void celluloid_model_stop(CelluloidModel *model); void celluloid_model_forward(CelluloidModel *model); void celluloid_model_rewind(CelluloidModel *model); void celluloid_model_next_chapter(CelluloidModel *model); void celluloid_model_previous_chapter(CelluloidModel *model); void celluloid_model_next_playlist_entry(CelluloidModel *model); void celluloid_model_previous_playlist_entry(CelluloidModel *model); void celluloid_model_shuffle_playlist(CelluloidModel *model); void celluloid_model_seek(CelluloidModel *model, gdouble value); void celluloid_model_seek_offset(CelluloidModel *model, gdouble offset); void celluloid_model_load_audio_track(CelluloidModel *model, const gchar *filename); void celluloid_model_load_subtitle_track( CelluloidModel *model, const gchar *filename ); gdouble celluloid_model_get_time_position(CelluloidModel *model); void celluloid_model_set_playlist_position(CelluloidModel *model, gint64 position); void celluloid_model_remove_playlist_entry(CelluloidModel *model, gint64 position); void celluloid_model_move_playlist_entry( CelluloidModel *model, gint64 src, gint64 dst ); void celluloid_model_load_file( CelluloidModel *model, const gchar *uri, gboolean append ); gboolean celluloid_model_get_use_opengl_cb(CelluloidModel *model); void celluloid_model_initialize_gl(CelluloidModel *model); void celluloid_model_render_frame(CelluloidModel *model, gint width, gint height); void celluloid_model_get_video_geometry( CelluloidModel *model, gint64 *width, gint64 *height ); gchar * celluloid_model_get_current_path(CelluloidModel *model); G_END_DECLS #endif celluloid-0.18/src/celluloid-mpv-private.h000066400000000000000000000026001356026115400206030ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef MPV_OBJ_PRIVATE_H #define MPV_OBJ_PRIVATE_H #include G_BEGIN_DECLS typedef struct _CelluloidMpvPrivate CelluloidMpvPrivate; enum { PROP_0, PROP_WID, PROP_READY, N_PROPERTIES }; struct _CelluloidMpvPrivate { mpv_handle *mpv_ctx; mpv_render_context *render_ctx; gboolean ready; gchar *tmp_input_file; GSList *log_level_list; gboolean init_vo_config; gboolean force_opengl; gboolean use_opengl; gint64 wid; void *render_update_callback_data; void (*render_update_callback)(void *data); }; #define get_private(mpv) \ G_TYPE_INSTANCE_GET_PRIVATE(mpv, CELLULOID_TYPE_MPV, CelluloidMpvPrivate) void mpv_check_error(int status); G_END_DECLS #endif celluloid-0.18/src/celluloid-mpv-wrapper.c000066400000000000000000000132441356026115400206120ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include "celluloid-mpv-wrapper.h" #include "celluloid-mpv-private.h" gint celluloid_mpv_command(CelluloidMpv *mpv, const gchar **cmd) { CelluloidMpvPrivate *priv = get_private(mpv); gint rc = MPV_ERROR_UNINITIALIZED; if(priv->mpv_ctx) { rc = mpv_command(priv->mpv_ctx, cmd); } if(rc < 0) { gchar *cmd_str = g_strjoinv(" ", (gchar **)cmd); g_warning( "Failed to run mpv command \"%s\". Reason: %s.", cmd_str, mpv_error_string(rc) ); g_free(cmd_str); } return rc; } gint celluloid_mpv_command_async(CelluloidMpv *mpv, const gchar **cmd) { CelluloidMpvPrivate *priv = get_private(mpv); gint rc = MPV_ERROR_UNINITIALIZED; if(priv->mpv_ctx) { rc = mpv_command_async(priv->mpv_ctx, 0, cmd); } if(rc < 0) { gchar *cmd_str = g_strjoinv(" ", (gchar **)cmd); g_warning( "Failed to dispatch async mpv command \"%s\". " "Reason: %s.", cmd_str, mpv_error_string(rc) ); g_free(cmd_str); } return rc; } gint celluloid_mpv_command_string(CelluloidMpv *mpv, const gchar *cmd) { CelluloidMpvPrivate *priv = get_private(mpv); gint rc = MPV_ERROR_UNINITIALIZED; if(priv->mpv_ctx) { rc = mpv_command_string(priv->mpv_ctx, cmd); } if(rc < 0) { g_warning( "Failed to run mpv command string \"%s\". " "Reason: %s.", cmd, mpv_error_string(rc) ); } return rc; } gint celluloid_mpv_set_option_string( CelluloidMpv *mpv, const gchar *name, const gchar *value ) { return mpv_set_option_string(get_private(mpv)->mpv_ctx, name, value); } gint celluloid_mpv_get_property( CelluloidMpv *mpv, const gchar *name, mpv_format format, void *data ) { CelluloidMpvPrivate *priv = get_private(mpv); gint rc = MPV_ERROR_UNINITIALIZED; if(priv->mpv_ctx) { rc = mpv_get_property(priv->mpv_ctx, name, format, data); } if(rc < 0) { g_info( "Failed to retrieve property \"%s\" " "using mpv format %d. Reason: %s.", name, format, mpv_error_string(rc) ); } return rc; } gchar * celluloid_mpv_get_property_string(CelluloidMpv *mpv, const gchar *name) { CelluloidMpvPrivate *priv = get_private(mpv); gchar *value = NULL; if(priv->mpv_ctx) { value = mpv_get_property_string(priv->mpv_ctx, name); } if(!value) { g_info("Failed to retrieve property \"%s\" as string.", name); } return value; } gboolean celluloid_mpv_get_property_flag(CelluloidMpv *mpv, const gchar *name) { CelluloidMpvPrivate *priv = get_private(mpv); gboolean value = FALSE; gint rc = MPV_ERROR_UNINITIALIZED; if(priv->mpv_ctx) { rc = mpv_get_property (priv->mpv_ctx, name, MPV_FORMAT_FLAG, &value); } if(rc < 0) { g_info( "Failed to retrieve property \"%s\" as flag. " "Reason: %s.", name, mpv_error_string(rc) ); } return value; } gint celluloid_mpv_set_property( CelluloidMpv *mpv, const gchar *name, mpv_format format, void *data ) { CelluloidMpvPrivate *priv = get_private(mpv); gint rc = MPV_ERROR_UNINITIALIZED; if(priv->mpv_ctx) { rc = mpv_set_property(priv->mpv_ctx, name, format, data); } if(rc < 0) { g_info( "Failed to set property \"%s\" using mpv format %d. " "Reason: %s.", name, format, mpv_error_string(rc) ); } return rc; } gint celluloid_mpv_set_property_string( CelluloidMpv *mpv, const gchar *name, const char *data ) { CelluloidMpvPrivate *priv = get_private(mpv); gint rc = MPV_ERROR_UNINITIALIZED; if(priv->mpv_ctx) { rc = mpv_set_property_string(priv->mpv_ctx, name, data); } if(rc < 0) { g_info( "Failed to set property \"%s\" as string. Reason: %s.", name, mpv_error_string(rc) ); } return rc; } gint celluloid_mpv_set_property_flag( CelluloidMpv *mpv, const gchar *name, gboolean value ) { CelluloidMpvPrivate *priv = get_private(mpv); gint rc = MPV_ERROR_UNINITIALIZED; if(priv->mpv_ctx) { rc = mpv_set_property (priv->mpv_ctx, name, MPV_FORMAT_FLAG, &value); } if(rc < 0) { g_info( "Failed to set property \"%s\" as flag. Reason: %s.", name, mpv_error_string(rc) ); } return rc; } void celluloid_mpv_set_render_update_callback( CelluloidMpv *mpv, mpv_render_update_fn func, void *data ) { CelluloidMpvPrivate *priv = get_private(mpv); priv->render_update_callback = func; priv->render_update_callback_data = data; if(priv->render_ctx) { mpv_render_context_set_update_callback (priv->render_ctx, func, data); } } guint64 celluloid_mpv_render_context_update(CelluloidMpv *mpv) { return mpv_render_context_update(get_private(mpv)->render_ctx); } gint celluloid_mpv_load_config_file(CelluloidMpv *mpv, const gchar *filename) { return mpv_load_config_file(get_private(mpv)->mpv_ctx, filename); } gint celluloid_mpv_observe_property( CelluloidMpv *mpv, guint64 reply_userdata, const gchar *name, mpv_format format ) { return mpv_observe_property( get_private(mpv)->mpv_ctx, reply_userdata, name, format ); } gint celluloid_mpv_request_log_messages(CelluloidMpv *mpv, const gchar *min_level) { return mpv_request_log_messages(get_private(mpv)->mpv_ctx, min_level); } celluloid-0.18/src/celluloid-mpv-wrapper.h000066400000000000000000000045461356026115400206240ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef MPV_WRAPPER_H #define MPV_WRAPPER_H #include #include #include #include "celluloid-mpv.h" gint celluloid_mpv_command(CelluloidMpv *mpv, const gchar **cmd); gint celluloid_mpv_command_async(CelluloidMpv *mpv, const gchar **cmd); gint celluloid_mpv_command_string(CelluloidMpv *mpv, const gchar *cmd); gint celluloid_mpv_set_option_string( CelluloidMpv *mpv, const gchar *name, const gchar *value ); gint celluloid_mpv_get_property( CelluloidMpv *mpv, const gchar *name, mpv_format format, void *data ); gchar * celluloid_mpv_get_property_string(CelluloidMpv *mpv, const gchar *name); gboolean celluloid_mpv_get_property_flag(CelluloidMpv *mpv, const gchar *name); gint celluloid_mpv_set_property( CelluloidMpv *mpv, const gchar *name, mpv_format format, void *data ); gint celluloid_mpv_set_property_flag( CelluloidMpv *mpv, const gchar *name, gboolean value); gint celluloid_mpv_set_property_string( CelluloidMpv *mpv, const gchar *name, const char *data ); void celluloid_mpv_set_event_callback( CelluloidMpv *mpv, void (*func)(mpv_event *, void *), void *data ); void celluloid_mpv_set_render_update_callback( CelluloidMpv *mpv, mpv_render_update_fn func, void *data ); guint64 celluloid_mpv_render_context_update(CelluloidMpv *mpv); gint celluloid_mpv_load_config_file(CelluloidMpv *mpv, const gchar *filename); gint celluloid_mpv_observe_property( CelluloidMpv *mpv, guint64 reply_userdata, const gchar *name, mpv_format format ); gint celluloid_mpv_request_log_messages(CelluloidMpv *mpv, const gchar *min_level); #endif celluloid-0.18/src/celluloid-mpv.c000066400000000000000000000410641356026115400171350ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include #include #include #include #include #include #include #include #ifdef GDK_WINDOWING_X11 #include #include #endif #ifdef GDK_WINDOWING_WAYLAND #include #include #endif #ifdef GDK_WINDOWING_WIN32 #include #include #endif #include "celluloid-mpv.h" #include "celluloid-mpv-private.h" #include "celluloid-mpv-wrapper.h" #include "celluloid-common.h" #include "celluloid-def.h" #include "celluloid-marshal.h" static void * get_proc_address(void *fn_ctx, const gchar *name); static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ); static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ); static void dispose(GObject *object); static void finalize(GObject *object); static void wakeup_callback(void *data); static void mpv_property_changed(CelluloidMpv *mpv, const gchar *name, gpointer value); static void mpv_log_message( CelluloidMpv *mpv, mpv_log_level log_level, const gchar *prefix, const gchar *text ); static void mpv_event_notify(CelluloidMpv *mpv, gint event_id, gpointer event_data); static gboolean process_mpv_events(gpointer data); static gboolean check_mpv_version(const gchar *version); static gpointer get_wl_display(void); static gpointer get_x11_display(void); static void initialize(CelluloidMpv *mpv); static void load_file(CelluloidMpv *mpv, const gchar *uri, gboolean append); static void reset(CelluloidMpv *mpv); G_DEFINE_TYPE_WITH_PRIVATE(CelluloidMpv, celluloid_mpv, G_TYPE_OBJECT) static void * get_proc_address(void *fn_ctx, const gchar *name) { GdkDisplay *display = gdk_display_get_default(); #ifdef GDK_WINDOWING_WAYLAND if (GDK_IS_WAYLAND_DISPLAY(display)) return eglGetProcAddress(name); #endif #ifdef GDK_WINDOWING_X11 if (GDK_IS_X11_DISPLAY(display)) return (void *)(intptr_t) glXGetProcAddressARB((const GLubyte *)name); #endif #ifdef GDK_WINDOWING_WIN32 if (GDK_IS_WIN32_DISPLAY(display)) return wglGetProcAddress(name); #endif g_assert_not_reached(); return NULL; } static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ) { CelluloidMpvPrivate *priv = get_private(CELLULOID_MPV(object)); if(property_id == PROP_WID) { priv->wid = g_value_get_int64(value); } else if(property_id == PROP_READY) { priv->ready = g_value_get_boolean(value); } else { G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); } } static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ) { CelluloidMpvPrivate *priv = get_private(CELLULOID_MPV(object)); if(property_id == PROP_WID) { g_value_set_int64(value, priv->wid); } else if(property_id == PROP_READY) { g_value_set_boolean(value, priv->ready); } else { G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); } } static void dispose(GObject *object) { CelluloidMpv *mpv = CELLULOID_MPV(object); if(get_private(mpv)->mpv_ctx) { celluloid_mpv_quit(mpv); while(g_source_remove_by_user_data(object)); } G_OBJECT_CLASS(celluloid_mpv_parent_class)->dispose(object); } static void finalize(GObject *object) { G_OBJECT_CLASS(celluloid_mpv_parent_class)->finalize(object); } static void wakeup_callback(void *data) { g_idle_add_full(G_PRIORITY_HIGH_IDLE, process_mpv_events, data, NULL); } static void mpv_property_changed(CelluloidMpv *mpv, const gchar *name, gpointer value) { g_debug("Received mpv property change event for \"%s\"", name); } static void mpv_event_notify(CelluloidMpv *mpv, gint event_id, gpointer event_data) { if(event_id == MPV_EVENT_PROPERTY_CHANGE) { mpv_event_property *prop = event_data; g_signal_emit_by_name( mpv, "mpv-property-changed", prop->name, prop->data ); } else if(event_id == MPV_EVENT_IDLE) { celluloid_mpv_set_property_flag(mpv, "pause", TRUE); } else if(event_id == MPV_EVENT_END_FILE) { GSettings *settings = g_settings_new(CONFIG_ROOT); const gchar *ignore_key = "ignore-playback-errors"; mpv_event_end_file *ef_event = event_data; if( !g_settings_get_boolean(settings, ignore_key) && ef_event->reason == MPV_END_FILE_REASON_ERROR ) { const gchar *err; gchar *msg; err = mpv_error_string(ef_event->error); msg = g_strdup_printf ( _("Playback was terminated " "abnormally. Reason: %s."), err ); celluloid_mpv_set_property_flag(mpv, "pause", TRUE); g_signal_emit_by_name(mpv, "error", msg); g_free(msg); } g_object_unref(settings); } else if(event_id == MPV_EVENT_LOG_MESSAGE) { mpv_event_log_message* message = event_data; g_signal_emit_by_name( mpv, "mpv-log-message", message->log_level, message->prefix, message->text ); } else if(event_id == MPV_EVENT_CLIENT_MESSAGE) { mpv_event_client_message *event_cmsg = event_data; gchar* msg = strnjoinv( " ", event_cmsg->args, (gsize)event_cmsg->num_args ); g_signal_emit_by_name(mpv, "message", msg); g_free(msg); } else if(event_id == MPV_EVENT_SHUTDOWN) { g_signal_emit_by_name(mpv, "shutdown"); } } static gboolean process_mpv_events(gpointer data) { CelluloidMpv *mpv = data; CelluloidMpvPrivate *priv = get_private(mpv); gboolean done = !mpv; while(!done) { mpv_event *event = priv->mpv_ctx? mpv_wait_event(priv->mpv_ctx, 0): NULL; if(event) { if( !priv->mpv_ctx || event->event_id == MPV_EVENT_SHUTDOWN || event->event_id == MPV_EVENT_NONE ) { done = TRUE; } g_signal_emit_by_name( mpv, "mpv-event-notify", event->event_id, event->data ); } else { done = TRUE; } } return FALSE; } static gboolean check_mpv_version(const gchar *version) { guint64 min_version[] = {MIN_MPV_MAJOR, MIN_MPV_MINOR, MIN_MPV_PATCH}; const guint min_version_length = G_N_ELEMENTS(min_version); gchar **tokens = NULL; gboolean done = FALSE; gboolean result = TRUE; /* Skip to the version number */ if(strncmp(version, "mpv ", 4) == 0) { tokens = g_strsplit(version+4, ".", (gint)min_version_length); } done = !tokens || g_strv_length(tokens) != min_version_length; result = !done; for(guint i = 0; i < min_version_length && !done && result; i++) { gchar *endptr = NULL; guint64 token = g_ascii_strtoull(tokens[i], &endptr, 10); /* If the token is equal to the minimum, continue checking the * rest of the tokens. If it is greater, just skip them. */ result &= !(*endptr) && (token >= min_version[i]); done = result && (token >= min_version[i]); } g_strfreev(tokens); return result; } static gpointer get_wl_display(void) { gpointer wl_display = NULL; #ifdef GDK_WINDOWING_WAYLAND GdkDisplay *display = gdk_display_get_default(); if(GDK_IS_WAYLAND_DISPLAY(display)) { wl_display = gdk_wayland_display_get_wl_display(display); } #endif return wl_display; } static gpointer get_x11_display(void) { gpointer x11_display = NULL; #ifdef GDK_WINDOWING_X11 GdkDisplay *display = gdk_display_get_default(); if(GDK_IS_X11_DISPLAY(display)) { x11_display = gdk_x11_display_get_xdisplay(display); } #endif return x11_display; } static void initialize(CelluloidMpv *mpv) { CelluloidMpvPrivate *priv = get_private(mpv); gchar *current_vo = NULL; gchar *mpv_version = NULL; if(priv->wid < 0) { g_info("Forcing --vo=libmpv"); mpv_set_option_string(priv->mpv_ctx, "vo", "libmpv"); } else if(priv->wid == 0) { g_info("Forcing --vo=null"); mpv_set_option_string(priv->mpv_ctx, "vo", "null"); } else { g_debug("Attaching mpv window to wid %#x", (guint)priv->wid); mpv_set_option(priv->mpv_ctx, "wid", MPV_FORMAT_INT64, &priv->wid); } mpv_set_wakeup_callback(priv->mpv_ctx, wakeup_callback, mpv); mpv_initialize(priv->mpv_ctx); mpv_version = celluloid_mpv_get_property_string(mpv, "mpv-version"); current_vo = celluloid_mpv_get_property_string(mpv, "current-vo"); priv->use_opengl = (!current_vo && priv->wid != 0); g_info("Using %s", mpv_version); if(!check_mpv_version(mpv_version)) { g_warning( "Minimum mpv version requirement (%d.%d.%d) not met", MIN_MPV_MAJOR, MIN_MPV_MINOR, MIN_MPV_PATCH ); } priv->ready = TRUE; g_object_notify(G_OBJECT(mpv), "ready"); mpv_free(current_vo); mpv_free(mpv_version); } static void load_file(CelluloidMpv *mpv, const gchar *uri, gboolean append) { CelluloidMpvPrivate *priv = get_private(mpv); gchar *path = get_path_from_uri(uri); const gchar *load_cmd[] = {"loadfile", path, NULL, NULL}; gint64 playlist_count = 0; g_assert(uri); g_info( "Loading file (append=%s): %s", append?"TRUE":"FALSE", uri); mpv_get_property( priv->mpv_ctx, "playlist-count", MPV_FORMAT_INT64, &playlist_count ); load_cmd[2] = (append && playlist_count > 0)?"append":"replace"; if(!append) { celluloid_mpv_set_property_flag(mpv, "pause", FALSE); } g_assert(priv->mpv_ctx); mpv_request_event(priv->mpv_ctx, MPV_EVENT_END_FILE, 0); mpv_command(priv->mpv_ctx, load_cmd); mpv_request_event(priv->mpv_ctx, MPV_EVENT_END_FILE, 1); g_free(path); } static void reset(CelluloidMpv *mpv) { CelluloidMpvPrivate *priv = get_private(mpv); gchar *loop_file_str; gchar *loop_playlist_str; gboolean loop_file; gboolean loop_playlist; loop_file_str = celluloid_mpv_get_property_string (mpv, "loop-file"); loop_playlist_str = celluloid_mpv_get_property_string (mpv, "loop-playlist"); loop_file = (g_strcmp0(loop_file_str, "inf") == 0); loop_playlist = (g_strcmp0(loop_playlist_str, "inf") == 0); mpv_free(loop_file_str); mpv_free(loop_playlist_str); /* Reset priv->mpv_ctx */ priv->ready = FALSE; g_object_notify(G_OBJECT(mpv), "ready"); celluloid_mpv_command_string(mpv, "write-watch-later-config"); celluloid_mpv_quit(mpv); priv->mpv_ctx = mpv_create(); celluloid_mpv_initialize(mpv); celluloid_mpv_set_render_update_callback ( mpv, priv->render_update_callback, priv->render_update_callback_data ); celluloid_mpv_set_property_string (mpv, "loop-file", loop_file?"inf":"no"); celluloid_mpv_set_property_string (mpv, "loop-playlist", loop_playlist?"inf":"no"); } static void mpv_log_message( CelluloidMpv *mpv, mpv_log_level log_level, const gchar *prefix, const gchar *text ) { } static void celluloid_mpv_class_init(CelluloidMpvClass* klass) { GObjectClass *obj_class = G_OBJECT_CLASS(klass); GParamSpec *pspec = NULL; klass->mpv_event_notify = mpv_event_notify; klass->mpv_log_message = mpv_log_message; klass->mpv_property_changed = mpv_property_changed; klass->initialize = initialize; klass->load_file = load_file; klass->reset = reset; obj_class->set_property = set_property; obj_class->get_property = get_property; obj_class->dispose = dispose; obj_class->finalize = finalize; pspec = g_param_spec_int64 ( "wid", "WID", "The ID of the window to attach to", G_MININT64, G_MAXINT64, -1, G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); g_object_class_install_property(obj_class, PROP_WID, pspec); pspec = g_param_spec_boolean ( "ready", "Ready", "Whether mpv is initialized and ready to receive commands", FALSE, G_PARAM_READABLE ); g_object_class_install_property(obj_class, PROP_READY, pspec); g_signal_new( "error", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING ); g_signal_new( "mpv-event-notify", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET(CelluloidMpvClass, mpv_event_notify), NULL, NULL, g_cclosure_gen_marshal_VOID__INT_POINTER, G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_POINTER ); g_signal_new( "mpv-log-message", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET(CelluloidMpvClass, mpv_log_message), NULL, NULL, g_cclosure_gen_marshal_VOID__INT_STRING_STRING, G_TYPE_NONE, 3, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING ); g_signal_new( "mpv-property-changed", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET(CelluloidMpvClass, mpv_property_changed), NULL, NULL, g_cclosure_gen_marshal_VOID__STRING_POINTER, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_POINTER ); g_signal_new( "message", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING ); g_signal_new( "window-resize", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_gen_marshal_VOID__INT64_INT64, G_TYPE_NONE, 2, G_TYPE_INT64, G_TYPE_INT64 ); g_signal_new( "window-move", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_gen_marshal_VOID__BOOLEAN_BOOLEAN_POINTER_POINTER, G_TYPE_NONE, 4, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_POINTER, G_TYPE_POINTER ); g_signal_new( "shutdown", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); } static void celluloid_mpv_init(CelluloidMpv *mpv) { CelluloidMpvPrivate *priv = get_private(mpv); setlocale(LC_NUMERIC, "C"); priv->mpv_ctx = mpv_create(); priv->render_ctx = NULL; priv->ready = FALSE; priv->init_vo_config = TRUE; priv->use_opengl = FALSE; priv->wid = -1; priv->render_update_callback_data = NULL; priv->render_update_callback = NULL; } CelluloidMpv * celluloid_mpv_new(gint64 wid) { return CELLULOID_MPV(g_object_new(celluloid_mpv_get_type(), "wid", wid, NULL)); } inline mpv_render_context * celluloid_mpv_get_render_context(CelluloidMpv *mpv) { return get_private(mpv)->render_ctx; } inline gboolean celluloid_mpv_get_use_opengl_cb(CelluloidMpv *mpv) { return get_private(mpv)->use_opengl; } void celluloid_mpv_initialize(CelluloidMpv *mpv) { CELLULOID_MPV_GET_CLASS(mpv)->initialize(mpv); } void celluloid_mpv_init_gl(CelluloidMpv *mpv) { CelluloidMpvPrivate *priv = get_private(mpv); mpv_opengl_init_params init_params = {.get_proc_address = get_proc_address}; mpv_render_param params[] = { {MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL}, {MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &init_params}, {MPV_RENDER_PARAM_WL_DISPLAY, get_wl_display()}, {MPV_RENDER_PARAM_X11_DISPLAY, get_x11_display()}, {0, NULL} }; gint rc = mpv_render_context_create( &priv->render_ctx, priv->mpv_ctx, params ); if(rc >= 0) { g_debug("Initialized render context"); } else { g_critical("Failed to initialize render context"); } } void celluloid_mpv_reset(CelluloidMpv *mpv) { CELLULOID_MPV_GET_CLASS(mpv)->reset(mpv); } void celluloid_mpv_quit(CelluloidMpv *mpv) { CelluloidMpvPrivate *priv = get_private(mpv); g_info("Terminating mpv"); celluloid_mpv_command_string(mpv, "quit"); if(priv->render_ctx) { g_debug("Uninitializing render context"); mpv_render_context_free(priv->render_ctx); priv->render_ctx = NULL; } g_assert(priv->mpv_ctx); mpv_terminate_destroy(priv->mpv_ctx); priv->mpv_ctx = NULL; } void celluloid_mpv_load_track(CelluloidMpv *mpv, const gchar *uri, TrackType type) { const gchar *cmd[3] = {NULL}; gchar *path = g_filename_from_uri(uri, NULL, NULL); if(type == TRACK_TYPE_AUDIO) { cmd[0] = "audio-add"; } else if(type == TRACK_TYPE_SUBTITLE) { cmd[0] = "sub-add"; } else { g_assert_not_reached(); } cmd[1] = path?:uri; g_debug("Loading external track %s with type %d", cmd[1], type); celluloid_mpv_command(mpv, cmd); g_free(path); } void celluloid_mpv_load_file(CelluloidMpv *mpv, const gchar *uri, gboolean append) { CELLULOID_MPV_GET_CLASS(mpv)->load_file(mpv, uri, append); } void celluloid_mpv_load(CelluloidMpv *mpv, const gchar *uri, gboolean append) { const gchar *subtitle_exts[] = SUBTITLE_EXTS; if(extension_matches(uri, subtitle_exts)) { celluloid_mpv_load_track(mpv, uri, TRACK_TYPE_SUBTITLE); } else { celluloid_mpv_load_file(mpv, uri, append); } } celluloid-0.18/src/celluloid-mpv.h000066400000000000000000000042271356026115400171420ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef MPV_H #define MPV_H #include #include #include #include #include "celluloid-common.h" G_BEGIN_DECLS #define CELLULOID_TYPE_MPV (celluloid_mpv_get_type()) G_DECLARE_DERIVABLE_TYPE(CelluloidMpv, celluloid_mpv, CELLULOID, MPV, GObject) struct _CelluloidMpvClass { GObjectClass parent_class; void (*mpv_event_notify)( CelluloidMpv *mpv, gint event_id, gpointer event_data ); void (*mpv_log_message)( CelluloidMpv *mpv, mpv_log_level log_level, const gchar *prefix, const gchar *text ); void (*mpv_property_changed)( CelluloidMpv *mpv, const gchar *name, gpointer value ); void (*initialize)(CelluloidMpv *mpv); void (*load_file)(CelluloidMpv *mpv, const gchar *uri, gboolean append); void (*reset)(CelluloidMpv *mpv); }; CelluloidMpv * celluloid_mpv_new(gint64 wid); mpv_render_context * celluloid_mpv_get_render_context(CelluloidMpv *mpv); gboolean celluloid_mpv_get_use_opengl_cb(CelluloidMpv *mpv); void celluloid_mpv_initialize(CelluloidMpv *mpv); void celluloid_mpv_init_gl(CelluloidMpv *mpv); void celluloid_mpv_reset(CelluloidMpv *mpv); void celluloid_mpv_quit(CelluloidMpv *mpv); void celluloid_mpv_load_track(CelluloidMpv *mpv, const gchar *uri, TrackType type); void celluloid_mpv_load_file(CelluloidMpv *mpv, const gchar *uri, gboolean append); void celluloid_mpv_load(CelluloidMpv *mpv, const gchar *uri, gboolean append); G_END_DECLS #endif celluloid-0.18/src/celluloid-open-location-dialog.c000066400000000000000000000127351356026115400223420ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include "celluloid-open-location-dialog.h" #include "celluloid-main-window.h" struct _CelluloidOpenLocationDialog { GtkDialog parent_instance; GtkWidget *content_area; GtkWidget *content_box; GtkWidget *loc_label; GtkWidget *loc_entry; }; struct _CelluloidOpenLocationDialogClass { GtkDialogClass parent_class; }; G_DEFINE_TYPE(CelluloidOpenLocationDialog, celluloid_open_location_dialog, GTK_TYPE_DIALOG) static gboolean key_press_handler (GtkWidget *widget, GdkEventKey *event) { guint keyval = event->keyval; guint state = event->state; const guint mod_mask = GDK_MODIFIER_MASK &~(GDK_SHIFT_MASK |GDK_LOCK_MASK |GDK_MOD2_MASK |GDK_MOD3_MASK |GDK_MOD4_MASK |GDK_MOD5_MASK); if((state&mod_mask) == 0 && keyval == GDK_KEY_Return) { gtk_dialog_response(GTK_DIALOG(widget), GTK_RESPONSE_ACCEPT); } return GTK_WIDGET_CLASS(celluloid_open_location_dialog_parent_class) ->key_press_event (widget, event); } static GtkClipboard * get_clipboard(CelluloidOpenLocationDialog *dlg) { const gchar *const clipboard_names[] = {"CLIPBOARD", "PRIMARY", NULL}; GtkClipboard *clipboard = NULL; for(gint i = 0; clipboard_names[i] && !clipboard; i++) { GdkAtom atom = gdk_atom_intern(clipboard_names[i], FALSE); clipboard = gtk_clipboard_get(atom); if(!gtk_clipboard_wait_is_text_available(clipboard)) { clipboard = NULL; } } return clipboard; } static void clipboard_text_received_handler( GtkClipboard *clipboard, const gchar *text, gpointer data ) { CelluloidOpenLocationDialog *dlg = data; if(text && *text && (g_path_is_absolute(text) || strstr(text, "://") != NULL)) { gtk_entry_set_text(GTK_ENTRY(dlg->loc_entry), text); gtk_editable_select_region(GTK_EDITABLE(dlg->loc_entry), 0, -1); } g_object_unref(dlg); } static void load_text_from_clipboard(CelluloidOpenLocationDialog *dlg) { g_object_ref(dlg); gtk_clipboard_request_text( get_clipboard(dlg), clipboard_text_received_handler, dlg ); } static void celluloid_open_location_dialog_class_init(CelluloidOpenLocationDialogClass *klass) { GtkWidgetClass *wid_class = GTK_WIDGET_CLASS(klass); wid_class->key_press_event = key_press_handler; } static void celluloid_open_location_dialog_init(CelluloidOpenLocationDialog *dlg) { GdkGeometry geom; geom.max_width = G_MAXINT; geom.max_height = 0; dlg->content_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6); dlg->content_area = gtk_dialog_get_content_area(GTK_DIALOG(dlg)); dlg->loc_label = gtk_label_new(_("Location:")); dlg->loc_entry = gtk_entry_new(); gtk_dialog_add_buttons( GTK_DIALOG(dlg), _("_Cancel"), GTK_RESPONSE_REJECT, _("_Open"), GTK_RESPONSE_ACCEPT, NULL ); gtk_window_set_geometry_hints( GTK_WINDOW(dlg), GTK_WIDGET(dlg), &geom, GDK_HINT_MAX_SIZE ); gtk_window_set_modal(GTK_WINDOW(dlg), 1); gtk_container_set_border_width(GTK_CONTAINER(dlg->content_area), 12); if(!gtk_dialog_get_header_bar(GTK_DIALOG(dlg))) { gtk_widget_set_margin_bottom(dlg->content_box, 6); } gtk_window_set_geometry_hints( GTK_WINDOW(dlg), GTK_WIDGET(dlg), &geom, GDK_HINT_MAX_SIZE ); gtk_container_add(GTK_CONTAINER(dlg->content_area), dlg->content_box); gtk_box_pack_start( GTK_BOX(dlg->content_box), dlg->loc_label, FALSE, FALSE, 0 ); gtk_box_pack_start( GTK_BOX(dlg->content_box), dlg->loc_entry, TRUE, TRUE, 0 ); gtk_window_set_default_size(GTK_WINDOW(dlg), 350, -1); gtk_dialog_set_default_response (GTK_DIALOG(dlg), GTK_RESPONSE_ACCEPT); } GtkWidget * celluloid_open_location_dialog_new(GtkWindow *parent, const gchar *title) { GtkWidget *dlg; GtkWidget *header_bar; gboolean csd_enabled; csd_enabled = celluloid_main_window_get_csd_enabled (CELLULOID_MAIN_WINDOW(parent)); dlg = g_object_new( celluloid_open_location_dialog_get_type(), "use-header-bar", csd_enabled, "title", title, NULL ); header_bar = gtk_dialog_get_header_bar(GTK_DIALOG(dlg)); if(header_bar) { GtkWidget *cancel_btn = gtk_dialog_get_widget_for_response (GTK_DIALOG(dlg), GTK_RESPONSE_REJECT); gtk_container_child_set( GTK_CONTAINER(header_bar), cancel_btn, "pack-type", GTK_PACK_START, NULL ); gtk_header_bar_set_show_close_button (GTK_HEADER_BAR(header_bar), FALSE); } load_text_from_clipboard(CELLULOID_OPEN_LOCATION_DIALOG(dlg)); gtk_widget_hide_on_delete(dlg); gtk_window_set_transient_for(GTK_WINDOW(dlg), parent); gtk_widget_show_all(dlg); return dlg; } const gchar * celluloid_open_location_dialog_get_string(CelluloidOpenLocationDialog *dlg) { return gtk_entry_get_text(GTK_ENTRY(dlg->loc_entry)); } guint64 celluloid_open_location_dialog_get_string_length(CelluloidOpenLocationDialog *dlg) { return gtk_entry_get_text_length(GTK_ENTRY(dlg->loc_entry)); } celluloid-0.18/src/celluloid-open-location-dialog.h000066400000000000000000000025331356026115400223420ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef OPEN_LOCATION_DIALOG_H #define OPEN_LOCATION_DIALOG_H #include #include #include G_BEGIN_DECLS #define CELLULOID_TYPE_OPEN_LOC_DIALOG (celluloid_open_location_dialog_get_type ()) G_DECLARE_FINAL_TYPE(CelluloidOpenLocationDialog, celluloid_open_location_dialog, CELLULOID, OPEN_LOCATION_DIALOG, GtkDialog) GtkWidget * celluloid_open_location_dialog_new(GtkWindow *parent, const gchar *title); const gchar * celluloid_open_location_dialog_get_string(CelluloidOpenLocationDialog *dlg); guint64 celluloid_open_location_dialog_get_string_length(CelluloidOpenLocationDialog *dlg); G_END_DECLS #endif celluloid-0.18/src/celluloid-player-options.c000066400000000000000000000244261356026115400213230ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include #include #include "celluloid-player-options.h" #include "celluloid-mpv.h" #include "celluloid-mpv-private.h" #include "celluloid-mpv-wrapper.h" #include "celluloid-def.h" static GdkRectangle get_monitor_geometry(CelluloidMainWindow *window); static gboolean parse_geom_token(const gchar **iter, GValue *value); static gboolean parse_dim_string( const gchar *geom_str, GdkRectangle monitor_geom, gint64 dim[2] ); static gboolean parse_pos_token_prefix(const gchar **iter, gchar **prefix); static gboolean parse_pos_token(const gchar **iter, GValue *value, gboolean *flip); static gboolean parse_pos_string(const gchar *geom_str, gboolean flip[2], GValue pos[2]); static void parse_geom_string( const gchar *geom_str, GdkRectangle monitor_geom, gboolean flip[2], GValue pos[2], gint64 dim[2] ); static gboolean get_video_dimensions(CelluloidMpv *mpv, gint64 dim[2]); static gboolean handle_window_scale(CelluloidMpv *mpv, gint64 dim[2]); static gboolean handle_autofit(CelluloidMpv *mpv, gint64 dim[2], GdkRectangle monitor_geom); static void handle_geometry(CelluloidPlayer *player, GdkRectangle monitor_geom); static void handle_msg_level(CelluloidPlayer *player); static void ready_handler(GObject *object, GParamSpec *pspec, gpointer data); static void autofit_handler(CelluloidMpv *mpv, gpointer data); static GdkRectangle get_monitor_geometry(CelluloidMainWindow *window) { GdkRectangle result; GdkWindow *gdkwindow = gtk_widget_get_window(GTK_WIDGET(window)); GdkDisplay *display = gdk_window_get_display(gdkwindow); GdkMonitor *monitor = gdk_display_get_monitor_at_window (display, gdkwindow); gdk_monitor_get_geometry(monitor, &result); return result; } static gboolean parse_geom_token(const gchar **iter, GValue *value) { gchar *end = NULL; gint64 token_value = g_ascii_strtoll(*iter, &end, 10); gboolean rc = FALSE; if(end) { if(*end == '%') { g_value_init(value, G_TYPE_DOUBLE); g_value_set_double(value, (gdouble)token_value/100.0); end++; } else { g_value_init(value, G_TYPE_INT64); g_value_set_int64(value, token_value); } rc = !!end && *iter != end; *iter = end; } return rc; } static gboolean parse_dim_string( const gchar *geom_str, GdkRectangle monitor_geom, gint64 dim[2] ) { gint screen_dim[2] = {0, 0}; gdouble multiplier[2] = {-1, -1}; gchar **tokens = g_strsplit(geom_str, "x", 2); gint i = -1; dim[0] = -1; dim[1] = -1; screen_dim[0] = monitor_geom.width; screen_dim[1] = monitor_geom.height; while(tokens && tokens[++i] && i < 3) { gint value = (gint)g_ascii_strtoll(tokens[i], NULL, 0); if((i == 0 && value > 0) || i == 1) { if(tokens[i][strnlen(tokens[i], 256)-1] == '%') { multiplier[i] = value/100.0; } else if(i == 1 && multiplier[0] != -1) { multiplier[i] = multiplier[0]; } if(multiplier[i] == -1) { dim[i] = value; } else { dim[i] = (gint)(multiplier[i]*screen_dim[i]); } } } g_strfreev(tokens); return (dim[0] > 0 && dim[1] > 0); } static gboolean parse_pos_token_prefix(const gchar **iter, gchar **prefix) { const gchar *start = *iter; const gchar *end = *iter; gboolean rc = FALSE; while(*end && (*end == '+' || *end == '-')) { end++; } rc = (end-start <= 2); if(rc) { if(end-start == 2) { end--; } *prefix = g_strndup(start, (gsize)(end-start)); *iter = end; } return rc; } static gboolean parse_pos_token(const gchar **iter, GValue *value, gboolean *flip) { gchar *prefix = NULL; gboolean rc = TRUE; rc = rc && parse_pos_token_prefix(iter, &prefix); rc = rc && parse_geom_token(iter, value); *flip = (prefix && *prefix == '-'); g_free(prefix); return rc; } static gboolean parse_pos_string(const gchar *geom_str, gboolean flip[2], GValue pos[2]) { gboolean rc = TRUE; rc = rc && parse_pos_token(&geom_str, &pos[0], &flip[0]); rc = rc && parse_pos_token(&geom_str, &pos[1], &flip[1]); return rc; } static void parse_geom_string( const gchar *geom_str, GdkRectangle monitor_geom, gboolean flip[2], GValue pos[2], gint64 dim[2] ) { if(!!geom_str) { if(geom_str[0] != '+' && geom_str[0] != '-') { parse_dim_string(geom_str, monitor_geom, dim); } /* Move the beginning of the string to the 'position' section */ while(*geom_str && *geom_str != '+' && *geom_str != '-') { geom_str++; } parse_pos_string(geom_str, flip, pos); } } static gboolean get_video_dimensions(CelluloidMpv *mpv, gint64 dim[2]) { CelluloidMpvPrivate *priv = get_private(mpv); gint rc = 0; rc |= mpv_get_property(priv->mpv_ctx, "dwidth", MPV_FORMAT_INT64, &dim[0]); rc |= mpv_get_property(priv->mpv_ctx, "dheight", MPV_FORMAT_INT64, &dim[1]); return (rc >= 0); } static void ready_handler(GObject *object, GParamSpec *pspec, gpointer data) { CelluloidPlayer *player = CELLULOID_PLAYER(object); GdkRectangle monitor_geom = get_monitor_geometry(data); handle_geometry(player, monitor_geom); handle_msg_level(player); } static void autofit_handler(CelluloidMpv *mpv, gpointer data) { gint64 dim[2] = {0, 0}; GdkRectangle monitor_geom = get_monitor_geometry(data); if(get_video_dimensions(mpv, dim)) { handle_window_scale(mpv, dim); handle_autofit(mpv, dim, monitor_geom); } if(dim[0] > 0 && dim[1] > 0) { g_info( "Resizing window to %"G_GINT64_FORMAT"x%"G_GINT64_FORMAT, dim[0], dim[1] ); g_signal_emit_by_name(mpv, "window-resize", dim[0], dim[1]); } } static gboolean handle_window_scale(CelluloidMpv *mpv, gint64 dim[2]) { gchar *scale_str; gboolean scale_set; scale_str = mpv_get_property_string (get_private(mpv)->mpv_ctx, "options/window-scale"); scale_set = scale_str && *scale_str; if(scale_set) { gdouble scale; g_debug("Retrieved option --window-scale=%s", scale_str); /* This should never fail since mpv_set_option() will * refuse to set invalid values. */ scale = g_ascii_strtod(scale_str, NULL); dim[0] = (gint64)(scale*(gdouble)dim[0]); dim[1] = (gint64)(scale*(gdouble)dim[1]); } mpv_free(scale_str); return scale_set; } static gboolean handle_autofit(CelluloidMpv *mpv, gint64 dim[2], GdkRectangle monitor_geom) { CelluloidMpvPrivate *priv = get_private(mpv); gint64 autofit_dim[2] = {0, 0}; gint64 larger_dim[2] = {G_MAXINT64, G_MAXINT64}; gint64 smaller_dim[2] = {0, 0}; gchar *autofit_str = NULL; gchar *larger_str = NULL; gchar *smaller_str = NULL; gboolean autofit_set = FALSE; gboolean larger_set = FALSE; gboolean smaller_set = FALSE; gboolean updated = FALSE; autofit_str = mpv_get_property_string (priv->mpv_ctx, "options/autofit"); larger_str = mpv_get_property_string (priv->mpv_ctx, "options/autofit-larger"); smaller_str = mpv_get_property_string (priv->mpv_ctx, "options/autofit-smaller"); autofit_set = autofit_str && *autofit_str; larger_set = larger_str && *larger_str; smaller_set = smaller_str && *smaller_str; updated = (autofit_set || larger_set || smaller_set); if(autofit_set) { g_debug("Retrieved option --autofit=%s", autofit_str); parse_dim_string(autofit_str, monitor_geom, autofit_dim); } if(larger_set) { g_debug("Retrieved option --autofit-larger=%s", larger_str); parse_dim_string(larger_str, monitor_geom, larger_dim); } if(smaller_set) { g_debug("Retrieved option --autofit-smaller=%s", smaller_str); parse_dim_string(smaller_str, monitor_geom, smaller_dim); } if(updated) { gint64 orig_dim[2] = {0, 0}; gdouble ratio = 1.0; memcpy(orig_dim, dim, 2*sizeof(gint64)); autofit_dim[0] = CLAMP( autofit_dim[0], smaller_dim[0], larger_dim[0] ); autofit_dim[1] = CLAMP( autofit_dim[1], smaller_dim[1], larger_dim[1] ); dim[0] = CLAMP(orig_dim[0], autofit_dim[0], larger_dim[0]); dim[1] = CLAMP(orig_dim[1], autofit_dim[1], larger_dim[1]); ratio = MIN( (gdouble)dim[0]/(gdouble)orig_dim[0], (gdouble)dim[1]/(gdouble)orig_dim[1] ); dim[0] = (gint64)(ratio*(gdouble)orig_dim[0]); dim[1] = (gint64)(ratio*(gdouble)orig_dim[1]); } mpv_free(autofit_str); mpv_free(larger_str); mpv_free(smaller_str); return updated; } static void handle_geometry(CelluloidPlayer *player, GdkRectangle monitor_geom) { gchar *geometry_str = celluloid_mpv_get_property_string (CELLULOID_MPV(player), "options/geometry"); if(geometry_str) { gint64 dim[2] = {0, 0}; GValue pos[2] = {G_VALUE_INIT, G_VALUE_INIT}; gboolean flip[2] = {FALSE, FALSE}; parse_geom_string (geometry_str, monitor_geom, flip, pos, dim); if(G_IS_VALUE(&pos[0]) && G_IS_VALUE(&pos[1])) { g_signal_emit_by_name( player, "window-move", flip[0], flip[1], &pos[0], &pos[1] ); } if(dim[0] > 0 && dim[1] > 0) { g_signal_emit_by_name( player, "window-resize", dim[0], dim[1] ); } } mpv_free(geometry_str); } static void handle_msg_level(CelluloidPlayer *player) { CelluloidMpv *mpv = CELLULOID_MPV(player); gchar *optbuf = NULL; gchar **tokens = NULL; gint i; optbuf = celluloid_mpv_get_property_string(mpv, "options/msg-level"); if(optbuf) { tokens = g_strsplit(optbuf, ",", 0); } for(i = 0; tokens && tokens[i]; i++) { gchar **pair = g_strsplit(tokens[i], "=", 2); celluloid_player_set_log_level(player, pair[0], pair[1]); g_strfreev(pair); } mpv_free(optbuf); g_strfreev(tokens); } void module_log_level_free(module_log_level *level) { g_free(level->prefix); g_free(level); } void celluloid_player_options_init( CelluloidPlayer *player, CelluloidMainWindow *window ) { g_signal_connect( player, "notify::ready", G_CALLBACK(ready_handler), window ); g_signal_connect( player, "autofit", G_CALLBACK(autofit_handler), window ); } celluloid-0.18/src/celluloid-player-options.h000066400000000000000000000022441356026115400213220ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef PLAYER_OPTIONS_H #define PLAYER_OPTIONS_H #include #include #include "celluloid-player.h" #include "celluloid-main-window.h" G_BEGIN_DECLS typedef struct module_log_level module_log_level; struct module_log_level { gchar *prefix; mpv_log_level level; }; void module_log_level_free(module_log_level *level); void celluloid_player_options_init( CelluloidPlayer *player, CelluloidMainWindow *window ); G_END_DECLS #endif celluloid-0.18/src/celluloid-player-private.h000066400000000000000000000027511356026115400213040ustar00rootroot00000000000000/* * Copyright (c) 2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef PLAYER_PRIVATE_H #define PLAYER_PRIVATE_H #include #include "celluloid-metadata-cache.h" G_BEGIN_DECLS typedef struct _CelluloidPlayerPrivate CelluloidPlayerPrivate; enum { PROP_0, PROP_PLAYLIST, PROP_METADATA, PROP_TRACK_LIST, PROP_DISC_LIST, PROP_EXTRA_OPTIONS, N_PROPERTIES }; struct _CelluloidPlayerPrivate { CelluloidMpv parent; CelluloidMetadataCache *cache; GVolumeMonitor *monitor; GPtrArray *playlist; GPtrArray *metadata; GPtrArray *track_list; GPtrArray *disc_list; GHashTable *log_levels; gboolean loaded; gboolean new_file; gboolean init_vo_config; gchar *tmp_input_config; gchar *extra_options; }; #define get_private(player) \ G_TYPE_INSTANCE_GET_PRIVATE(player, CELLULOID_TYPE_PLAYER, CelluloidPlayerPrivate) G_END_DECLS #endif celluloid-0.18/src/celluloid-player.c000066400000000000000000001016231356026115400176250ustar00rootroot00000000000000/* * Copyright (c) 2017-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include "celluloid-player.h" #include "celluloid-player-private.h" #include "celluloid-player-options.h" #include "celluloid-marshal.h" #include "celluloid-metadata-cache.h" #include "celluloid-mpv-wrapper.h" #include "celluloid-def.h" static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ); static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ); static void finalize(GObject *object); static void autofit(CelluloidPlayer *player); static void metadata_update(CelluloidPlayer *player, gint64 pos); static void mpv_event_notify(CelluloidMpv *mpv, gint event_id, gpointer event_data); static void mpv_log_message( CelluloidMpv *mpv, mpv_log_level log_level, const gchar *prefix, const gchar *text ); static void mpv_property_changed(CelluloidMpv *mpv, const gchar *name, gpointer value); static void observe_properties(CelluloidMpv *mpv); static void apply_default_options(CelluloidMpv *mpv); static void initialize(CelluloidMpv *mpv); static gint apply_options_array_string(CelluloidMpv *mpv, gchar *args); static void apply_extra_options(CelluloidPlayer *player); static void load_file(CelluloidMpv *mpv, const gchar *uri, gboolean append); static void reset(CelluloidMpv *mpv); static void load_input_conf(CelluloidPlayer *player, const gchar *input_conf); static void load_config_file(CelluloidMpv *mpv); static void load_input_config_file(CelluloidPlayer *player); static void load_scripts(CelluloidPlayer *player); static CelluloidTrack * parse_track_entry(mpv_node_list *node); static void add_file_to_playlist(CelluloidPlayer *player, const gchar *uri); static void load_from_playlist(CelluloidPlayer *player); static CelluloidPlaylistEntry * parse_playlist_entry(mpv_node_list *node); static void update_playlist(CelluloidPlayer *player); static void update_metadata(CelluloidPlayer *player); static void update_track_list(CelluloidPlayer *player); static void cache_update_handler( CelluloidMetadataCache *cache, const gchar *uri, gpointer data ); static void mount_added_handler(GVolumeMonitor *monitor, GMount *mount, gpointer data); static void volume_removed_handler(GVolumeMonitor *monitor, GVolume *volume, gpointer data); static void guess_content_handler(GMount *mount, GAsyncResult *res, gpointer data); G_DEFINE_TYPE_WITH_PRIVATE(CelluloidPlayer, celluloid_player, CELLULOID_TYPE_MPV) static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ) { CelluloidPlayerPrivate *priv = get_private(object); switch(property_id) { case PROP_PLAYLIST: case PROP_METADATA: case PROP_TRACK_LIST: case PROP_DISC_LIST: g_critical("Attempted to set read-only property"); break; case PROP_EXTRA_OPTIONS: g_free(priv->extra_options); priv->extra_options = g_value_dup_string(value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ) { CelluloidPlayerPrivate *priv = get_private(object); switch(property_id) { case PROP_PLAYLIST: g_value_set_pointer(value, priv->playlist); break; case PROP_METADATA: g_value_set_pointer(value, priv->metadata); break; case PROP_TRACK_LIST: g_value_set_pointer(value, priv->track_list); break; case PROP_DISC_LIST: g_value_set_pointer(value, priv->disc_list); break; case PROP_EXTRA_OPTIONS: g_value_set_string(value, priv->extra_options); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void finalize(GObject *object) { CelluloidPlayerPrivate *priv = get_private(object); if(priv->tmp_input_config) { g_unlink(priv->tmp_input_config); } g_free(priv->tmp_input_config); g_free(priv->extra_options); g_ptr_array_free(priv->playlist, TRUE); g_ptr_array_free(priv->metadata, TRUE); g_ptr_array_free(priv->track_list, TRUE); g_ptr_array_free(priv->disc_list, TRUE); G_OBJECT_CLASS(celluloid_player_parent_class)->finalize(object); } static void autofit(CelluloidPlayer *player) { } static void metadata_update(CelluloidPlayer *player, gint64 pos) { } static void mpv_event_notify(CelluloidMpv *mpv, gint event_id, gpointer event_data) { CelluloidPlayerPrivate *priv = get_private(mpv); if(event_id == MPV_EVENT_START_FILE) { gboolean vo_configured = FALSE; celluloid_mpv_get_property( mpv, "vo-configured", MPV_FORMAT_FLAG, &vo_configured ); /* If the vo is not configured yet, save the content of mpv's * playlist. This will be loaded again when the vo is * configured. */ if(!vo_configured) { update_playlist(CELLULOID_PLAYER(mpv)); } } else if(event_id == MPV_EVENT_END_FILE) { if(priv->loaded) { priv->new_file = FALSE; } } else if(event_id == MPV_EVENT_IDLE) { priv->loaded = FALSE; } else if(event_id == MPV_EVENT_FILE_LOADED) { priv->loaded = TRUE; } else if(event_id == MPV_EVENT_VIDEO_RECONFIG) { if(priv->new_file) { g_signal_emit_by_name(CELLULOID_PLAYER(mpv), "autofit"); } } CELLULOID_MPV_CLASS(celluloid_player_parent_class) ->mpv_event_notify(mpv, event_id, event_data); } static void mpv_log_message( CelluloidMpv *mpv, mpv_log_level log_level, const gchar *prefix, const gchar *text ) { CelluloidPlayerPrivate *priv = get_private(mpv); gsize prefix_len = strlen(prefix); gboolean found = FALSE; const gchar *iter_prefix; gpointer iter_level; GHashTableIter iter; g_hash_table_iter_init(&iter, priv->log_levels); while( !found && g_hash_table_iter_next( &iter, (gpointer *)&iter_prefix, &iter_level) ) { gsize iter_prefix_len = strlen(iter_prefix); gint cmp = strncmp( iter_prefix, prefix, (prefix_len < iter_prefix_len)? prefix_len:iter_prefix_len ); /* Allow both exact match and prefix match */ if(cmp == 0 && (iter_prefix_len == prefix_len || (iter_prefix_len < prefix_len && prefix[iter_prefix_len] == '/'))) { found = TRUE; } } if(!found || (gint)log_level <= GPOINTER_TO_INT(iter_level)) { gchar *buf = g_strdup(text); gsize len = strlen(buf); if(len > 1) { /* g_message() automatically adds a newline * character when using the default log handler, * but log messages from mpv already come * terminated with a newline character so we * need to take it out. */ if(buf[len-1] == '\n') { buf[len-1] = '\0'; } g_message("[%s] %s", prefix, buf); } g_free(buf); } CELLULOID_MPV_CLASS(celluloid_player_parent_class) ->mpv_log_message(mpv, log_level, prefix, text); } static void mpv_property_changed(CelluloidMpv *mpv, const gchar *name, gpointer value) { CelluloidPlayer *player = CELLULOID_PLAYER(mpv); CelluloidPlayerPrivate *priv = get_private(mpv); if(g_strcmp0(name, "pause") == 0) { gboolean idle_active = FALSE; gboolean pause = value?*((int *)value):TRUE; celluloid_mpv_get_property (mpv, "idle-active", MPV_FORMAT_FLAG, &idle_active); if(idle_active && !pause && !priv->init_vo_config) { load_from_playlist(player); } } else if(g_strcmp0(name, "playlist") == 0) { gboolean idle_active = FALSE; gboolean was_empty = FALSE; celluloid_mpv_get_property (mpv, "idle-active", MPV_FORMAT_FLAG, &idle_active); was_empty = priv->init_vo_config || priv->playlist->len == 0; if(!idle_active && !priv->init_vo_config) { update_playlist(player); } /* Check if we're transitioning from empty playlist to non-empty * playlist. */ if(was_empty && priv->playlist->len > 0) { celluloid_mpv_set_property_flag(mpv, "pause", FALSE); } } else if(g_strcmp0(name, "metadata") == 0) { update_metadata(player); } else if(g_strcmp0(name, "track-list") == 0) { update_track_list(player); } else if(g_strcmp0(name, "vo-configured") == 0) { if(priv->init_vo_config) { priv->init_vo_config = FALSE; load_scripts(player); load_from_playlist(player); } } CELLULOID_MPV_CLASS(celluloid_player_parent_class) ->mpv_property_changed(mpv, name, value); } static void observe_properties(CelluloidMpv *mpv) { celluloid_mpv_observe_property(mpv, 0, "aid", MPV_FORMAT_STRING); celluloid_mpv_observe_property(mpv, 0, "vid", MPV_FORMAT_STRING); celluloid_mpv_observe_property(mpv, 0, "sid", MPV_FORMAT_STRING); celluloid_mpv_observe_property(mpv, 0, "chapters", MPV_FORMAT_INT64); celluloid_mpv_observe_property(mpv, 0, "core-idle", MPV_FORMAT_FLAG); celluloid_mpv_observe_property(mpv, 0, "idle-active", MPV_FORMAT_FLAG); celluloid_mpv_observe_property(mpv, 0, "border", MPV_FORMAT_FLAG); celluloid_mpv_observe_property(mpv, 0, "fullscreen", MPV_FORMAT_FLAG); celluloid_mpv_observe_property(mpv, 0, "pause", MPV_FORMAT_FLAG); celluloid_mpv_observe_property(mpv, 0, "loop", MPV_FORMAT_STRING); celluloid_mpv_observe_property(mpv, 0, "duration", MPV_FORMAT_DOUBLE); celluloid_mpv_observe_property(mpv, 0, "media-title", MPV_FORMAT_STRING); celluloid_mpv_observe_property(mpv, 0, "metadata", MPV_FORMAT_NODE); celluloid_mpv_observe_property(mpv, 0, "playlist", MPV_FORMAT_NODE); celluloid_mpv_observe_property(mpv, 0, "playlist-count", MPV_FORMAT_INT64); celluloid_mpv_observe_property(mpv, 0, "playlist-pos", MPV_FORMAT_INT64); celluloid_mpv_observe_property(mpv, 0, "speed", MPV_FORMAT_DOUBLE); celluloid_mpv_observe_property(mpv, 0, "track-list", MPV_FORMAT_NODE); celluloid_mpv_observe_property(mpv, 0, "vo-configured", MPV_FORMAT_FLAG); celluloid_mpv_observe_property(mpv, 0, "volume", MPV_FORMAT_DOUBLE); celluloid_mpv_observe_property(mpv, 0, "window-scale", MPV_FORMAT_DOUBLE); } static void apply_default_options(CelluloidMpv *mpv) { gchar *config_dir = get_config_dir_path(); gchar *watch_dir = get_watch_dir_path(); const gchar *screenshot_dir = g_get_user_special_dir (G_USER_DIRECTORY_PICTURES); const struct { const gchar *name; const gchar *value; } options[] = { {"vo", "opengl,vdpau,vaapi,xv,x11,libmpv,"}, {"osd-level", "1"}, {"softvol", "yes"}, {"force-window", "immediate"}, {"input-default-bindings", "yes"}, {"audio-client-name", ICON_NAME}, {"title", "${media-title}"}, {"autofit-larger", "75%"}, {"window-scale", "1"}, {"pause", "yes"}, {"ytdl", "yes"}, {"ytdl-raw-options", "yes-playlist="}, {"load-scripts", "no"}, {"osd-bar", "no"}, {"input-cursor", "no"}, {"cursor-autohide", "no"}, {"softvol-max", "100"}, {"config-dir", config_dir}, {"watch-later-directory", watch_dir}, {"screenshot-directory", screenshot_dir}, {"screenshot-template", "celluloid-shot%n"}, {NULL, NULL} }; for(gint i = 0; options[i].name; i++) { g_debug( "Applying default option --%s=%s", options[i].name, options[i].value ); celluloid_mpv_set_option_string (mpv, options[i].name, options[i].value); } g_free(config_dir); g_free(watch_dir); } static void initialize(CelluloidMpv *mpv) { CelluloidPlayer *player = CELLULOID_PLAYER(mpv); GSettings *win_settings = g_settings_new(CONFIG_WIN_STATE); gdouble volume = g_settings_get_double(win_settings, "volume")*100; apply_default_options(mpv); load_config_file(mpv); load_input_config_file(player); apply_extra_options(player); observe_properties(mpv); CELLULOID_MPV_CLASS(celluloid_player_parent_class)->initialize(mpv); g_debug("Setting volume to %f", volume); celluloid_mpv_set_property(mpv, "volume", MPV_FORMAT_DOUBLE, &volume); g_object_unref(win_settings); } static gint apply_options_array_string(CelluloidMpv *mpv, gchar *args) { gint fail_count = 0; gchar **tokens = g_regex_split_simple( "(^|\\s+)--", args, G_REGEX_NO_AUTO_CAPTURE, 0 ); /* Skip the first token if it's non-NULL, since it is just going to be * empty string for any valid args. */ for(gint i = tokens[0]?1:0; tokens[i]; i++) { gchar **parts = g_strsplit(g_strchomp(tokens[i]), "=", 2); const gchar *option = parts[0]; const gchar *value = (option?parts[1]:NULL)?:""; g_debug("Applying option: --%s", tokens[i]); if(celluloid_mpv_set_option_string(mpv, option, value) < 0) { fail_count++; g_warning("Failed to apply option: --%s\n", tokens[i]); } g_strfreev(parts); } g_strfreev(tokens); return fail_count*(-1); } static void apply_extra_options(CelluloidPlayer *player) { CelluloidPlayerPrivate *priv = get_private(player); CelluloidMpv *mpv = CELLULOID_MPV(player); gchar *extra_options = priv->extra_options; g_debug("Applying extra mpv options: %s", extra_options); /* Apply extra options */ if(extra_options && apply_options_array_string(mpv, extra_options) < 0) { const gchar *msg = _("Failed to apply one or more MPV options."); g_signal_emit_by_name(mpv, "error", msg); } } static void load_file(CelluloidMpv *mpv, const gchar *uri, gboolean append) { CelluloidPlayer *player = CELLULOID_PLAYER(mpv); CelluloidPlayerPrivate *priv = get_private(mpv); gboolean ready = FALSE; gboolean idle_active = FALSE; g_object_get(mpv, "ready", &ready, NULL); celluloid_mpv_get_property (mpv, "idle-active", MPV_FORMAT_FLAG, &idle_active); if(idle_active || !ready) { if(!append) { priv->new_file = TRUE; g_ptr_array_set_size(priv->playlist, 0); } add_file_to_playlist(player, uri); } else { if(!append) { priv->new_file = TRUE; priv->loaded = FALSE; } CELLULOID_MPV_CLASS(celluloid_player_parent_class) ->load_file(mpv, uri, append); } /* Playlist items added when mpv is idle doesn't get added directly to * its internal playlist, so the property change signal won't be fired. * We need to emit notify signal here manually to ensure that the * playlist widget gets updated. */ if(idle_active) { g_object_notify(G_OBJECT(player), "playlist"); } } static void reset(CelluloidMpv *mpv) { gboolean idle_active = FALSE; gint64 playlist_pos = 0; gdouble volume = 0; celluloid_mpv_get_property (mpv, "idle-active", MPV_FORMAT_FLAG, &idle_active); celluloid_mpv_get_property (mpv, "playlist-pos", MPV_FORMAT_INT64, &playlist_pos); celluloid_mpv_get_property (mpv, "volume", MPV_FORMAT_DOUBLE, &volume); CELLULOID_MPV_CLASS(celluloid_player_parent_class)->reset(mpv); load_scripts(CELLULOID_PLAYER(mpv)); if(!idle_active) { load_from_playlist(CELLULOID_PLAYER(mpv)); } if(playlist_pos > 0) { celluloid_mpv_set_property (mpv, "playlist-pos", MPV_FORMAT_INT64, &playlist_pos); } celluloid_mpv_set_property(mpv, "volume", MPV_FORMAT_DOUBLE, &volume); } static void load_input_conf(CelluloidPlayer *player, const gchar *input_conf) { CelluloidPlayerPrivate *priv = get_private(player); const gchar *default_keybinds[] = DEFAULT_KEYBINDS; gchar *tmp_path; FILE *tmp_file; gint tmp_fd; if(priv->tmp_input_config) { g_unlink(priv->tmp_input_config); g_free(priv->tmp_input_config); } tmp_fd = g_file_open_tmp("."BIN_NAME"-XXXXXX", &tmp_path, NULL); tmp_file = fdopen(tmp_fd, "w"); priv->tmp_input_config = tmp_path; if(!tmp_file) { g_error("Failed to open temporary input config file"); } for(gint i = 0; default_keybinds[i]; i++) { const gsize len = strlen(default_keybinds[i]); gsize write_size = fwrite(default_keybinds[i], len, 1, tmp_file); gint rc = fputc('\n', tmp_file); if(write_size != 1 || rc != '\n') { g_error( "Error writing default keybindings to " "temporary input config file" ); } } g_debug("Using temporary input config file: %s", tmp_path); celluloid_mpv_set_option_string (CELLULOID_MPV(player), "input-conf", tmp_path); if(input_conf && strlen(input_conf) > 0) { const gsize buf_size = 65536; void *buf = g_malloc(buf_size); FILE *src_file = g_fopen(input_conf, "r"); gsize read_size = buf_size; if(!src_file) { g_warning( "Cannot open input config file: %s", input_conf ); } while(src_file && read_size == buf_size) { read_size = fread(buf, 1, buf_size, src_file); if(read_size != fwrite(buf, 1, read_size, tmp_file)) { g_error( "Error writing requested input " "config file to temporary " "input config file" ); } } g_info("Loaded input config file: %s", input_conf); g_free(buf); } fclose(tmp_file); } static void load_config_file(CelluloidMpv *mpv) { GSettings *settings = g_settings_new(CONFIG_ROOT); if(g_settings_get_boolean(settings, "mpv-config-enable")) { gchar *mpv_conf = g_settings_get_string (settings, "mpv-config-file"); g_info("Loading config file: %s", mpv_conf); celluloid_mpv_load_config_file(mpv, mpv_conf); g_free(mpv_conf); } g_object_unref(settings); } static void load_input_config_file(CelluloidPlayer *player) { GSettings *settings = g_settings_new(CONFIG_ROOT); gchar *input_conf = NULL; if(g_settings_get_boolean(settings, "mpv-input-config-enable")) { input_conf = g_settings_get_string (settings, "mpv-input-config-file"); g_info("Loading input config file: %s", input_conf); } load_input_conf(player, input_conf); g_free(input_conf); g_object_unref(settings); } static void load_scripts(CelluloidPlayer *player) { gchar *path = get_scripts_dir_path(); GDir *dir = g_dir_open(path, 0, NULL); if(dir) { const gchar *name; do { gchar *full_path; name = g_dir_read_name(dir); full_path = g_build_filename(path, name, NULL); if(g_file_test(full_path, G_FILE_TEST_IS_REGULAR)) { const gchar *cmd[] = {"load-script", full_path, NULL}; g_info("Loading script: %s", full_path); celluloid_mpv_command (CELLULOID_MPV(player), cmd); } g_free(full_path); } while(name); g_dir_close(dir); } else { g_warning("Failed to open scripts directory: %s", path); } g_free(path); } static CelluloidTrack * parse_track_entry(mpv_node_list *node) { CelluloidTrack *entry = celluloid_track_new(); for(gint i = 0; i < node->num; i++) { if(g_strcmp0(node->keys[i], "type") == 0) { const gchar *type = node->values[i].u.string; if(g_strcmp0(type, "audio") == 0) { entry->type = TRACK_TYPE_AUDIO; } else if(g_strcmp0(type, "video") == 0) { entry->type = TRACK_TYPE_VIDEO; } else if(g_strcmp0(type, "sub") == 0) { entry->type = TRACK_TYPE_SUBTITLE; } } else if(g_strcmp0(node->keys[i], "title") == 0) { entry->title = g_strdup(node->values[i].u.string); } else if(g_strcmp0(node->keys[i], "lang") == 0) { entry->lang = g_strdup(node->values[i].u.string); } else if(g_strcmp0(node->keys[i], "id") == 0) { entry->id = node->values[i].u.int64; } } return entry; } static void add_file_to_playlist(CelluloidPlayer *player, const gchar *uri) { CelluloidPlaylistEntry *entry = celluloid_playlist_entry_new(uri, NULL); g_ptr_array_add(get_private(player)->playlist, entry); } static void load_from_playlist(CelluloidPlayer *player) { CelluloidMpv *mpv = CELLULOID_MPV(player); GPtrArray *playlist = get_private(player)->playlist; for(guint i = 0; playlist && i < playlist->len; i++) { CelluloidPlaylistEntry *entry = g_ptr_array_index(playlist, i); /* Do not append on first iteration */ CELLULOID_MPV_CLASS(celluloid_player_parent_class) ->load_file(mpv, entry->filename, i != 0); } } static CelluloidPlaylistEntry * parse_playlist_entry(mpv_node_list *node) { const gchar *filename = NULL; const gchar *title = NULL; for(gint i = 0; i < node->num; i++) { if(g_strcmp0(node->keys[i], "filename") == 0) { filename = node->values[i].u.string; } else if(g_strcmp0(node->keys[i], "title") == 0) { title = node->values[i].u.string; } } return celluloid_playlist_entry_new(filename, title); } static void update_playlist(CelluloidPlayer *player) { CelluloidPlayerPrivate *priv; GSettings *settings; gboolean prefetch_metadata; const mpv_node_list *org_list; mpv_node playlist; priv = get_private(player); settings = g_settings_new(CONFIG_ROOT); prefetch_metadata = g_settings_get_boolean(settings, "prefetch-metadata"); g_ptr_array_set_size(priv->playlist, 0); celluloid_mpv_get_property (CELLULOID_MPV(player), "playlist", MPV_FORMAT_NODE, &playlist); org_list = playlist.u.list; if(playlist.format == MPV_FORMAT_NODE_ARRAY) { for(gint i = 0; i < org_list->num; i++) { CelluloidPlaylistEntry *entry; entry = parse_playlist_entry(org_list->values[i].u.list); if(!entry->title && prefetch_metadata) { CelluloidMetadataCacheEntry *cache_entry; cache_entry = celluloid_metadata_cache_lookup (priv->cache, entry->filename); entry->title = g_strdup(cache_entry->title); } g_ptr_array_add(priv->playlist, entry); } mpv_free_node_contents(&playlist); g_object_notify(G_OBJECT(player), "playlist"); } if(prefetch_metadata) { celluloid_metadata_cache_load_playlist (priv->cache, priv->playlist); } g_object_unref(settings); } static void update_metadata(CelluloidPlayer *player) { CelluloidPlayerPrivate *priv = get_private(player); mpv_node_list *org_list = NULL; mpv_node metadata; g_ptr_array_set_size(priv->metadata, 0); celluloid_mpv_get_property (CELLULOID_MPV(player), "metadata", MPV_FORMAT_NODE, &metadata); org_list = metadata.u.list; if(metadata.format == MPV_FORMAT_NODE_MAP && org_list->num > 0) { for(gint i = 0; i < org_list->num; i++) { const gchar *key; mpv_node value; key = org_list->keys[i]; value = org_list->values[i]; if(value.format == MPV_FORMAT_STRING) { CelluloidMetadataEntry *entry; entry = celluloid_metadata_entry_new (key, value.u.string); g_ptr_array_add(priv->metadata, entry); } else { g_warning( "Ignored metadata field %s " "with unexpected format %d", key, value.format ); } } mpv_free_node_contents(&metadata); g_object_notify(G_OBJECT(player), "metadata"); } } static void update_track_list(CelluloidPlayer *player) { CelluloidPlayerPrivate *priv = get_private(player); mpv_node_list *org_list = NULL; mpv_node track_list; g_ptr_array_set_size(priv->track_list, 0); celluloid_mpv_get_property( CELLULOID_MPV(player), "track-list", MPV_FORMAT_NODE, &track_list ); org_list = track_list.u.list; if(track_list.format == MPV_FORMAT_NODE_ARRAY) { for(gint i = 0; i < org_list->num; i++) { CelluloidTrack *entry = parse_track_entry (org_list->values[i].u.list); g_ptr_array_add(priv->track_list, entry); } mpv_free_node_contents(&track_list); g_object_notify(G_OBJECT(player), "track-list"); } } static void cache_update_handler( CelluloidMetadataCache *cache, const gchar *uri, gpointer data ) { CelluloidPlayerPrivate *priv = get_private(data); for(guint i = 0; i < priv->playlist->len; i++) { CelluloidPlaylistEntry *entry = g_ptr_array_index(priv->playlist, i); if(g_strcmp0(entry->filename, uri) == 0) { CelluloidMetadataCacheEntry *cache_entry = celluloid_metadata_cache_lookup(cache, uri); g_free(entry->title); entry->title = g_strdup(cache_entry->title); g_signal_emit_by_name (data, "metadata-update", (gint64)i); } } } static void mount_added_handler(GVolumeMonitor *monitor, GMount *mount, gpointer data) { GAsyncReadyCallback callback = (GAsyncReadyCallback)guess_content_handler; gchar *name = g_mount_get_name(mount); g_debug("Mount %s added", name); g_mount_guess_content_type(mount, FALSE, NULL, callback, data); g_free(name); } static void volume_removed_handler(GVolumeMonitor *monitor, GVolume *volume, gpointer data) { GPtrArray *disc_list = get_private(data)->disc_list; gboolean found = FALSE; gchar *path = g_volume_get_identifier(volume, "unix-device"); for(guint i = 0; !found && path && i < disc_list->len; i++) { CelluloidDisc *disc = g_ptr_array_index(disc_list, i); if(g_str_has_suffix(disc->uri, path)) { g_ptr_array_remove_index(disc_list, i); found = TRUE; } } g_object_notify(G_OBJECT(data), "disc-list"); } static void guess_content_handler(GMount *mount, GAsyncResult *res, gpointer data) { GError *error = NULL; gchar **types = g_mount_guess_content_type_finish(mount, res, &error); if(error) { gchar *name = g_mount_get_name(mount); g_warning( "Failed to guess content type for mount %s: %s", name, error->message ); g_free(name); } else { CelluloidPlayer *player = data; const gchar *protocol = NULL; GVolume *volume = g_mount_get_volume(mount); gchar *path = volume ? g_volume_get_identifier(volume, "unix-device") : NULL; for(gint i = 0; path && !protocol && types && types[i]; i++) { if(g_strcmp0(types[i], "x-content/video-blueray") == 0) { protocol = "bd"; } else if(g_strcmp0(types[i], "x-content/video-dvd") == 0) { protocol = "dvd"; } else if(g_strcmp0(types[i], "x-content/audio-cdda") == 0) { protocol = "cdda"; } } if(path && protocol) { CelluloidDisc *disc = celluloid_disc_new(); disc->uri = g_strdup_printf("%s:///%s", protocol, path); disc->label = g_mount_get_name(mount); g_ptr_array_add(get_private(player)->disc_list, disc); g_object_notify(G_OBJECT(player), "disc-list"); } g_free(path); g_clear_object(&volume); } g_strfreev(types); } static void celluloid_player_class_init(CelluloidPlayerClass *klass) { CelluloidMpvClass *mpv_class = CELLULOID_MPV_CLASS(klass); GObjectClass *obj_class = G_OBJECT_CLASS(klass); GParamSpec *pspec = NULL; klass->autofit = autofit; klass->metadata_update = metadata_update; mpv_class->mpv_event_notify = mpv_event_notify; mpv_class->mpv_log_message = mpv_log_message; mpv_class->mpv_property_changed = mpv_property_changed; mpv_class->initialize = initialize; mpv_class->load_file = load_file; mpv_class->reset = reset; obj_class->set_property = set_property; obj_class->get_property = get_property; obj_class->finalize = finalize; pspec = g_param_spec_pointer ( "playlist", "Playlist", "The playlist", G_PARAM_READABLE ); g_object_class_install_property(obj_class, PROP_PLAYLIST, pspec); pspec = g_param_spec_pointer ( "metadata", "Metadata", "The metadata tags of the current file", G_PARAM_READABLE ); g_object_class_install_property(obj_class, PROP_METADATA, pspec); pspec = g_param_spec_pointer ( "track-list", "Track list", "Audio, video, and subtitle tracks of the current file", G_PARAM_READABLE ); g_object_class_install_property(obj_class, PROP_TRACK_LIST, pspec); pspec = g_param_spec_pointer ( "disc-list", "Disc list", "List of mounted discs", G_PARAM_READABLE ); g_object_class_install_property(obj_class, PROP_DISC_LIST, pspec); pspec = g_param_spec_string ( "extra-options", "Extra options", "Extra options to pass to mpv", NULL, G_PARAM_READWRITE ); g_object_class_install_property(obj_class, PROP_EXTRA_OPTIONS, pspec); g_signal_new( "autofit", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); g_signal_new( "metadata-update", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_gen_marshal_VOID__INT64, G_TYPE_NONE, 1, G_TYPE_INT64 ); } static void celluloid_player_init(CelluloidPlayer *player) { CelluloidPlayerPrivate *priv = get_private(player); priv->cache = celluloid_metadata_cache_new(); priv->monitor = g_volume_monitor_get(); priv->playlist = g_ptr_array_new_with_free_func ((GDestroyNotify)celluloid_playlist_entry_free); priv->metadata = g_ptr_array_new_with_free_func ((GDestroyNotify)celluloid_metadata_entry_free); priv->track_list = g_ptr_array_new_with_free_func ((GDestroyNotify)celluloid_track_free); priv->disc_list = g_ptr_array_new_with_free_func ((GDestroyNotify)celluloid_disc_free); priv->log_levels = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); priv->loaded = FALSE; priv->new_file = TRUE; priv->init_vo_config = TRUE; priv->tmp_input_config = NULL; priv->extra_options = NULL; g_signal_connect( priv->cache, "update", G_CALLBACK(cache_update_handler), player ); g_signal_connect( priv->monitor, "mount-added", G_CALLBACK(mount_added_handler), player ); // We need to connect to volume-removed instead of mount-removed because // we need to use the path of the volume to figure out which entry in // disc_list to remove. However, by the time mount-removed fires, the // mount would no longer be associated with its volume. This works fine // since we only add mounts with associated volumes to disc_list. g_signal_connect( priv->monitor, "volume-removed", G_CALLBACK(volume_removed_handler), player ); // Emit mount-added to fill disc_list using mounts that already exist. GList *mount_list = g_volume_monitor_get_mounts(priv->monitor); for(GList *cur = mount_list; cur; cur = g_list_next(cur)) { g_signal_emit_by_name(priv->monitor, "mount-added", cur->data); } g_list_free_full(mount_list, g_object_unref); } CelluloidPlayer * celluloid_player_new(gint64 wid) { return CELLULOID_PLAYER(g_object_new( celluloid_player_get_type(), "wid", wid, NULL )); } void celluloid_player_set_playlist_position(CelluloidPlayer *player, gint64 position) { CelluloidMpv *mpv = CELLULOID_MPV(player); gint64 playlist_pos = 0; celluloid_mpv_get_property (mpv, "playlist-pos", MPV_FORMAT_INT64, &playlist_pos); if(position != playlist_pos) { celluloid_mpv_set_property (mpv, "playlist-pos", MPV_FORMAT_INT64, &position); } } void celluloid_player_remove_playlist_entry(CelluloidPlayer *player, gint64 position) { CelluloidMpv *mpv = CELLULOID_MPV(player); gboolean idle_active = celluloid_mpv_get_property_flag (mpv, "idle-active"); gint64 playlist_count = 0; celluloid_mpv_get_property (mpv, "playlist-count", MPV_FORMAT_INT64, &playlist_count); /* mpv doesn't send playlist change signal before going idle when the * last playlist entry is removed, so the internal playlist needs to be * directly updated. */ if(idle_active || playlist_count == 1) { g_ptr_array_remove_index( get_private(player)->playlist, (guint)position ); g_object_notify(G_OBJECT(player), "playlist"); } if(!idle_active) { const gchar *cmd[] = {"playlist_remove", NULL, NULL}; gchar *index_str = g_strdup_printf ("%" G_GINT64_FORMAT, position); cmd[1] = index_str; celluloid_mpv_command(CELLULOID_MPV(player), cmd); g_free(index_str); } } void celluloid_player_move_playlist_entry( CelluloidPlayer *player, gint64 src, gint64 dst ) { CelluloidMpv *mpv = CELLULOID_MPV(player); gboolean idle_active = celluloid_mpv_get_property_flag (mpv, "idle-active"); if(idle_active) { GPtrArray *playlist; CelluloidPlaylistEntry **entry; playlist = get_private(player)->playlist; entry = (CelluloidPlaylistEntry **) &g_ptr_array_index(playlist, src); g_ptr_array_insert(playlist, (gint)dst, *entry); /* Prevent the entry from being freed */ *entry = NULL; g_ptr_array_remove_index(playlist, (guint)((src > dst)?--src:src)); } else { const gchar *cmd[] = {"playlist_move", NULL, NULL, NULL}; gchar *src_str = g_strdup_printf ("%" G_GINT64_FORMAT, (src > dst)?--src:src); gchar *dst_str = g_strdup_printf ("%" G_GINT64_FORMAT, dst); cmd[1] = src_str; cmd[2] = dst_str; celluloid_mpv_command(CELLULOID_MPV(player), cmd); g_free(src_str); g_free(dst_str); } } void celluloid_player_set_log_level( CelluloidPlayer *player, const gchar *prefix, const gchar *level ) { const struct { gchar *name; mpv_log_level level; } level_map[] = { {"no", MPV_LOG_LEVEL_NONE}, {"fatal", MPV_LOG_LEVEL_FATAL}, {"error", MPV_LOG_LEVEL_ERROR}, {"warn", MPV_LOG_LEVEL_WARN}, {"info", MPV_LOG_LEVEL_INFO}, {"v", MPV_LOG_LEVEL_V}, {"debug", MPV_LOG_LEVEL_DEBUG}, {"trace", MPV_LOG_LEVEL_TRACE}, {NULL, MPV_LOG_LEVEL_NONE} }; GHashTableIter iter; gpointer iter_level = GINT_TO_POINTER(DEFAULT_LOG_LEVEL); CelluloidPlayerPrivate *priv = get_private(player); mpv_log_level max_level = DEFAULT_LOG_LEVEL; gboolean found = FALSE; gint i = 0; do { found = (g_strcmp0(level, level_map[i].name) == 0); } while(!found && level_map[++i].name); if(found && g_strcmp0(prefix, "all") != 0) { g_hash_table_replace( priv->log_levels, g_strdup(prefix), GINT_TO_POINTER(level_map[i].level) ); } max_level = level_map[i].level; g_hash_table_iter_init(&iter, priv->log_levels); while(g_hash_table_iter_next(&iter, NULL, &iter_level)) { if(GPOINTER_TO_INT(iter_level) > (gint)max_level) { max_level = GPOINTER_TO_INT(iter_level); } } for(i = 0; level_map[i].level != max_level; i++); celluloid_mpv_request_log_messages (CELLULOID_MPV(player), level_map[i].name); } celluloid-0.18/src/celluloid-player.h000066400000000000000000000031301356026115400176240ustar00rootroot00000000000000/* * Copyright (c) 2017-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef PLAYER_H #define PLAYER_H #include #include "celluloid-mpv.h" G_BEGIN_DECLS #define CELLULOID_TYPE_PLAYER (celluloid_player_get_type()) G_DECLARE_DERIVABLE_TYPE(CelluloidPlayer, celluloid_player, CELLULOID, PLAYER, CelluloidMpv) struct _CelluloidPlayerClass { CelluloidMpvClass parent_class; void (*autofit)(CelluloidPlayer *player); void (*metadata_update)(CelluloidPlayer *player, gint64 pos); }; CelluloidPlayer * celluloid_player_new(gint64 wid); void celluloid_player_set_playlist_position(CelluloidPlayer *player, gint64 position); void celluloid_player_remove_playlist_entry(CelluloidPlayer *player, gint64 position); void celluloid_player_move_playlist_entry( CelluloidPlayer *player, gint64 src, gint64 dst ); void celluloid_player_set_log_level( CelluloidPlayer *player, const gchar *prefix, const gchar *level ); G_END_DECLS #endif celluloid-0.18/src/celluloid-playlist-widget.c000066400000000000000000000540171356026115400214570ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include #include #include #include "celluloid-playlist-widget.h" #include "celluloid-metadata-cache.h" #include "celluloid-marshal.h" #include "celluloid-common.h" #include "celluloid-menu.h" #include "celluloid-def.h" enum { PROP_0, PROP_PLAYLIST_COUNT, N_PROPERTIES }; enum PlaylistColumn { PLAYLIST_NAME_COLUMN, PLAYLIST_URI_COLUMN, PLAYLIST_WEIGHT_COLUMN, PLAYLIST_N_COLUMNS }; struct _CelluloidPlaylistWidget { GtkScrolledWindow parent_instance; gint64 playlist_count; GtkListStore *store; GtkWidget *tree_view; GtkTreeViewColumn *title_column; GtkCellRenderer *title_renderer; gint last_x; gint last_y; gboolean dnd_delete; }; struct _CelluloidPlaylistWidgetClass { GtkScrolledWindowClass parent_class; }; static void constructed(GObject *object); static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ); static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ); static void drag_begin_handler(GtkWidget *widget, GdkDragContext *context, gpointer data); static void drag_data_get_handler( GtkWidget *widget, GdkDragContext *context, GtkSelectionData *sel_data, guint info, guint time, gpointer data ); static void drag_data_received_handler( GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *sel_data, guint info, guint time, gpointer data ); static void drag_data_delete_handler( GtkWidget *widget, GdkDragContext *context, gpointer data ); static void row_activated_handler( GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, gpointer data ); static void row_inserted_handler( GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter, gpointer data ); static void row_deleted_handler(GtkTreeModel *tree_model, GtkTreePath *path, gpointer data); static gboolean mouse_press_handler(GtkWidget *widget, GdkEventButton *event, gpointer data); static gchar * get_uri_selected(CelluloidPlaylistWidget *wgt); G_DEFINE_TYPE(CelluloidPlaylistWidget, celluloid_playlist_widget, GTK_TYPE_SCROLLED_WINDOW) static void constructed(GObject *object) { CelluloidPlaylistWidget *self = CELLULOID_PLAYLIST_WIDGET(object); GtkTargetEntry targets[] = DND_TARGETS; self->store = gtk_list_store_new( 3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT ); self->tree_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(self->store)); g_signal_connect( self->tree_view, "button-press-event", G_CALLBACK(mouse_press_handler), self ); g_signal_connect( self->tree_view, "popup-menu", G_CALLBACK(mouse_press_handler), self ); g_signal_connect_after( self->tree_view, "drag-begin", G_CALLBACK(drag_begin_handler), self ); g_signal_connect( self->tree_view, "drag-data-get", G_CALLBACK(drag_data_get_handler), self ); g_signal_connect( self->tree_view, "drag-data-received", G_CALLBACK(drag_data_received_handler), self ); g_signal_connect( self->tree_view, "drag-data-delete", G_CALLBACK(drag_data_delete_handler), self ); g_signal_connect( self->tree_view, "row-activated", G_CALLBACK(row_activated_handler), self ); g_signal_connect( self->store, "row-inserted", G_CALLBACK(row_inserted_handler), self ); g_signal_connect( self->store, "row-deleted", G_CALLBACK(row_deleted_handler), self ); gtk_tree_view_enable_model_drag_source( GTK_TREE_VIEW(self->tree_view), GDK_BUTTON1_MASK, targets, G_N_ELEMENTS(targets), GDK_ACTION_COPY| GDK_ACTION_LINK| GDK_ACTION_MOVE ); gtk_tree_view_enable_model_drag_dest( GTK_TREE_VIEW(self->tree_view), targets, G_N_ELEMENTS(targets), GDK_ACTION_MOVE ); gtk_widget_set_can_focus(self->tree_view, FALSE); gtk_tree_view_set_reorderable(GTK_TREE_VIEW(self->tree_view), FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW(self->tree_view), self->title_column); gtk_container_add(GTK_CONTAINER(self), self->tree_view); G_OBJECT_CLASS(celluloid_playlist_widget_parent_class)->constructed(object); } static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ) { CelluloidPlaylistWidget *self = CELLULOID_PLAYLIST_WIDGET(object); if(property_id == PROP_PLAYLIST_COUNT) { self->playlist_count = g_value_get_int64(value); } else { G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); } } static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ) { CelluloidPlaylistWidget *self = CELLULOID_PLAYLIST_WIDGET(object); if(property_id == PROP_PLAYLIST_COUNT) { g_value_set_int64(value, self->playlist_count); } else { G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); } } static void drag_begin_handler(GtkWidget *widget, GdkDragContext *context, gpointer data) { const gint padding = 6; const gint border_width = 1; CelluloidPlaylistWidget *wgt = data; GtkTreeView *tree_view = GTK_TREE_VIEW(widget); GtkStyleContext *style = gtk_widget_get_style_context(widget); GtkTreeModel *model = gtk_tree_view_get_model(tree_view); GtkTreePath *path = NULL; GtkTreeIter iter; GdkWindow *window = gtk_widget_get_window(widget); PangoContext *pango_ctx = gtk_widget_get_pango_context(widget); PangoLayout *layout = pango_layout_new(pango_ctx); gint width = 0, height = 0; gint text_width = 0, text_height = 0; gint cell_x = 0, cell_y = 0; gchar *name = NULL; GdkRGBA *border_color = NULL; GdkRGBA *fg_color = NULL; cairo_surface_t *surface = NULL; cairo_t *cr = NULL; gtk_tree_view_get_path_at_pos( tree_view, wgt->last_x, wgt->last_y, NULL, NULL, &cell_x, &cell_y ); gtk_tree_view_get_cursor(tree_view, &path, NULL); gtk_tree_model_get_iter(model, &iter, path); gtk_tree_model_get(model, &iter, PLAYLIST_NAME_COLUMN, &name, -1); pango_layout_set_text(layout, name, (gint)strlen(name)); pango_layout_get_pixel_size(layout, &text_width, &text_height); gtk_cell_renderer_get_preferred_height( wgt->title_renderer, widget, NULL, &height ); width = text_width+2*(padding+border_width); height += 2*border_width; surface = gdk_window_create_similar_surface (window, CAIRO_CONTENT_COLOR, width, height); cr = cairo_create(surface); gtk_style_context_get( style, GTK_STATE_FLAG_NORMAL, GTK_STYLE_PROPERTY_COLOR, &fg_color, GTK_STYLE_PROPERTY_BORDER_COLOR, &border_color, NULL); gtk_render_background(style, cr, 0, 0, width, height); /* Draw border */ gdk_cairo_set_source_rgba(cr, border_color); cairo_set_line_width(cr, border_width); cairo_rectangle( cr, border_width/2.0, border_width/2.0, width-border_width, height-border_width ); cairo_stroke(cr); /* Draw text */ gdk_cairo_set_source_rgba(cr, fg_color); cairo_translate(cr, padding, (height-text_height)/2.0); pango_cairo_show_layout(cr, layout); cairo_surface_set_device_offset ( surface, (-1)*(MIN(cell_x+border_width, width-border_width)), (-1)*(cell_y+border_width) ); gtk_drag_set_icon_surface(context, surface); gdk_rgba_free(fg_color); gdk_rgba_free(border_color); cairo_destroy(cr); g_object_unref(layout); } static void drag_data_get_handler( GtkWidget *widget, GdkDragContext *context, GtkSelectionData *sel_data, guint info, guint time, gpointer data ) { gchar *type = gdk_atom_name(gtk_selection_data_get_target(sel_data)); gchar *text = get_uri_selected(data); if(g_strcmp0(type, "PLAYLIST_PATH") == 0) { CelluloidPlaylistWidget *wgt = data; GtkTreePath *path = NULL; gchar *path_str = NULL; GdkAtom atom = gdk_atom_intern_static_string("PLAYLIST_PATH"); gtk_tree_view_get_cursor (GTK_TREE_VIEW(wgt->tree_view), &path, NULL); path_str = gtk_tree_path_to_string(path); gtk_selection_data_set( sel_data, atom, 8, (const guchar *)path_str, (gint)strlen(path_str) ); g_free(path_str); } else if(g_strcmp0(type, "text/uri-list") == 0) { /* Only one URI can be selected at a time */ gchar *uris[] = {text, NULL}; gtk_selection_data_set_uris(sel_data, uris); } else { gtk_selection_data_set_text(sel_data, text, -1); } g_free(type); g_free(text); } static void drag_data_received_handler( GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *sel_data, guint info, guint time, gpointer data) { CelluloidPlaylistWidget *wgt = data; gboolean reorder = (widget == gtk_drag_get_source_widget(context)); #ifndef G_DISABLE_ASSERT /* Only used in an assertion below */ gchar *type = gdk_atom_name(gtk_selection_data_get_target(sel_data)); #endif if(reorder) { GtkListStore *store; const guchar *raw_data; gint src_index, dest_index; GtkTreeIter src_iter, dest_iter; GtkTreePath *src_path, *dest_path; GtkTreeViewDropPosition before_mask; GtkTreeViewDropPosition drop_pos; gboolean insert_before; gboolean dest_row_exist; store = wgt->store; raw_data = gtk_selection_data_get_data(sel_data); src_path = gtk_tree_path_new_from_string ((const gchar *)raw_data); src_index = gtk_tree_path_get_indices(src_path)[0]; before_mask = GTK_TREE_VIEW_DROP_BEFORE| GTK_TREE_VIEW_DROP_INTO_OR_BEFORE; dest_row_exist = gtk_tree_view_get_dest_row_at_pos ( GTK_TREE_VIEW(widget), x, y, &dest_path, &drop_pos ); wgt->dnd_delete = FALSE; g_assert(g_strcmp0(type, "PLAYLIST_PATH") == 0); g_assert(src_path); gtk_tree_model_get_iter( GTK_TREE_MODEL(store), &src_iter, src_path ); if(dest_row_exist) { g_assert(dest_path); dest_index = gtk_tree_path_get_indices(dest_path)[0]; gtk_tree_model_get_iter( GTK_TREE_MODEL(store), &dest_iter, dest_path ); } else { /* Set dest_iter to the last child */ GtkTreeIter iter; gboolean has_next; drop_pos = GTK_TREE_VIEW_DROP_AFTER; dest_index = -1; gtk_tree_model_get_iter_first (GTK_TREE_MODEL(store), &iter); do { dest_iter = iter; has_next = gtk_tree_model_iter_next (GTK_TREE_MODEL(store), &iter); dest_index++; } while(has_next); } insert_before = (drop_pos&before_mask || drop_pos == 0); if(insert_before) { gtk_list_store_move_before(store, &src_iter, &dest_iter); } else { gtk_list_store_move_after(store, &src_iter, &dest_iter); } g_signal_emit_by_name( wgt, "rows-reordered", src_index+(src_index>dest_index), dest_index+!insert_before ); gtk_tree_path_free(src_path); gtk_tree_path_free(dest_path); } else { g_signal_emit_by_name( wgt, "drag-data-received", context, x, y, sel_data, info, time, data ); } } static void drag_data_delete_handler( GtkWidget *widget, GdkDragContext *context, gpointer data ) { CelluloidPlaylistWidget *wgt = data; /* Prevent default handler from deleting the source row when reordering. * When reordering, dnd_delete will be set to FALSE in * drag_data_received_handler(). */ if(!wgt->dnd_delete) { g_signal_stop_emission_by_name(widget, "drag-data-delete"); } wgt->dnd_delete = TRUE; } static void row_activated_handler( GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, gpointer data ) { gint *indices = gtk_tree_path_get_indices(path); gint64 index = indices?indices[0]:-1; g_signal_emit_by_name(data, "row-activated", index); } static void row_inserted_handler( GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter, gpointer data ) { const gint pos = gtk_tree_path_get_indices(path)[0]; CELLULOID_PLAYLIST_WIDGET(data)->playlist_count++; g_signal_emit_by_name(data, "row-inserted", pos); g_object_notify(data, "playlist-count"); } static void row_deleted_handler(GtkTreeModel *tree_model, GtkTreePath *path, gpointer data) { const gint pos = gtk_tree_path_get_indices(path)[0]; CELLULOID_PLAYLIST_WIDGET(data)->playlist_count--; g_signal_emit_by_name(data, "row-deleted", pos); g_object_notify(data, "playlist-count"); } static gboolean mouse_press_handler(GtkWidget *widget, GdkEventButton *event, gpointer data) { CelluloidPlaylistWidget *wgt = data; GdkEventButton *btn_event = (GdkEventButton *)event; wgt->last_x = (gint)btn_event->x; wgt->last_y = (gint)btn_event->y; if( btn_event->type == GDK_BUTTON_PRESS && btn_event->button == 3 ) { const CelluloidMenuEntry entries[] = { CELLULOID_MENU_SEPARATOR, CELLULOID_MENU_ITEM(_("_Copy Location"), "win.copy-selected-playlist-item"), CELLULOID_MENU_ITEM(_("_Remove"), "win.remove-selected-playlist-item"), CELLULOID_MENU_SEPARATOR, CELLULOID_MENU_ITEM(_("_Add…"), "win.show-open-dialog(true)"), CELLULOID_MENU_ITEM(_("Add _Location…"), "win.show-open-location-dialog(true)"), CELLULOID_MENU_ITEM(_("_Shuffle"), "win.shuffle-playlist"), CELLULOID_MENU_ITEM(_("Loop _File"), "win.toggle-loop-file"), CELLULOID_MENU_ITEM(_("Loop _Playlist"), "win.toggle-loop-playlist"), CELLULOID_MENU_END }; gsize entries_offset = 0; GMenu *menu = g_menu_new(); GtkWidget *ctx_menu = NULL; if(!gtk_tree_view_get_path_at_pos( GTK_TREE_VIEW(widget), (gint)event->x, (gint)event->y, NULL, NULL, NULL, NULL )) { /* Skip the first section which only contains item-level * actions */ while(entries[++entries_offset].title); } celluloid_menu_build_menu(menu, entries+entries_offset, TRUE); g_menu_freeze(menu); ctx_menu = gtk_menu_new_from_model(G_MENU_MODEL(menu)); gtk_menu_attach_to_widget(GTK_MENU(ctx_menu), widget, NULL); gtk_widget_show_all(ctx_menu); gtk_menu_popup_at_pointer(GTK_MENU(ctx_menu), (GdkEvent *)event); } return FALSE; } static gchar * get_uri_selected(CelluloidPlaylistWidget *wgt) { GtkTreeIter iter; GtkTreePath *path = NULL; gchar *result = NULL; gboolean rc = FALSE; gtk_tree_view_get_cursor(GTK_TREE_VIEW(wgt->tree_view), &path, NULL); if(path) { rc = gtk_tree_model_get_iter (GTK_TREE_MODEL(wgt->store), &iter, path); } if(rc) { gtk_tree_model_get( GTK_TREE_MODEL(wgt->store), &iter, PLAYLIST_URI_COLUMN, &result, -1 ); } return result; } static void celluloid_playlist_widget_class_init(CelluloidPlaylistWidgetClass *klass) { GObjectClass *obj_class = G_OBJECT_CLASS(klass); GParamSpec *pspec = NULL; obj_class->constructed = constructed; obj_class->set_property = set_property; obj_class->get_property = get_property; pspec = g_param_spec_int64 ( "playlist-count", "Playlist count", "The number of items in the playlist", 0, G_MAXINT64, 0, G_PARAM_READABLE ); g_object_class_install_property(obj_class, PROP_PLAYLIST_COUNT, pspec); g_signal_new( "row-activated", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_gen_marshal_VOID__INT64, G_TYPE_NONE, 1, G_TYPE_INT ); g_signal_new( "row-inserted", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT ); g_signal_new( "row-deleted", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT ); g_signal_new( "rows-reordered", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_gen_marshal_VOID__INT_INT, G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_INT ); } static void celluloid_playlist_widget_init(CelluloidPlaylistWidget *wgt) { wgt->playlist_count = 0; wgt->title_renderer = gtk_cell_renderer_text_new(); wgt->title_column = gtk_tree_view_column_new_with_attributes ( _("Playlist"), wgt->title_renderer, "text", PLAYLIST_NAME_COLUMN, "weight", PLAYLIST_WEIGHT_COLUMN, NULL ); wgt->dnd_delete = TRUE; gtk_widget_set_size_request (GTK_WIDGET(wgt), PLAYLIST_MIN_WIDTH, -1); gtk_tree_view_column_set_sizing (wgt->title_column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); } GtkWidget * celluloid_playlist_widget_new() { return GTK_WIDGET(g_object_new(celluloid_playlist_widget_get_type(), NULL)); } gboolean celluloid_playlist_widget_empty(CelluloidPlaylistWidget *wgt) { GtkTreeIter iter; return !gtk_tree_model_get_iter_first(GTK_TREE_MODEL(wgt->store), &iter); } void celluloid_playlist_widget_set_indicator_pos( CelluloidPlaylistWidget *wgt, gint pos ) { GtkTreeIter iter; gboolean rc; rc = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(wgt->store), &iter); while(rc) { const PangoWeight weight = (pos-- == 0)? PANGO_WEIGHT_BOLD: PANGO_WEIGHT_NORMAL; gtk_list_store_set( wgt->store, &iter, PLAYLIST_WEIGHT_COLUMN, weight, -1 ); rc = gtk_tree_model_iter_next(GTK_TREE_MODEL(wgt->store), &iter); } } void celluloid_playlist_widget_copy_selected(CelluloidPlaylistWidget *wgt) { GtkTreePath *path = NULL; gtk_tree_view_get_cursor ( GTK_TREE_VIEW(wgt->tree_view), &path, NULL ); if(path) { GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(wgt->store); GValue value = G_VALUE_INIT; if(gtk_tree_model_get_iter(model, &iter, path)) { const gchar *uri; gtk_tree_model_get_value (model, &iter, PLAYLIST_URI_COLUMN, &value); uri = g_value_get_string(&value); if(uri) { GdkDisplay *display; GtkClipboard *clipboard; display = gdk_display_get_default(); clipboard = gtk_clipboard_get_default(display); gtk_clipboard_set_text (clipboard, uri, (gint)strlen(uri)); } } } } void celluloid_playlist_widget_remove_selected(CelluloidPlaylistWidget *wgt) { GtkTreePath *path = NULL; gtk_tree_view_get_cursor ( GTK_TREE_VIEW(wgt->tree_view), &path, NULL ); if(path) { GtkTreeIter iter; GtkTreeModel *model; model = GTK_TREE_MODEL(wgt->store); if(gtk_tree_model_get_iter(model, &iter, path)) { gtk_list_store_remove(wgt->store, &iter); } } } void celluloid_playlist_widget_queue_draw(CelluloidPlaylistWidget *wgt) { gtk_widget_queue_draw(GTK_WIDGET(wgt)); gtk_widget_queue_draw(wgt->tree_view); } void celluloid_playlist_widget_update_contents( CelluloidPlaylistWidget *wgt, GPtrArray* playlist ) { GtkListStore *store = wgt->store; gboolean iter_end = FALSE; gint64 old_playlist_count = wgt->playlist_count; GtkTreeIter iter; g_assert(playlist); g_signal_handlers_block_by_func(wgt->store, row_inserted_handler, wgt); g_signal_handlers_block_by_func(wgt->store, row_deleted_handler, wgt); iter_end = !gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter); for(guint i = 0; i < playlist->len; i++) { CelluloidPlaylistEntry *entry= g_ptr_array_index(playlist, i); gchar *uri = entry->filename; gchar *title = entry->title; gchar *name = title?g_strdup(title):get_name_from_path(uri); /* Overwrite current entry if it doesn't match the new value */ if(!iter_end) { gchar *old_name = NULL; gchar *old_uri = NULL; gboolean name_update = FALSE; gboolean uri_update = FALSE; gtk_tree_model_get( GTK_TREE_MODEL(store), &iter, PLAYLIST_NAME_COLUMN, &old_name, PLAYLIST_URI_COLUMN, &old_uri, -1 ); name_update = (g_strcmp0(name, old_name) != 0); uri_update = (g_strcmp0(uri, old_uri) != 0); /* Only set the name if either the title can be * retrieved or the name is unset. This preserves the * correct title if it becomes unavailable later such as * when restarting mpv. */ if(name_update && (!old_name || title || uri_update)) { gtk_list_store_set( store, &iter, PLAYLIST_NAME_COLUMN, name, -1 ); } if(uri_update) { gtk_list_store_set( store, &iter, PLAYLIST_URI_COLUMN, uri, -1 ); } iter_end = !gtk_tree_model_iter_next (GTK_TREE_MODEL(store), &iter); g_free(old_name); g_free(old_uri); } /* Append entries to the playlist if there are fewer entries in * the playlist widget than given playlist. */ else { gtk_list_store_append(store, &iter); gtk_list_store_set( store, &iter, PLAYLIST_NAME_COLUMN, name, -1 ); gtk_list_store_set( store, &iter, PLAYLIST_URI_COLUMN, uri, -1 ); wgt->playlist_count++; } g_free(name); } /* If there are more entries in the playlist widget than given playlist, * remove the excess entries from the playlist widget. */ if(!iter_end) { while(gtk_list_store_remove(store, &iter)) { wgt->playlist_count--; } } if(!old_playlist_count && wgt->playlist_count) { GtkTreePath *path = gtk_tree_path_new_first(); gtk_tree_view_set_cursor (GTK_TREE_VIEW(wgt->tree_view), path, NULL, FALSE); gtk_tree_path_free(path); } g_signal_handlers_unblock_by_func(wgt->store, row_inserted_handler, wgt); g_signal_handlers_unblock_by_func(wgt->store, row_deleted_handler, wgt); g_object_notify(G_OBJECT(wgt), "playlist-count"); } GPtrArray * celluloid_playlist_widget_get_contents(CelluloidPlaylistWidget *wgt) { gboolean rc = TRUE; GtkTreeModel *model = GTK_TREE_MODEL(wgt->store); GtkTreeIter iter; GPtrArray *result = NULL; rc = gtk_tree_model_get_iter_first(model, &iter); result = g_ptr_array_new_full( 1, (GDestroyNotify) celluloid_playlist_entry_free ); while(rc) { gchar *uri = NULL; gchar *name = NULL; gtk_tree_model_get( model, &iter, PLAYLIST_URI_COLUMN, &uri, PLAYLIST_NAME_COLUMN, &name, -1 ); g_ptr_array_add(result, celluloid_playlist_entry_new(uri, name)); rc = gtk_tree_model_iter_next(model, &iter); } return result; } celluloid-0.18/src/celluloid-playlist-widget.h000066400000000000000000000033371356026115400214630ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef PLAYLIST_WIDGET_H #define PLAYLIST_WIDGET_H #include #include #include #include "celluloid-metadata-cache.h" G_BEGIN_DECLS #define CELLULOID_TYPE_PLAYLIST_WIDGET (celluloid_playlist_widget_get_type ()) G_DECLARE_FINAL_TYPE(CelluloidPlaylistWidget, celluloid_playlist_widget, CELLULOID, PLAYLIST_WIDGET, GtkScrolledWindow) GtkWidget * celluloid_playlist_widget_new(void); gboolean celluloid_playlist_widget_empty(CelluloidPlaylistWidget *wgt); void celluloid_playlist_widget_set_indicator_pos( CelluloidPlaylistWidget *wgt, gint pos ); void celluloid_playlist_widget_copy_selected(CelluloidPlaylistWidget *wgt); void celluloid_playlist_widget_remove_selected(CelluloidPlaylistWidget *wgt); void celluloid_playlist_widget_queue_draw(CelluloidPlaylistWidget *wgt); void celluloid_playlist_widget_update_contents( CelluloidPlaylistWidget *wgt, GPtrArray* playlist ); GPtrArray * celluloid_playlist_widget_get_contents(CelluloidPlaylistWidget *wgt); G_END_DECLS #endif celluloid-0.18/src/celluloid-plugins-manager-item.c000066400000000000000000000152351356026115400223610ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include #include #include "celluloid-plugins-manager-item.h" enum { PROP_0, PROP_PARENT, PROP_TITLE, PROP_PATH, N_PROPERTIES }; struct _CelluloidPluginsManagerItem { GtkListBoxRow parent; GtkWindow *parent_window; gchar *title; gchar *path; }; struct _CelluloidPluginsManagerItemClass { GtkListBoxRowClass parent_class; }; G_DEFINE_TYPE(CelluloidPluginsManagerItem, celluloid_plugins_manager_item, GTK_TYPE_LIST_BOX_ROW) static void celluloid_plugins_manager_item_constructed(GObject *object); static void celluloid_plugins_manager_item_finalize(GObject *object); static void celluloid_plugins_manager_item_set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ); static void celluloid_plugins_manager_item_get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ); static void remove_handler(GtkButton *button, gpointer data); static void celluloid_plugins_manager_item_constructed(GObject *object) { CelluloidPluginsManagerItem *self = CELLULOID_PLUGINS_MANAGER_ITEM(object); GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); GtkWidget *title_label = gtk_label_new(self->title); GtkWidget *remove_button = gtk_button_new_with_label(_("Remove")); g_signal_connect( remove_button, "clicked", G_CALLBACK(remove_handler), self ); gtk_widget_set_halign(title_label, GTK_ALIGN_START); gtk_label_set_ellipsize(GTK_LABEL(title_label), PANGO_ELLIPSIZE_END); gtk_list_box_row_set_selectable(GTK_LIST_BOX_ROW(self), FALSE); gtk_box_pack_start(GTK_BOX(box), title_label, TRUE, TRUE, 6); gtk_box_pack_end(GTK_BOX(box), remove_button, FALSE, FALSE, 0); gtk_container_add(GTK_CONTAINER(self), box); G_OBJECT_CLASS(celluloid_plugins_manager_item_parent_class) ->constructed(object); } static void celluloid_plugins_manager_item_finalize(GObject *object) { CelluloidPluginsManagerItem *self = CELLULOID_PLUGINS_MANAGER_ITEM(object); g_free(self->title); g_free(self->path); G_OBJECT_CLASS(celluloid_plugins_manager_item_parent_class) ->finalize(object); } static void celluloid_plugins_manager_item_set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ) { CelluloidPluginsManagerItem *self = CELLULOID_PLUGINS_MANAGER_ITEM(object); if(property_id == PROP_PARENT) { self->parent_window = g_value_get_pointer(value); } else if(property_id == PROP_TITLE) { g_free(self->title); self->title = g_value_dup_string(value); } else if(property_id == PROP_PATH) { g_free(self->path); self->path = g_value_dup_string(value); } else { G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); } } static void celluloid_plugins_manager_item_get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ) { CelluloidPluginsManagerItem *self = CELLULOID_PLUGINS_MANAGER_ITEM(object); if(property_id == PROP_PARENT) { g_value_set_pointer(value, self->parent_window); } else if(property_id == PROP_TITLE) { g_value_set_string(value, self->title); } else if(property_id == PROP_PATH) { g_value_set_string(value, self->path); } else { G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); } } static void remove_handler(GtkButton *button, gpointer data) { CelluloidPluginsManagerItem *item = data; GFile *file = g_file_new_for_path(item->path); GError *error = NULL; GtkWidget *confirm_dialog = gtk_message_dialog_new ( item->parent_window, GTK_DIALOG_MODAL| GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, _("Are you sure you want to " "remove this script? This " "action cannot be undone.")); if(gtk_dialog_run(GTK_DIALOG(confirm_dialog)) == GTK_RESPONSE_YES) { g_file_delete(file, NULL, &error); } gtk_widget_destroy(confirm_dialog); if(error) { GtkWidget *error_dialog; error_dialog = gtk_message_dialog_new ( item->parent_window, GTK_DIALOG_MODAL| GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Failed to delete file '%s'. " "Reason: %s"), g_file_get_uri(file), error->message ); g_warning( "Failed to delete file '%s'. Reason: %s", g_file_get_uri(file), error->message ); gtk_dialog_run(GTK_DIALOG(error_dialog)); gtk_widget_destroy(error_dialog); g_error_free(error); } } static void celluloid_plugins_manager_item_class_init(CelluloidPluginsManagerItemClass *klass) { GObjectClass *obj_class = G_OBJECT_CLASS(klass); GParamSpec *pspec = NULL; obj_class->constructed = celluloid_plugins_manager_item_constructed; obj_class->finalize = celluloid_plugins_manager_item_finalize; obj_class->set_property = celluloid_plugins_manager_item_set_property; obj_class->get_property = celluloid_plugins_manager_item_get_property; pspec = g_param_spec_pointer ( "parent", "Parent", "Parent window for the dialogs", G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); g_object_class_install_property(obj_class, PROP_PARENT, pspec); pspec = g_param_spec_string ( "title", "Title", "The string to display as the title of the item", "", G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); g_object_class_install_property(obj_class, PROP_TITLE, pspec); pspec = g_param_spec_string ( "path", "Path", "The path to the file that this item references", "", G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); g_object_class_install_property(obj_class, PROP_PATH, pspec); } static void celluloid_plugins_manager_item_init(CelluloidPluginsManagerItem *item) { item->parent_window = NULL; item->title = NULL; item->path = NULL; } GtkWidget * celluloid_plugins_manager_item_new( GtkWindow *parent, const gchar *title, const gchar *path ) { return GTK_WIDGET(g_object_new( celluloid_plugins_manager_item_get_type(), "parent", parent, "title", title, "path", path, NULL)); } celluloid-0.18/src/celluloid-plugins-manager-item.h000066400000000000000000000023121356026115400223560ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef PLUGINS_MANAGER_ITEM_H #define PLUGINS_MANAGER_ITEM_H #include #include #include G_BEGIN_DECLS #define CELLULOID_TYPE_PLUGINS_MANAGER_ITEM (celluloid_plugins_manager_item_get_type ()) G_DECLARE_FINAL_TYPE(CelluloidPluginsManagerItem, celluloid_plugins_manager_item, CELLULOID, PLUGINS_MANAGER_ITEM, GtkListBoxRow) GtkWidget * celluloid_plugins_manager_item_new( GtkWindow *parent, const gchar *title, const gchar *path ); G_END_DECLS #endif celluloid-0.18/src/celluloid-plugins-manager.c000066400000000000000000000252421356026115400214240ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include "celluloid-plugins-manager.h" #include "celluloid-plugins-manager-item.h" #include "celluloid-file-chooser.h" #include "celluloid-common.h" enum { PROP_0, PROP_PARENT, N_PROPERTIES }; struct _CelluloidPluginsManager { GtkGrid parent; GtkWindow *parent_window; GtkWidget *list_box; GtkWidget *placeholder_label; GFileMonitor *monitor; gchar *directory; }; struct _CelluloidPluginsManagerClass { GtkGridClass parent_class; }; G_DEFINE_TYPE(CelluloidPluginsManager, celluloid_plugins_manager, GTK_TYPE_GRID) static void celluloid_plugins_manager_constructed(GObject *object); static void celluloid_plugins_manager_finalize(GObject *object); static void celluloid_plugins_manager_set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ); static void celluloid_plugins_manager_get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ); static void add_handler(GtkButton *button, gpointer data); static void drag_data_handler( GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *sel_data, guint info, guint time, gpointer data); static void changed_handler( GFileMonitor *monitor, GFile *file, GFile *other_file, GFileMonitorEvent event_type, gpointer data ); static void copy_file_to_directory(CelluloidPluginsManager *pmgr, GFile *src); static void celluloid_plugins_manager_constructed(GObject *object) { CelluloidPluginsManager *self = CELLULOID_PLUGINS_MANAGER(object); gchar *scripts_dir = get_scripts_dir_path(); celluloid_plugins_manager_set_directory(self, scripts_dir); g_free(scripts_dir); G_OBJECT_CLASS(celluloid_plugins_manager_parent_class) ->constructed(object); } static void celluloid_plugins_manager_finalize(GObject *object) { CelluloidPluginsManager *pmgr = CELLULOID_PLUGINS_MANAGER(object); g_clear_object(&pmgr->monitor); g_free(pmgr->directory); G_OBJECT_CLASS(celluloid_plugins_manager_parent_class) ->finalize(object); } static void celluloid_plugins_manager_set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ) { CelluloidPluginsManager *self = CELLULOID_PLUGINS_MANAGER(object); if(property_id == PROP_PARENT) { self->parent_window = g_value_get_pointer(value); } else { G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); } } static void celluloid_plugins_manager_get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ) { CelluloidPluginsManager *self = CELLULOID_PLUGINS_MANAGER(object); if(property_id == PROP_PARENT) { g_value_set_pointer(value, self->parent_window); } else { G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); } } static void add_handler(GtkButton *button, gpointer data) { CelluloidPluginsManager *pmgr = data; CelluloidFileChooser *dialog = NULL; GtkFileFilter *filter; GtkFileChooser *chooser; GFile *src = NULL; dialog = celluloid_file_chooser_new( _("Add Plugin"), pmgr->parent_window, GTK_FILE_CHOOSER_ACTION_OPEN ); filter = NULL; chooser = GTK_FILE_CHOOSER(dialog); filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, _("All Files")); gtk_file_filter_add_pattern(filter, "*"); gtk_file_chooser_add_filter(chooser, filter); filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, _("Lua Plugins")); gtk_file_filter_add_mime_type(filter, "text/x-lua"); gtk_file_chooser_add_filter(chooser, filter); gtk_file_chooser_set_filter(chooser, filter); filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, _("JavaScript Plugins")); gtk_file_filter_add_mime_type(filter, "application/javascript"); gtk_file_chooser_add_filter(chooser, filter); filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, _("C Plugins")); gtk_file_filter_add_mime_type(filter, "application/x-sharedlib"); gtk_file_chooser_add_filter(chooser, filter); if(celluloid_file_chooser_run(dialog) == GTK_RESPONSE_ACCEPT) { src = gtk_file_chooser_get_file(chooser); } celluloid_file_chooser_destroy(dialog); copy_file_to_directory(pmgr, src); g_clear_object(&src); } static void drag_data_handler( GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *sel_data, guint info, guint time, gpointer data) { gchar **uri_list = gtk_selection_data_get_uris(sel_data); g_assert(uri_list); for(gint i = 0; uri_list[i]; i++) { GFile *file = g_file_new_for_uri(uri_list[i]); copy_file_to_directory(data, file); g_clear_object(&file); } g_strfreev(uri_list); } static void changed_handler( GFileMonitor *monitor, GFile *file, GFile *other_file, GFileMonitorEvent event_type, gpointer data ) { CelluloidPluginsManager *pmgr = data; GDir *dir = NULL; const gchar *filename = NULL; gboolean empty = TRUE; const GFileMonitorEvent mask = G_FILE_MONITOR_EVENT_CREATED| G_FILE_MONITOR_EVENT_DELETED| G_FILE_MONITOR_EVENT_UNMOUNTED; if(event_type&mask) { g_assert(pmgr->directory); dir = g_dir_open(pmgr->directory, 0, NULL); } if(dir) { GtkContainer *list_box; GList *iter; list_box = GTK_CONTAINER(pmgr->list_box); iter = gtk_container_get_children(list_box); while(iter) { gtk_widget_destroy(iter->data); iter = g_list_next(iter); } do { gchar *full_path; filename = g_dir_read_name(dir); full_path = g_build_filename (pmgr->directory, filename, NULL); if(g_file_test(full_path, G_FILE_TEST_IS_REGULAR)) { GtkWidget *item; item = celluloid_plugins_manager_item_new ( pmgr->parent_window, filename, full_path ); gtk_container_add (GTK_CONTAINER(pmgr->list_box), item); empty = FALSE; } g_free(full_path); } while(filename); gtk_widget_show_all(pmgr->list_box); gtk_widget_set_visible(pmgr->placeholder_label, empty); g_dir_close(dir); } } static void copy_file_to_directory(CelluloidPluginsManager *pmgr, GFile *src) { gchar *dest_path = NULL; GFile *dest = NULL; GError *error = NULL; if(src) { g_assert(pmgr->directory); dest_path = g_build_filename( pmgr->directory, g_file_get_basename(src), NULL ); dest = g_file_new_for_path(dest_path); g_file_copy( src, dest, G_FILE_COPY_NONE, NULL, NULL, NULL, &error ); } if(error) { GtkWidget *error_dialog = NULL; gchar *src_path = NULL; src_path = g_file_get_path(src)?:g_file_get_uri(src); error_dialog = gtk_message_dialog_new ( pmgr->parent_window, GTK_DIALOG_MODAL| GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Failed to copy file from '%s' " "to '%s'. Reason: %s"), src_path, dest_path, error->message ); g_warning( "Failed to copy file from '%s' to '%s'. " "Reason: %s", src_path, dest_path, error->message ); gtk_dialog_run(GTK_DIALOG(error_dialog)); gtk_widget_destroy(error_dialog); g_error_free(error); g_free(src_path); } g_clear_object(&dest); g_free(dest_path); } static void celluloid_plugins_manager_class_init(CelluloidPluginsManagerClass *klass) { GObjectClass *obj_class = G_OBJECT_CLASS(klass); GParamSpec *pspec = NULL; obj_class->constructed = celluloid_plugins_manager_constructed; obj_class->finalize = celluloid_plugins_manager_finalize; obj_class->set_property = celluloid_plugins_manager_set_property; obj_class->get_property = celluloid_plugins_manager_get_property; pspec = g_param_spec_pointer ( "parent", "Parent", "Parent window for the dialogs", G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); g_object_class_install_property(obj_class, PROP_PARENT, pspec); } static void celluloid_plugins_manager_init(CelluloidPluginsManager *pmgr) { GtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL); GtkWidget *overlay = gtk_overlay_new(); GtkWidget *add_button = gtk_button_new_with_label("+"); pmgr->list_box = gtk_list_box_new(); pmgr->placeholder_label = gtk_label_new(_("No plugins found")); pmgr->parent_window = NULL; pmgr->monitor = NULL; pmgr->directory = NULL; g_signal_connect( add_button, "clicked", G_CALLBACK(add_handler), pmgr ); g_signal_connect( pmgr->list_box, "drag-data-received", G_CALLBACK(drag_data_handler), pmgr ); gtk_drag_dest_set( pmgr->list_box, GTK_DEST_DEFAULT_ALL, NULL, 0, GDK_ACTION_LINK ); gtk_drag_dest_add_uri_targets(pmgr->list_box); gtk_widget_set_hexpand(GTK_WIDGET(scrolled_window), TRUE); gtk_widget_set_vexpand(GTK_WIDGET(scrolled_window), TRUE); gtk_widget_set_tooltip_text(add_button, _("Add Plugin")); gtk_widget_set_sensitive(pmgr->placeholder_label, FALSE); gtk_widget_set_no_show_all(pmgr->placeholder_label, TRUE); gtk_widget_show(pmgr->placeholder_label); gtk_container_add(GTK_CONTAINER(overlay), scrolled_window); gtk_overlay_add_overlay(GTK_OVERLAY(overlay), pmgr->placeholder_label); gtk_overlay_set_overlay_pass_through( GTK_OVERLAY(overlay), pmgr->placeholder_label, TRUE ); gtk_grid_attach( GTK_GRID(pmgr), overlay, 0, 0, 1, 1 ); gtk_grid_attach( GTK_GRID(pmgr), add_button, 0, 1, 1, 1 ); gtk_container_add(GTK_CONTAINER(scrolled_window), pmgr->list_box); } GtkWidget * celluloid_plugins_manager_new(GtkWindow *parent) { return g_object_new( celluloid_plugins_manager_get_type(), "parent", parent, NULL); } void celluloid_plugins_manager_set_directory( CelluloidPluginsManager *pmgr, const gchar *path ) { GFile *directory = g_file_new_for_path(path); g_clear_object(&pmgr->monitor); g_free(pmgr->directory); pmgr->monitor = g_file_monitor_directory( directory, G_FILE_MONITOR_NONE, NULL, NULL ); pmgr->directory = g_strdup(path); if(pmgr->monitor) { g_signal_connect( pmgr->monitor, "changed", G_CALLBACK(changed_handler), pmgr ); changed_handler( pmgr->monitor, NULL, NULL, G_FILE_MONITOR_EVENT_CREATED, pmgr ); } else { g_warning("Failed to monitor directory %s", path); } g_object_unref(directory); } celluloid-0.18/src/celluloid-plugins-manager.h000066400000000000000000000023231356026115400214240ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef PLUGINS_MANAGER_H #define PLUGINS_MANAGER_H #include #include #include G_BEGIN_DECLS #define CELLULOID_TYPE_PLUGINS_MANAGER (celluloid_plugins_manager_get_type ()) G_DECLARE_FINAL_TYPE(CelluloidPluginsManager, celluloid_plugins_manager, CELLULOID, PLUGINS_MANAGER, GtkGrid) GtkWidget * celluloid_plugins_manager_new(GtkWindow *parent); void celluloid_plugins_manager_set_directory( CelluloidPluginsManager *pmgr, const gchar *path ); G_END_DECLS #endif celluloid-0.18/src/celluloid-preferences-dialog.c000066400000000000000000000261101356026115400220640ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include #include #include "celluloid-preferences-dialog.h" #include "celluloid-plugins-manager.h" #include "celluloid-main-window.h" #include "celluloid-def.h" typedef struct PreferencesDialogItem PreferencesDialogItem; typedef enum PreferencesDialogItemType PreferencesDialogItemType; struct _CelluloidPreferencesDialog { GtkDialog parent_instance; GSettings *settings; GtkWidget *notebook; }; struct _CelluloidPreferencesDialogClass { GtkDialogClass parent_class; }; enum PreferencesDialogItemType { ITEM_TYPE_INVALID, ITEM_TYPE_GROUP, ITEM_TYPE_CHECK_BOX, ITEM_TYPE_FILE_CHOOSER, ITEM_TYPE_LABEL, ITEM_TYPE_TEXT_BOX }; struct PreferencesDialogItem { const gchar *label; const gchar *key; PreferencesDialogItemType type; }; G_DEFINE_TYPE(CelluloidPreferencesDialog, celluloid_preferences_dialog, GTK_TYPE_DIALOG) static void file_set_handler(GtkFileChooserButton *widget, gpointer data) { GtkWidget *toplevel = gtk_widget_get_toplevel(GTK_WIDGET(widget)); CelluloidPreferencesDialog *dlg = CELLULOID_PREFERENCES_DIALOG(toplevel); GtkFileChooser *chooser = GTK_FILE_CHOOSER(widget); const gchar *key = data; gchar *filename = gtk_file_chooser_get_filename(chooser)?:g_strdup(""); g_settings_set_string(dlg->settings, key, filename); g_free(filename); } static void response_handler(GtkDialog *dialog, gint response_id) { CelluloidPreferencesDialog *dlg = CELLULOID_PREFERENCES_DIALOG(dialog); if(response_id == GTK_RESPONSE_ACCEPT) { g_settings_apply(dlg->settings); } else { g_settings_revert(dlg->settings); } g_object_unref(dlg->settings); } static gboolean key_press_handler(GtkWidget *widget, GdkEventKey *event) { guint keyval = event->keyval; guint state = event->state; const guint mod_mask = GDK_MODIFIER_MASK &~(GDK_SHIFT_MASK |GDK_LOCK_MASK |GDK_MOD2_MASK |GDK_MOD3_MASK |GDK_MOD4_MASK |GDK_MOD5_MASK); if((state&mod_mask) == 0 && keyval == GDK_KEY_Return) { gtk_dialog_response(GTK_DIALOG(widget), GTK_RESPONSE_ACCEPT); } return GTK_WIDGET_CLASS(celluloid_preferences_dialog_parent_class) ->key_press_event(widget, event); } static void free_signal_data(gpointer data, GClosure *closure) { g_free(data); } static GtkWidget * build_page(const PreferencesDialogItem *items, GSettings *settings) { GtkWidget *grid = gtk_grid_new(); gtk_container_set_border_width(GTK_CONTAINER(grid), 12); gtk_grid_set_row_spacing(GTK_GRID(grid), 6); gtk_grid_set_column_spacing(GTK_GRID(grid), 12); for(gint i = 0; items[i].type != ITEM_TYPE_INVALID; i++) { const gchar *label = items[i].label; const gchar *key = items[i].key; const PreferencesDialogItemType type = items[i].type; GtkWidget *widget = NULL; gboolean separate_label = FALSE; gint width = 1; gint xpos = 0; if(type == ITEM_TYPE_GROUP) { widget = gtk_label_new(label); width = 2; gtk_label_set_use_markup(GTK_LABEL(widget), TRUE); gtk_widget_set_halign(widget, GTK_ALIGN_START); gtk_widget_set_margin_top(widget, 12); } else if(type == ITEM_TYPE_CHECK_BOX) { widget = gtk_check_button_new_with_label(label); width = 2; g_settings_bind( settings, key, widget, "active", G_SETTINGS_BIND_DEFAULT ); } else if(type == ITEM_TYPE_FILE_CHOOSER) { GtkFileChooser *chooser; GtkFileFilter *filter; gchar *filename; widget = gtk_file_chooser_button_new (label, GTK_FILE_CHOOSER_ACTION_OPEN); chooser = GTK_FILE_CHOOSER(widget); filter = gtk_file_filter_new(); filename = g_settings_get_string(settings, key); separate_label = TRUE; xpos = 1; gtk_file_filter_add_mime_type(filter, "text/plain"); gtk_file_chooser_set_filter(chooser, filter); gtk_widget_set_hexpand(widget, TRUE); gtk_widget_set_size_request(widget, 100, -1); gtk_file_chooser_set_filename(chooser, filename); /* For simplicity, changes made to the GSettings * database externally won't be reflected immediately * for this type of widget. */ g_signal_connect_data( widget, "file-set", G_CALLBACK(file_set_handler), g_strdup(key), free_signal_data, 0 ); g_free(filename); } else if(type == ITEM_TYPE_TEXT_BOX) { widget = gtk_entry_new(); separate_label = TRUE; xpos = 1; gtk_widget_set_hexpand(widget, TRUE); g_settings_bind( settings, key, widget, "text", G_SETTINGS_BIND_DEFAULT ); } else if(type == ITEM_TYPE_LABEL) { widget = gtk_label_new(label); gtk_widget_set_halign(widget, GTK_ALIGN_START); } g_assert(widget); g_assert(xpos == 0 || xpos == 1); if(i == 0) { gtk_widget_set_margin_top(widget, 0); } if(type != ITEM_TYPE_GROUP) { gtk_widget_set_margin_start(widget, 12); } /* Expand the widget to fill both columns if it usually needs a * separate label but none is provided. */ if(separate_label && !label) { width = 2; xpos = 0; } gtk_grid_attach(GTK_GRID(grid), widget, xpos, i, width, 1); if(separate_label && label) { GtkWidget *label_widget = gtk_label_new(label); /* The grid should only have 2 columns, so the previous * widget connot be wider than 1 column if it needs a * seperate label. */ g_assert(width == 1); gtk_grid_attach( GTK_GRID(grid), label_widget, 1-xpos, i, 1, 1 ); gtk_widget_set_halign(label_widget, GTK_ALIGN_START); gtk_widget_set_hexpand(label_widget, FALSE); gtk_widget_set_margin_start(label_widget, 12); } } return grid; } static void preferences_dialog_constructed(GObject *obj) { gboolean csd_enabled; g_object_get(obj, "use-header-bar", &csd_enabled, NULL); if(!csd_enabled) { GtkWidget *content_area; GtkWidget *notebook; content_area = gtk_dialog_get_content_area(GTK_DIALOG(obj)); notebook = CELLULOID_PREFERENCES_DIALOG(obj)->notebook; gtk_widget_set_margin_bottom(content_area, 12); gtk_widget_set_margin_bottom(notebook, 6); } G_OBJECT_CLASS(celluloid_preferences_dialog_parent_class)->constructed(obj); } static void celluloid_preferences_dialog_class_init(CelluloidPreferencesDialogClass *klass) { GtkWidgetClass *wid_class = GTK_WIDGET_CLASS(klass); wid_class->key_press_event = key_press_handler; GTK_DIALOG_CLASS(klass)->response = response_handler; G_OBJECT_CLASS(klass)->constructed = preferences_dialog_constructed; } static void celluloid_preferences_dialog_init(CelluloidPreferencesDialog *dlg) { const PreferencesDialogItem interface_items[] = { {_("Enable client-side decorations"), "csd-enable", ITEM_TYPE_CHECK_BOX}, {_("Enable dark theme"), "dark-theme-enable", ITEM_TYPE_CHECK_BOX}, {_("Use floating controls in windowed mode"), "always-use-floating-controls", ITEM_TYPE_CHECK_BOX}, {_("Autohide mouse cursor in windowed mode"), "always-autohide-cursor", ITEM_TYPE_CHECK_BOX}, {_("Use skip buttons for controlling playlist"), "use-skip-buttons-for-playlist", ITEM_TYPE_CHECK_BOX}, {_("Remember last file's location"), "last-folder-enable", ITEM_TYPE_CHECK_BOX}, {NULL, NULL, ITEM_TYPE_INVALID} }; const PreferencesDialogItem config_items[] = { {_("Load MPV configuration file"), "mpv-config-enable", ITEM_TYPE_CHECK_BOX}, {_("MPV configuration file:"), "mpv-config-file", ITEM_TYPE_FILE_CHOOSER}, {_("Load MPV input configuration file"), "mpv-input-config-enable", ITEM_TYPE_CHECK_BOX}, {_("MPV input configuration file:"), "mpv-input-config-file", ITEM_TYPE_FILE_CHOOSER}, {NULL, NULL, ITEM_TYPE_INVALID} }; const PreferencesDialogItem misc_items[] = { {_("Always open new window"), "always-open-new-window", ITEM_TYPE_CHECK_BOX}, {_("Ignore playback errors"), "ignore-playback-errors", ITEM_TYPE_CHECK_BOX}, {_("Prefetch metadata"), "prefetch-metadata", ITEM_TYPE_CHECK_BOX}, {_("Enable MPRIS support"), "mpris-enable", ITEM_TYPE_CHECK_BOX}, {_("Enable media keys support"), "media-keys-enable", ITEM_TYPE_CHECK_BOX}, {_("Extra MPV options:"), NULL, ITEM_TYPE_LABEL}, {NULL, "mpv-options", ITEM_TYPE_TEXT_BOX}, {NULL, NULL, ITEM_TYPE_INVALID} }; GtkWidget *content_area; GdkGeometry geom; /* This 'locks' the height of the dialog while allowing the width to be * freely adjusted. */ geom.max_width = G_MAXINT; geom.max_height = 0; dlg->settings = g_settings_new(CONFIG_ROOT); dlg->notebook = gtk_notebook_new(); content_area = gtk_dialog_get_content_area(GTK_DIALOG(dlg)); g_settings_delay(dlg->settings); gtk_window_set_geometry_hints( GTK_WINDOW(dlg), GTK_WIDGET(dlg), &geom, GDK_HINT_MAX_SIZE ); gtk_container_set_border_width(GTK_CONTAINER(content_area), 0); gtk_container_add(GTK_CONTAINER(content_area), dlg->notebook); gtk_notebook_append_page( GTK_NOTEBOOK(dlg->notebook), build_page(interface_items, dlg->settings), gtk_label_new(_("Interface")) ); gtk_notebook_append_page( GTK_NOTEBOOK(dlg->notebook), build_page(config_items, dlg->settings), gtk_label_new(_("Config Files")) ); gtk_notebook_append_page( GTK_NOTEBOOK(dlg->notebook), build_page(misc_items, dlg->settings), gtk_label_new(_("Miscellaneous")) ); gtk_notebook_append_page( GTK_NOTEBOOK(dlg->notebook), celluloid_plugins_manager_new(GTK_WINDOW(dlg)), gtk_label_new(_("Plugins")) ); gtk_dialog_add_buttons( GTK_DIALOG(dlg), _("_Cancel"), GTK_RESPONSE_REJECT, _("_Save"), GTK_RESPONSE_ACCEPT, NULL ); gtk_dialog_set_default_response(GTK_DIALOG(dlg), GTK_RESPONSE_ACCEPT); } GtkWidget * celluloid_preferences_dialog_new(GtkWindow *parent) { GtkWidget *dlg; GtkWidget *header_bar; gboolean csd_enabled; csd_enabled = celluloid_main_window_get_csd_enabled(CELLULOID_MAIN_WINDOW(parent)); dlg = g_object_new( celluloid_preferences_dialog_get_type(), "title", _("Preferences"), "modal", TRUE, "transient-for", parent, "use-header-bar", csd_enabled, NULL ); header_bar = gtk_dialog_get_header_bar(GTK_DIALOG(dlg)); if(header_bar) { /* The defaults use PACK_END which is ugly with multiple buttons */ GtkWidget *cancel_btn = gtk_dialog_get_widget_for_response (GTK_DIALOG(dlg), GTK_RESPONSE_REJECT); gtk_container_child_set( GTK_CONTAINER(header_bar), cancel_btn, "pack-type", GTK_PACK_START, NULL ); gtk_header_bar_set_show_close_button (GTK_HEADER_BAR(header_bar), FALSE); } gtk_widget_hide_on_delete(dlg); gtk_widget_show_all(dlg); return dlg; } celluloid-0.18/src/celluloid-preferences-dialog.h000066400000000000000000000022041356026115400220670ustar00rootroot00000000000000/* * Copyright (c) 2014-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef PREFERENCES_DIALOG_H #define PREFERENCES_DIALOG_H #include #include #include G_BEGIN_DECLS #define CELLULOID_TYPE_PREFERENCES_DIALOG (celluloid_preferences_dialog_get_type ()) G_DECLARE_FINAL_TYPE(CelluloidPreferencesDialog, celluloid_preferences_dialog, CELLULOID, PREFERENCES_DIALOG, GtkDialog) GtkWidget * celluloid_preferences_dialog_new(GtkWindow *parent); G_END_DECLS #endif celluloid-0.18/src/celluloid-seek-bar.c000066400000000000000000000070061356026115400200220ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include "celluloid-seek-bar.h" struct _CelluloidSeekBar { GtkBox parent_instance; GtkWidget *seek_bar; GtkWidget *label; gdouble pos; gdouble duration; }; struct _CelluloidSeekBarClass { GtkBoxClass parent_class; }; static void change_value_handler( GtkWidget *widget, GtkScrollType scroll, gdouble value, gpointer data ); static void update_label(CelluloidSeekBar *bar); G_DEFINE_TYPE(CelluloidSeekBar, celluloid_seek_bar, GTK_TYPE_BOX) static void change_value_handler( GtkWidget *widget, GtkScrollType scroll, gdouble value, gpointer data ) { CelluloidSeekBar *bar = data; if(bar->duration > 0) { update_label(data); g_signal_emit_by_name(data, "seek", value); } } static void update_label(CelluloidSeekBar *bar) { gint sec = (gint)bar->pos; gint duration = (gint)bar->duration; gchar *output; /* Longer than one hour */ if(duration > 3600) { output = g_strdup_printf( "%02d:%02d:%02d/" "%02d:%02d:%02d", sec/3600, (sec%3600)/60, sec%60, duration/3600, (duration%3600)/60, duration%60 ); } else if(duration > 0) { output = g_strdup_printf( "%02d:%02d/" "%02d:%02d", (sec%3600)/60, sec%60, (duration%3600)/60, duration%60 ); } else { output = g_strdup_printf("%02d:%02d", (sec%3600)/60, sec%60); } gtk_label_set_text(GTK_LABEL(bar->label), output); } static void celluloid_seek_bar_class_init(CelluloidSeekBarClass *klass) { g_signal_new( "seek", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__DOUBLE, G_TYPE_NONE, 1, G_TYPE_DOUBLE ); } static void celluloid_seek_bar_init(CelluloidSeekBar *bar) { bar->seek_bar = gtk_scale_new(GTK_ORIENTATION_HORIZONTAL, NULL); bar->label = gtk_label_new(""); bar->duration = 0; bar->pos = 0; update_label(bar); gtk_scale_set_draw_value(GTK_SCALE(bar->seek_bar), FALSE); gtk_range_set_increments(GTK_RANGE(bar->seek_bar), 10, 10); gtk_widget_set_can_focus(bar->seek_bar, FALSE); g_signal_connect( bar->seek_bar, "change-value", G_CALLBACK(change_value_handler), bar ); gtk_box_pack_start(GTK_BOX(bar), bar->seek_bar, TRUE, TRUE, 0); gtk_box_pack_end(GTK_BOX(bar), bar->label, FALSE, FALSE, 0); } GtkWidget * celluloid_seek_bar_new() { return GTK_WIDGET(g_object_new(celluloid_seek_bar_get_type(), NULL)); } void celluloid_seek_bar_set_duration(CelluloidSeekBar *bar, gdouble duration) { bar->duration = duration; update_label(bar); gtk_range_set_range(GTK_RANGE(bar->seek_bar), 0, duration); } void celluloid_seek_bar_set_pos(CelluloidSeekBar *bar, gdouble pos) { gdouble old_pos = bar->pos; bar->pos = pos; gtk_range_set_value(GTK_RANGE(bar->seek_bar), pos); if((gint)old_pos != (gint)pos) { update_label(bar); } } celluloid-0.18/src/celluloid-seek-bar.h000066400000000000000000000022711356026115400200260ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef SEEK_BAR_H #define SEEK_BAR_H #include #include #include G_BEGIN_DECLS #define CELLULOID_TYPE_SEEK_BAR (celluloid_seek_bar_get_type()) G_DECLARE_FINAL_TYPE(CelluloidSeekBar, celluloid_seek_bar, CELLULOID, SEEK_BAR, GtkBox) GtkWidget * celluloid_seek_bar_new(void); void celluloid_seek_bar_set_duration(CelluloidSeekBar *bar, gdouble duration); void celluloid_seek_bar_set_pos(CelluloidSeekBar *bar, gdouble pos); G_END_DECLS #endif celluloid-0.18/src/celluloid-shortcuts-window.c000066400000000000000000000134311356026115400216730ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include "celluloid-shortcuts-window.h" struct _CelluloidShortcutsWindow { GtkShortcutsWindow parent; }; struct _CelluloidShortcutsWindowClass { GtkShortcutsWindowClass parent_class; }; struct ShortcutEntry { const gchar *accel; const gchar *title; }; struct ShortcutGroup { const gchar *title; const struct ShortcutEntry *entries; }; typedef struct ShortcutEntry ShortcutEntry; typedef struct ShortcutGroup ShortcutGroup; G_DEFINE_TYPE(CelluloidShortcutsWindow, celluloid_shortcuts_window, GTK_TYPE_SHORTCUTS_WINDOW) static void celluloid_shortcuts_window_init(CelluloidShortcutsWindow *wnd) { const ShortcutEntry general[] = { {"o", _("Open file")}, {"l", _("Open location")}, {"o", _("Add file to playlist")}, {"l", _("Add location to playlist")}, {"p", _("Show preferences dialog")}, {"h", _("Toggle controls")}, {"F9", _("Toggle playlist")}, {"F11 f", _("Toggle fullscreen mode")}, {"Escape", _("Leave fullscreen mode")}, {"o", _("Toggle OSD states between normal and playback time/duration")}, {"i", _("Show filename on the OSD")}, {"o p", _("Show progress, elapsed time, and duration on the OSD")}, {NULL, NULL} }; const ShortcutEntry seeking[] = { {"leftarrow rightarrow", _("Seek backward/forward 5 seconds")}, {"leftarrow rightarrow", _("Exact seek backward/forward 1 second")}, {"downarrow uparrow", _("Seek backward/forward 1 minute")}, {"downarrow uparrow", _("Exact seek backward/forward 5 seconds")}, {"leftarrow rightarrow", _("Seek to previous/next subtitle")}, {"comma period", _("Step backward/forward a single frame")}, {"Page_Up Page_Down", _("Seek to the beginning of the previous/next chapter")}, {NULL, NULL} }; const ShortcutEntry playback[] = { {"bracketleft bracketright", _("Decrease/increase playback speed by 10%")}, {"braceleft braceright", _("Halve/double current playback speed")}, {"BackSpace", _("Reset playback speed to normal")}, {"less greater", _("Go backward/forward in the playlist")}, {"Delete", _("Remove selected playlist item")}, {"s", _("Save playlist")}, {"l", _("Set/clear A-B loop points")}, {"l", _("Toggle infinite looping")}, {"p space", _("Pause or unpause")}, {"q q", _("Quit")}, {"q", _("Save current playback position and quit")}, {NULL, NULL} }; const ShortcutEntry audio[] = { {"numbersign", _("Cycle through audio tracks")}, {"slash asterisk", _("Decrease/increase volume")}, {"9 0", _("Decrease/increase volume")}, {"m", _("Mute or unmute")}, {"plus minus", _("Adjust audio delay by +/- 0.1 seconds")}, {NULL, NULL} }; const ShortcutEntry subtitle[] = { {"v", _("Toggle subtitle visibility")}, {"i j", _("Cycle through available subtitles")}, {"x z", _("Adjust subtitle delay by +/- 0.1 seconds")}, {"u", _("Toggle SSA/ASS subtitles style override")}, {"r t", _("Move subtitles up/down")}, {"v", _("Toggle VSFilter aspect compatibility mode")}, {NULL, NULL} }; const ShortcutEntry video[] = { {"underscore", _("Cycle through video tracks")}, {"w e", _("Decrease/increase pan-and-scan range")}, {"s", _("Take a screenshot")}, {"s", _("Take a screenshot, without subtitles")}, {"s", _("Take a screenshot, as the window shows it")}, {"0", _("Resize video to half its original size")}, {"1", _("Resize video to its original size")}, {"2", _("Resize video to double its original size")}, {"1 2", _("Adjust contrast")}, {"3 4", _("Adjust brightness")}, {"5 6", _("Adjust gamma")}, {"7 8", _("Adjust saturation")}, {"d", _("Activate or deactivate deinterlacer")}, {"a", _("Cycle aspect ratio override")}, {NULL, NULL} }; const ShortcutGroup groups[] = { {_("User Interface"), general}, {_("Video"), video}, {_("Audio"), audio}, {_("Subtitle"), subtitle}, {_("Playback"), playback}, {_("Seeking"), seeking}, {NULL, NULL} }; GtkWidget *section = g_object_new ( gtk_shortcuts_section_get_type(), "section-name", "shortcuts", "visible", TRUE, NULL ); for(gint i = 0; groups[i].title; i++) { const ShortcutEntry *entries = groups[i].entries; GtkWidget *group = g_object_new ( gtk_shortcuts_group_get_type(), "title", groups[i].title, NULL ); for(gint j = 0; entries[j].accel; j++) { GtkWidget *entry; entry = g_object_new ( gtk_shortcuts_shortcut_get_type(), "accelerator", entries[j].accel, "title", entries[j].title, NULL ); gtk_container_add(GTK_CONTAINER(group), entry); } gtk_container_add(GTK_CONTAINER(section), group); } gtk_container_add(GTK_CONTAINER(wnd), section); } static void celluloid_shortcuts_window_class_init(CelluloidShortcutsWindowClass *klass) { } GtkWidget * celluloid_shortcuts_window_new(GtkWindow *parent) { return GTK_WIDGET(g_object_new( celluloid_shortcuts_window_get_type(), "transient-for", parent, "modal", TRUE, NULL)); } celluloid-0.18/src/celluloid-shortcuts-window.h000066400000000000000000000021751356026115400217030ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef SHORTCUTS_WINDOW_H #define SHORTCUTS_WINDOW_H #include #include #include G_BEGIN_DECLS #define CELLULOID_TYPE_SHORTCUTS_WINDOW (celluloid_shortcuts_window_get_type ()) G_DECLARE_FINAL_TYPE(CelluloidShortcutsWindow, celluloid_shortcuts_window, CELLULOID, SHORTCUTS_WINDOW, GtkShortcutsWindow) GtkWidget * celluloid_shortcuts_window_new(GtkWindow *parent); G_END_DECLS #endif celluloid-0.18/src/celluloid-video-area.c000066400000000000000000000321671356026115400203530ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include "celluloid-video-area.h" #include "celluloid-header-bar.h" #include "celluloid-control-box.h" #include "celluloid-common.h" #include "celluloid-def.h" #include #include #include #include #ifdef GDK_WINDOWING_X11 #include #endif enum { PROP_0, PROP_TITLE, N_PROPERTIES }; struct _CelluloidVideoArea { GtkOverlay parent_instance; GtkWidget *stack; GtkWidget *draw_area; GtkWidget *gl_area; GtkWidget *control_box; GtkWidget *header_bar; GtkWidget *control_box_revealer; GtkWidget *header_bar_revealer; guint32 last_motion_time; gdouble last_motion_x; gdouble last_motion_y; guint timeout_tag; gboolean fullscreen; gboolean fs_control_hover; }; struct _CelluloidVideoAreaClass { GtkOverlayClass parent_class; }; static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ); static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ); static void destroy(GtkWidget *widget); static void set_cursor_visible(CelluloidVideoArea *area, gboolean visible); static gboolean timeout_handler(gpointer data); static gboolean motion_notify_event(GtkWidget *widget, GdkEventMotion *event); static gboolean fs_control_crossing_handler( GtkWidget *widget, GdkEventCrossing *event, gpointer data ); G_DEFINE_TYPE(CelluloidVideoArea, celluloid_video_area, GTK_TYPE_OVERLAY) static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ) { CelluloidVideoArea *self = CELLULOID_VIDEO_AREA(object); switch(property_id) { case PROP_TITLE: g_object_set_property( G_OBJECT(self->header_bar), pspec->name, value ); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ) { CelluloidVideoArea *self = CELLULOID_VIDEO_AREA(object); switch(property_id) { case PROP_TITLE: g_object_get_property( G_OBJECT(self->header_bar), pspec->name, value ); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void destroy(GtkWidget *widget) { g_source_clear(&CELLULOID_VIDEO_AREA(widget)->timeout_tag); GTK_WIDGET_CLASS(celluloid_video_area_parent_class)->destroy(widget); } static void set_cursor_visible(CelluloidVideoArea *area, gboolean visible) { GdkWindow *window; GdkCursor *cursor; window = gtk_widget_get_window(GTK_WIDGET(area)); if(visible) { cursor = gdk_cursor_new_from_name (gdk_display_get_default(), "default"); } else { cursor = gdk_cursor_new_for_display (gdk_display_get_default(), GDK_BLANK_CURSOR); } gdk_window_set_cursor(window, cursor); g_object_unref(cursor); } static gboolean timeout_handler(gpointer data) { CelluloidVideoArea *area = data; CelluloidControlBox *control_box = CELLULOID_CONTROL_BOX(area->control_box); CelluloidHeaderBar *header_bar = CELLULOID_HEADER_BAR(area->header_bar); if(control_box && !area->fs_control_hover && !celluloid_control_box_get_volume_popup_visible(control_box) && !celluloid_header_bar_get_open_button_popup_visible(header_bar) && !celluloid_header_bar_get_menu_button_popup_visible(header_bar)) { GSettings *settings; gboolean always_autohide; settings = g_settings_new(CONFIG_ROOT); always_autohide = g_settings_get_boolean (settings, "always-autohide-cursor"); gtk_revealer_set_reveal_child (GTK_REVEALER(area->control_box_revealer), FALSE); gtk_revealer_set_reveal_child (GTK_REVEALER(area->header_bar_revealer), FALSE); set_cursor_visible(area, !(always_autohide || area->fullscreen)); area->timeout_tag = 0; g_object_unref(settings); } else if(!control_box) { area->timeout_tag = 0; } /* Try again later if timeout_tag has not been cleared. This means that * either one of the popups is visible or the cursor is hovering over * the control box, preventing it from being hidden. */ return (area->timeout_tag != 0); } static gboolean motion_notify_event(GtkWidget *widget, GdkEventMotion *event) { GSettings *settings = g_settings_new(CONFIG_ROOT); CelluloidVideoArea *area = CELLULOID_VIDEO_AREA(widget); const gdouble dist = sqrt( pow(event->x - area->last_motion_x, 2) + pow(event->y - area->last_motion_y, 2) ); const gdouble speed = dist / (event->time - area->last_motion_time); area->last_motion_time = event->time; area->last_motion_x = event->x; area->last_motion_y = event->y; if(speed >= g_settings_get_double(settings, "controls-unhide-cursor-speed")) { GdkCursor *cursor = gdk_cursor_new_from_name ( gdk_display_get_default(), "default" ); gdk_window_set_cursor(gtk_widget_get_window(widget), cursor); if(area->control_box) { gtk_revealer_set_reveal_child ( GTK_REVEALER(area->control_box_revealer), TRUE ); gtk_revealer_set_reveal_child ( GTK_REVEALER(area->header_bar_revealer), area->fullscreen ); } g_source_clear(&area->timeout_tag); area->timeout_tag = g_timeout_add_seconds ( FS_CONTROL_HIDE_DELAY, timeout_handler, area ); } g_object_unref(settings); return GTK_WIDGET_CLASS(celluloid_video_area_parent_class) ->motion_notify_event(widget, event); } static gboolean render_handler(GtkGLArea *gl_area, GdkGLContext *context, gpointer data) { g_signal_emit_by_name(data, "render"); return TRUE; } static void notify_handler(GObject *gobject, GParamSpec *pspec, gpointer data) { /* Due to a GTK+ bug, the header bar isn't hidden completely if hidden * by a GtkRevealer. Workaround this by manually hiding the revealer * along with the header bar when the revealer completes its transition * to hidden state. */ CelluloidVideoArea *area = data; gboolean reveal_child = TRUE; gboolean child_revealed = TRUE; g_object_get( gobject, "reveal-child", &reveal_child, "child-revealed", &child_revealed, NULL ); gtk_widget_set_visible( GTK_WIDGET(area->header_bar_revealer), area->fullscreen && (reveal_child || child_revealed) ); } static gboolean fs_control_crossing_handler( GtkWidget *widget, GdkEventCrossing *event, gpointer data ) { CELLULOID_VIDEO_AREA(data)->fs_control_hover = (event->type == GDK_ENTER_NOTIFY); return FALSE; } static void celluloid_video_area_class_init(CelluloidVideoAreaClass *klass) { GObjectClass *obj_class = G_OBJECT_CLASS(klass); GtkWidgetClass *wgt_class = GTK_WIDGET_CLASS(klass); GParamSpec *pspec = NULL; obj_class->set_property = set_property; obj_class->get_property = get_property; wgt_class->destroy = destroy; wgt_class->motion_notify_event = motion_notify_event; g_signal_new( "render", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); pspec = g_param_spec_string ( "title", "Title", "The title of the header bar", NULL, G_PARAM_READWRITE ); g_object_class_install_property(obj_class, PROP_TITLE, pspec); } static void celluloid_video_area_init(CelluloidVideoArea *area) { GtkTargetEntry targets[] = DND_TARGETS; /* GDK_BUTTON_RELEASE_MASK is needed so that GtkMenuButtons can * hide their menus when vid_area is clicked. */ const gint extra_events = GDK_BUTTON_PRESS_MASK| GDK_BUTTON_RELEASE_MASK| GDK_POINTER_MOTION_MASK| GDK_SMOOTH_SCROLL_MASK| GDK_SCROLL_MASK; area->stack = gtk_stack_new(); area->draw_area = gtk_drawing_area_new(); area->gl_area = gtk_gl_area_new(); area->control_box = celluloid_control_box_new(); area->header_bar = celluloid_header_bar_new(); area->control_box_revealer = gtk_revealer_new(); area->header_bar_revealer = gtk_revealer_new(); area->last_motion_time = 0; area->last_motion_x = -1; area->last_motion_y = -1; area->timeout_tag = 0; area->fullscreen = FALSE; area->fs_control_hover = FALSE; gtk_style_context_add_class ( gtk_widget_get_style_context(area->draw_area), "celluloid-video-area" ); gtk_drag_dest_set( GTK_WIDGET(area), GTK_DEST_DEFAULT_ALL, targets, G_N_ELEMENTS(targets), GDK_ACTION_COPY ); gtk_widget_add_events(area->draw_area, extra_events); gtk_widget_add_events(area->gl_area, extra_events); gtk_widget_set_valign(area->control_box_revealer, GTK_ALIGN_END); gtk_revealer_set_reveal_child (GTK_REVEALER(area->control_box_revealer), FALSE); gtk_widget_set_valign(area->header_bar_revealer, GTK_ALIGN_START); gtk_revealer_set_reveal_child (GTK_REVEALER(area->header_bar_revealer), FALSE); gtk_widget_show_all(area->control_box); gtk_widget_hide(area->control_box_revealer); gtk_widget_set_no_show_all(area->control_box_revealer, TRUE); gtk_widget_show_all(area->header_bar); gtk_widget_hide(area->header_bar_revealer); gtk_widget_set_no_show_all(area->header_bar_revealer, TRUE); g_signal_connect( area->gl_area, "render", G_CALLBACK(render_handler), area ); g_signal_connect( area->header_bar_revealer, "notify::reveal-child", G_CALLBACK(notify_handler), area ); g_signal_connect( area->header_bar_revealer, "notify::child-revealed", G_CALLBACK(notify_handler), area ); g_signal_connect( area, "enter-notify-event", G_CALLBACK(fs_control_crossing_handler), area ); g_signal_connect( area, "leave-notify-event", G_CALLBACK(fs_control_crossing_handler), area ); gtk_stack_add_named(GTK_STACK(area->stack), area->draw_area, "draw"); gtk_stack_add_named(GTK_STACK(area->stack), area->gl_area, "gl"); gtk_stack_set_visible_child(GTK_STACK(area->stack), area->draw_area); gtk_container_add( GTK_CONTAINER(area->header_bar_revealer), area->header_bar ); gtk_container_add( GTK_CONTAINER(area->control_box_revealer), area->control_box ); gtk_overlay_add_overlay(GTK_OVERLAY(area), area->control_box_revealer); gtk_overlay_add_overlay(GTK_OVERLAY(area), area->header_bar_revealer); gtk_container_add(GTK_CONTAINER(area), area->stack); } GtkWidget * celluloid_video_area_new() { return GTK_WIDGET(g_object_new(celluloid_video_area_get_type(), NULL)); } void celluloid_video_area_update_track_list( CelluloidVideoArea *area, const GPtrArray *track_list ) { celluloid_header_bar_update_track_list (CELLULOID_HEADER_BAR(area->header_bar), track_list); } void celluloid_video_area_update_disc_list( CelluloidVideoArea *area, const GPtrArray *disc_list ) { celluloid_header_bar_update_disc_list (CELLULOID_HEADER_BAR(area->header_bar), disc_list); } void celluloid_video_area_set_fullscreen_state( CelluloidVideoArea *area, gboolean fullscreen ) { if(area->fullscreen != fullscreen) { area->fullscreen = fullscreen; gtk_widget_hide(area->header_bar_revealer); set_cursor_visible(area, !fullscreen); gtk_revealer_set_reveal_child (GTK_REVEALER(area->control_box_revealer), FALSE); gtk_revealer_set_reveal_child (GTK_REVEALER(area->header_bar_revealer), FALSE); celluloid_header_bar_set_fullscreen_state (CELLULOID_HEADER_BAR(area->header_bar), fullscreen); if(area->control_box) { celluloid_control_box_set_fullscreen_state (CELLULOID_CONTROL_BOX(area->control_box), fullscreen); } } } void celluloid_video_area_set_control_box_visible( CelluloidVideoArea *area, gboolean visible ) { gtk_widget_set_visible(area->control_box_revealer, visible); } void celluloid_video_area_set_use_opengl( CelluloidVideoArea *area, gboolean use_opengl ) { gtk_stack_set_visible_child ( GTK_STACK(area->stack), use_opengl?area->gl_area:area->draw_area ); } void celluloid_video_area_queue_render(CelluloidVideoArea *area) { gtk_gl_area_queue_render(GTK_GL_AREA(area->gl_area)); } GtkDrawingArea * celluloid_video_area_get_draw_area(CelluloidVideoArea *area) { return GTK_DRAWING_AREA(area->draw_area); } GtkGLArea * celluloid_video_area_get_gl_area(CelluloidVideoArea *area) { return GTK_GL_AREA(area->gl_area); } CelluloidControlBox * celluloid_video_area_get_control_box(CelluloidVideoArea *area) { return CELLULOID_CONTROL_BOX(area->control_box); } gint64 celluloid_video_area_get_xid(CelluloidVideoArea *area) { #ifdef GDK_WINDOWING_X11 if(GDK_IS_X11_DISPLAY(gdk_display_get_default())) { GtkWidget *parent = gtk_widget_get_parent(GTK_WIDGET(area)); GdkWindow *window = NULL; if(parent && !gtk_widget_get_realized(area->draw_area)) { gtk_widget_realize(area->draw_area); } window = gtk_widget_get_window(area->draw_area); if(!window) { g_critical("Failed to get XID of video area"); } return window?(gint64)gdk_x11_window_get_xid(window):-1; } #endif return -1; } celluloid-0.18/src/celluloid-video-area.h000066400000000000000000000036701356026115400203550ustar00rootroot00000000000000/* * Copyright (c) 2016-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef VIDEO_AREA_H #define VIDEO_AREA_H #include #include #include #include "celluloid-control-box.h" #define CELLULOID_TYPE_VIDEO_AREA (celluloid_video_area_get_type ()) G_DECLARE_FINAL_TYPE(CelluloidVideoArea, celluloid_video_area, CELLULOID, VIDEO_AREA, GtkOverlay) GtkWidget * celluloid_video_area_new(void); void celluloid_video_area_update_track_list( CelluloidVideoArea *hdr, const GPtrArray *track_list ); void celluloid_video_area_update_disc_list( CelluloidVideoArea *hdr, const GPtrArray *disc_list ); void celluloid_video_area_set_fullscreen_state( CelluloidVideoArea *area, gboolean fullscreen ); void celluloid_video_area_set_control_box_visible( CelluloidVideoArea *area, gboolean visible ); void celluloid_video_area_set_use_opengl( CelluloidVideoArea *area, gboolean use_opengl ); void celluloid_video_area_queue_render(CelluloidVideoArea *area); GtkDrawingArea * celluloid_video_area_get_draw_area(CelluloidVideoArea *area); GtkGLArea * celluloid_video_area_get_gl_area(CelluloidVideoArea *area); CelluloidControlBox * celluloid_video_area_get_control_box(CelluloidVideoArea *area); gint64 celluloid_video_area_get_xid(CelluloidVideoArea *area); #endif celluloid-0.18/src/celluloid-view.c000066400000000000000000001067321356026115400173110ustar00rootroot00000000000000/* * Copyright (c) 2017-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include "celluloid-view.h" #include "celluloid-file-chooser.h" #include "celluloid-open-location-dialog.h" #include "celluloid-preferences-dialog.h" #include "celluloid-shortcuts-window.h" #include "celluloid-authors.h" #include "celluloid-marshal.h" #include "celluloid-menu.h" #include "celluloid-common.h" #include "celluloid-def.h" enum { PROP_0, PROP_PLAYLIST_COUNT, PROP_PAUSE, PROP_VOLUME, PROP_DURATION, PROP_PLAYLIST_POS, PROP_TRACK_LIST, PROP_DISC_LIST, PROP_SKIP_ENABLED, PROP_LOOP, PROP_BORDER, PROP_FULLSCREEN, PROP_DISPLAY_FPS, N_PROPERTIES }; struct _CelluloidView { CelluloidMainWindow parent; /* Properties */ gint playlist_count; gboolean pause; gdouble volume; gdouble duration; gint playlist_pos; GPtrArray *track_list; GPtrArray *disc_list; gboolean skip_enabled; gboolean control_box_enabled; gboolean loop; gboolean border; gboolean fullscreen; gdouble display_fps; }; struct _CelluloidViewClass { CelluloidMainWindowClass parent_class; }; G_DEFINE_TYPE(CelluloidView, celluloid_view, CELLULOID_TYPE_MAIN_WINDOW) static void constructed(GObject *object); static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ); static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ); static void load_css(CelluloidView *view); static void load_settings(CelluloidView *view); static void save_playlist(CelluloidView *view, GFile *file, GError **error); static void show_message_dialog( CelluloidMainWindow *wnd, GtkMessageType type, const gchar *title, const gchar *prefix, const gchar *msg ); static void update_display_fps(CelluloidView *view); /* Dialog responses */ static void open_dialog_response_handler(GtkDialog *dialog, gint response_id, gpointer data); static void open_location_dialog_response_handler( GtkDialog *dialog, gint response_id, gpointer data ); static void open_audio_track_dialog_response_handler( GtkDialog *dialog, gint response_id, gpointer data ); static void open_subtitle_track_dialog_response_handler( GtkDialog *dialog, gint response_id, gpointer data ); static void preferences_dialog_response_handler( GtkDialog *dialog, gint response_id, gpointer data ); static void realize_handler(GtkWidget *widget, gpointer data); static void size_allocate_handler( GtkWidget *widget, GdkRectangle *allocation, gpointer data ); static void render_handler(CelluloidVideoArea *area, gpointer data); static gboolean draw_handler(GtkWidget *widget, cairo_t *cr, gpointer data); static void drag_data_handler( GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *sel_data, guint info, guint time, gpointer data ); static gboolean window_state_handler(GtkWidget *widget, GdkEvent *event, gpointer data); static void screen_changed_handler( GtkWidget *wnd, GdkScreen *previous_screen, gpointer data ); static gboolean delete_handler(GtkWidget *widget, GdkEvent *event, gpointer data); static void playlist_row_activated_handler( CelluloidPlaylistWidget *playlist, gint64 pos, gpointer data ); static void playlist_row_inserted_handler( CelluloidPlaylistWidget *widget, gint pos, gpointer data ); static void playlist_row_deleted_handler( CelluloidPlaylistWidget *widget, gint pos, gpointer data ); static void playlist_row_reordered_handler( CelluloidPlaylistWidget *widget, gint src, gint dest, gpointer data ); static void constructed(GObject *object) { G_OBJECT_CLASS(celluloid_view_parent_class)->constructed(object); CelluloidView *view = CELLULOID_VIEW(object); CelluloidMainWindow *wnd = CELLULOID_MAIN_WINDOW(view); CelluloidVideoArea *video_area = celluloid_main_window_get_video_area(wnd); CelluloidPlaylistWidget *playlist = celluloid_main_window_get_playlist(wnd); CelluloidControlBox *control_box = celluloid_main_window_get_control_box(wnd); celluloid_main_window_load_state(wnd); load_css(view); load_settings(view); g_object_bind_property( view, "duration", control_box, "duration", G_BINDING_DEFAULT ); g_object_bind_property( view, "pause", control_box, "pause", G_BINDING_DEFAULT ); g_object_bind_property( view, "skip-enabled", control_box, "skip-enabled", G_BINDING_DEFAULT ); g_object_bind_property( view, "loop", control_box, "loop", G_BINDING_BIDIRECTIONAL ); g_object_bind_property( view, "volume", control_box, "volume", G_BINDING_BIDIRECTIONAL ); g_object_bind_property( playlist, "playlist-count", view, "playlist-count", G_BINDING_DEFAULT ); g_signal_connect( video_area, "size-allocate", G_CALLBACK(size_allocate_handler), view ); g_signal_connect( video_area, "render", G_CALLBACK(render_handler), view ); g_signal_connect( video_area, "drag-data-received", G_CALLBACK(drag_data_handler), view ); g_signal_connect( playlist, "drag-data-received", G_CALLBACK(drag_data_handler), view ); g_signal_connect( wnd, "window-state-event", G_CALLBACK(window_state_handler), view ); g_signal_connect( wnd, "screen-changed", G_CALLBACK(screen_changed_handler), view ); g_signal_connect( wnd, "delete-event", G_CALLBACK(delete_handler), view ); g_signal_connect( playlist, "row-activated", G_CALLBACK(playlist_row_activated_handler), view ); g_signal_connect( playlist, "row-inserted", G_CALLBACK(playlist_row_inserted_handler), view ); g_signal_connect( playlist, "row-deleted", G_CALLBACK(playlist_row_deleted_handler), view ); g_signal_connect( playlist, "rows-reordered", G_CALLBACK(playlist_row_reordered_handler), view ); } static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ) { CelluloidView *self = CELLULOID_VIEW(object); CelluloidMainWindow *wnd = CELLULOID_MAIN_WINDOW(self); CelluloidControlBox* control_box = celluloid_main_window_get_control_box(wnd); switch(property_id) { case PROP_PLAYLIST_COUNT: self->playlist_count = g_value_get_int(value); g_object_set( control_box, "enabled", self->playlist_count > 0, NULL ); if(self->playlist_count <= 0) { celluloid_view_reset(self); } break; case PROP_PAUSE: self->pause = g_value_get_boolean(value); break; case PROP_VOLUME: self->volume = g_value_get_double(value); break; case PROP_DURATION: self->duration = g_value_get_double(value); break; case PROP_PLAYLIST_POS: self->playlist_pos = g_value_get_int(value); CelluloidPlaylistWidget *playlist = celluloid_main_window_get_playlist(wnd); celluloid_playlist_widget_set_indicator_pos (playlist, self->playlist_pos); break; case PROP_TRACK_LIST: self->track_list = g_value_get_pointer(value); celluloid_main_window_update_track_list(wnd, self->track_list); break; case PROP_DISC_LIST: self->disc_list = g_value_get_pointer(value); celluloid_main_window_update_disc_list(wnd, self->disc_list); break; case PROP_SKIP_ENABLED: self->skip_enabled = g_value_get_boolean(value); break; case PROP_LOOP: self->loop = g_value_get_boolean(value); break; case PROP_BORDER: self->border = g_value_get_boolean(value); gtk_window_set_decorated(GTK_WINDOW(wnd), self->border); break; case PROP_FULLSCREEN: self->fullscreen = g_value_get_boolean(value); celluloid_main_window_set_fullscreen(wnd, self->fullscreen); break; case PROP_DISPLAY_FPS: self->display_fps = g_value_get_double(value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ) { CelluloidView *self = CELLULOID_VIEW(object); switch(property_id) { case PROP_PLAYLIST_COUNT: g_value_set_int(value, self->playlist_count); break; case PROP_PAUSE: g_value_set_boolean(value, self->pause); break; case PROP_VOLUME: g_value_set_double(value, self->volume); break; case PROP_DURATION: g_value_set_double(value, self->duration); break; case PROP_PLAYLIST_POS: g_value_set_int(value, self->playlist_pos); break; case PROP_TRACK_LIST: g_value_set_pointer(value, self->track_list); break; case PROP_DISC_LIST: g_value_set_pointer(value, self->disc_list); break; case PROP_SKIP_ENABLED: g_value_set_boolean(value, self->skip_enabled); break; case PROP_LOOP: g_value_set_boolean(value, self->loop); break; case PROP_BORDER: g_value_set_boolean(value, self->border); break; case PROP_FULLSCREEN: g_value_set_boolean(value, self->fullscreen); break; case PROP_DISPLAY_FPS: g_value_set_double(value, self->display_fps); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void load_css(CelluloidView *view) { const gchar *style; GtkCssProvider *style_provider; gboolean css_loaded; style = ".celluloid-video-area{background-color: black}"; style_provider = gtk_css_provider_new(); css_loaded = gtk_css_provider_load_from_data (style_provider, style, -1, NULL); if(!css_loaded) { g_warning ("Failed to apply background color css"); } gtk_style_context_add_provider_for_screen ( gtk_window_get_screen(GTK_WINDOW(view)), GTK_STYLE_PROVIDER(style_provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION ); g_object_unref(style_provider); } static void load_settings(CelluloidView *view) { GSettings *settings = g_settings_new(CONFIG_ROOT); CelluloidMainWindow *wnd = CELLULOID_MAIN_WINDOW(view); CelluloidControlBox *control_box = celluloid_main_window_get_control_box(wnd); gboolean csd_enable; gboolean dark_theme_enable; csd_enable = g_settings_get_boolean (settings, "csd-enable"); dark_theme_enable = g_settings_get_boolean (settings, "dark-theme-enable"); g_object_set( control_box, "show-fullscreen-button", !csd_enable, "skip-enabled", FALSE, NULL ); g_object_set( gtk_settings_get_default(), "gtk-application-prefer-dark-theme", dark_theme_enable, NULL ); g_object_unref(settings); } static void save_playlist(CelluloidView *view, GFile *file, GError **error) { CelluloidMainWindow *wnd = CELLULOID_MAIN_WINDOW(view); CelluloidPlaylistWidget *wgt = celluloid_main_window_get_playlist(wnd); GPtrArray *playlist = celluloid_playlist_widget_get_contents(wgt); gboolean rc = TRUE; GOutputStream *dest_stream = NULL; if(file) { GFileOutputStream *file_stream; file_stream = g_file_replace( file, NULL, FALSE, G_FILE_CREATE_NONE, NULL, error ); dest_stream = G_OUTPUT_STREAM(file_stream); rc = !!dest_stream; } for(guint i = 0; rc && i < playlist->len; i++) { gsize written; CelluloidPlaylistEntry *entry = g_ptr_array_index(playlist, i); rc = g_output_stream_printf( dest_stream, &written, NULL, NULL, "%s\n", entry->filename); } if(dest_stream) { g_output_stream_close(dest_stream, NULL, error); } g_ptr_array_free(playlist, TRUE); } void show_message_dialog( CelluloidMainWindow *wnd, GtkMessageType type, const gchar *title, const gchar *prefix, const gchar *msg ) { GtkWidget *dialog; GtkWidget *msg_area; GList *children; if(prefix) { gchar *prefix_escaped = g_markup_printf_escaped("%s", prefix); gchar *msg_escaped = g_markup_printf_escaped("%s", msg); dialog = gtk_message_dialog_new_with_markup ( GTK_WINDOW(wnd), GTK_DIALOG_DESTROY_WITH_PARENT, type, GTK_BUTTONS_OK, "[%s] %s", prefix_escaped, msg_escaped ); g_free(prefix_escaped); g_free(msg_escaped); } else { dialog = gtk_message_dialog_new ( GTK_WINDOW(wnd), GTK_DIALOG_DESTROY_WITH_PARENT, type, GTK_BUTTONS_OK, "%s", msg ); } msg_area = gtk_message_dialog_get_message_area (GTK_MESSAGE_DIALOG(dialog)); children = gtk_container_get_children(GTK_CONTAINER(msg_area)); for(GList *iter = children; iter; iter = g_list_next(iter)) { if(GTK_IS_LABEL(iter->data)) { gtk_label_set_line_wrap_mode (GTK_LABEL(iter->data), PANGO_WRAP_WORD_CHAR); } } g_list_free(children); g_signal_connect( dialog, "response", G_CALLBACK(gtk_widget_destroy), NULL ); gtk_window_set_title(GTK_WINDOW(dialog), title); gtk_window_set_modal(GTK_WINDOW(dialog), TRUE); gtk_widget_show_all(dialog); } static void update_display_fps(CelluloidView *view) { GtkWidget *wnd = GTK_WIDGET(view); GdkWindow *gdkwindow = gtk_widget_get_window(wnd); GdkScreen *screen = gtk_window_get_screen(GTK_WINDOW(wnd)); GdkDisplay *display = gdk_screen_get_display(screen); GdkMonitor *monitor = gdk_display_get_monitor_at_window (display, gdkwindow); view->display_fps = gdk_monitor_get_refresh_rate(monitor)/1000.0; g_object_notify(G_OBJECT(view), "display-fps"); } static void open_dialog_response_handler(GtkDialog *dialog, gint response_id, gpointer data) { GPtrArray *args = data; CelluloidView *view = g_ptr_array_index(args, 0); gboolean *append = g_ptr_array_index(args, 1); if(response_id == GTK_RESPONSE_ACCEPT) { GtkFileChooser *chooser = GTK_FILE_CHOOSER(dialog); GSList *uri_slist = gtk_file_chooser_get_filenames(chooser); if(uri_slist) { const gchar **uris = gslist_to_array(uri_slist); g_signal_emit_by_name(view, "file-open", uris, *append); g_free(uris); } g_slist_free_full(uri_slist, g_free); } celluloid_file_chooser_destroy(dialog); g_free(append); g_ptr_array_free(args, TRUE); } static void open_location_dialog_response_handler( GtkDialog *dialog, gint response_id, gpointer data ) { GPtrArray *args = data; CelluloidView *view = g_ptr_array_index(args, 0); gboolean *append = g_ptr_array_index(args, 1); if(response_id == GTK_RESPONSE_ACCEPT) { CelluloidOpenLocationDialog *location_dialog; const gchar *uris[2]; location_dialog = CELLULOID_OPEN_LOCATION_DIALOG(dialog); uris[0] = celluloid_open_location_dialog_get_string (location_dialog); uris[1] = NULL; g_signal_emit_by_name(view, "file-open", uris, *append); } gtk_widget_destroy(GTK_WIDGET(dialog)); g_free(append); g_ptr_array_free(args, TRUE); } static void open_audio_track_dialog_response_handler( GtkDialog *dialog, gint response_id, gpointer data ) { if(response_id == GTK_RESPONSE_ACCEPT) { GtkFileChooser *chooser = GTK_FILE_CHOOSER(dialog); GSList *uri_list = gtk_file_chooser_get_filenames(chooser); for(GSList *iter = uri_list; iter; iter = g_slist_next(iter)) { g_signal_emit_by_name(data, "audio-track-load", *iter); } g_slist_free_full(uri_list, g_free); } celluloid_file_chooser_destroy(CELLULOID_FILE_CHOOSER(dialog)); } static void open_subtitle_track_dialog_response_handler( GtkDialog *dialog, gint response_id, gpointer data ) { if(response_id == GTK_RESPONSE_ACCEPT) { GtkFileChooser *chooser = GTK_FILE_CHOOSER(dialog); GSList *uri_list = gtk_file_chooser_get_filenames(chooser); for(GSList *iter = uri_list; iter; iter = g_slist_next(iter)) { g_signal_emit_by_name(data, "subtitle-track-load", *iter); } g_slist_free_full(uri_list, g_free); } celluloid_file_chooser_destroy(CELLULOID_FILE_CHOOSER(dialog)); } static void preferences_dialog_response_handler( GtkDialog *dialog, gint response_id, gpointer data ) { if(response_id == GTK_RESPONSE_ACCEPT) { CelluloidMainWindow *wnd; GSettings *settings; gboolean csd_enable; wnd = CELLULOID_MAIN_WINDOW(data); settings = g_settings_new(CONFIG_ROOT); csd_enable = g_settings_get_boolean(settings, "csd-enable"); if(celluloid_main_window_get_csd_enabled(wnd) != csd_enable) { show_message_dialog( wnd, GTK_MESSAGE_INFO, g_get_application_name(), NULL, _("Enabling or disabling " "client-side decorations " "requires restarting to " "take effect.") ); } gtk_widget_queue_draw(GTK_WIDGET(wnd)); g_signal_emit_by_name(data, "preferences-updated"); g_object_unref(settings); } gtk_widget_destroy(GTK_WIDGET(dialog)); } static void realize_handler(GtkWidget *widget, gpointer data) { update_display_fps(CELLULOID_VIEW(widget)); } static void size_allocate_handler( GtkWidget *widget, GdkRectangle *allocation, gpointer data ) { g_signal_emit_by_name( data, "video-area-resize", allocation->width, allocation->height ); } static void render_handler(CelluloidVideoArea *area, gpointer data) { g_signal_emit_by_name(data, "render"); } static gboolean draw_handler(GtkWidget *widget, cairo_t *cr, gpointer data) { CelluloidView *view = CELLULOID_VIEW(widget); CelluloidMainWindow *wnd = CELLULOID_MAIN_WINDOW(view); CelluloidPlaylistWidget *playlist = celluloid_main_window_get_playlist(wnd); const GSignalMatchType match = G_SIGNAL_MATCH_ID|G_SIGNAL_MATCH_DATA; const guint signal_id = g_signal_lookup("draw", CELLULOID_TYPE_VIEW); g_signal_handlers_disconnect_matched (view, match, signal_id, 0, 0, NULL, NULL); if(celluloid_playlist_widget_empty(playlist)) { CelluloidControlBox *control_box; control_box = celluloid_main_window_get_control_box(wnd); g_object_set(control_box, "enabled", FALSE, NULL); } g_signal_emit_by_name(view, "ready"); return FALSE; } static void drag_data_handler( GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *sel_data, guint info, guint time, gpointer data ) { CelluloidView *view = data; gchar *type = gdk_atom_name(gtk_selection_data_get_target(sel_data)); const guchar *raw_data = gtk_selection_data_get_data(sel_data); gchar **uri_list = gtk_selection_data_get_uris(sel_data); gboolean append = CELLULOID_IS_PLAYLIST_WIDGET(widget); if(g_strcmp0(type, "PLAYLIST_PATH") == 0) { GtkTreePath *path = gtk_tree_path_new_from_string ((const gchar *)raw_data); gint pos = gtk_tree_path_get_indices(path)[0]; g_assert(path); g_signal_emit_by_name(view, "playlist-item-activated", pos); gtk_tree_path_free(path); } else { if(!uri_list) { uri_list = g_malloc(2*sizeof(gchar *)); uri_list[0] = g_strdup((gchar *)raw_data); uri_list[1] = NULL; } g_signal_emit_by_name(view, "file-open", uri_list, append); } g_strfreev(uri_list); g_free(type); } static gboolean window_state_handler(GtkWidget *widget, GdkEvent *event, gpointer data) { CelluloidView *view = data; GdkEventWindowState *state = (GdkEventWindowState *)event; if(state->changed_mask&GDK_WINDOW_STATE_FULLSCREEN) { view->fullscreen = state->new_window_state& GDK_WINDOW_STATE_FULLSCREEN; g_object_notify(data, "fullscreen"); } return FALSE; } static void screen_changed_handler( GtkWidget *wnd, GdkScreen *previous_screen, gpointer data ) { update_display_fps(data); } static gboolean delete_handler(GtkWidget *widget, GdkEvent *event, gpointer data) { if(!celluloid_main_window_get_fullscreen(CELLULOID_MAIN_WINDOW(widget))) { celluloid_main_window_save_state(CELLULOID_MAIN_WINDOW(widget)); } return FALSE; } static void playlist_row_activated_handler( CelluloidPlaylistWidget *playlist, gint64 pos, gpointer data ) { g_signal_emit_by_name(data, "playlist-item-activated", pos); } static void playlist_row_inserted_handler( CelluloidPlaylistWidget *widget, gint pos, gpointer data ) { g_signal_emit_by_name(data, "playlist-item-inserted", pos); } static void playlist_row_deleted_handler( CelluloidPlaylistWidget *widget, gint pos, gpointer data ) { if(celluloid_playlist_widget_empty(widget)) { celluloid_view_reset(data); } g_signal_emit_by_name(data, "playlist-item-deleted", pos); } static void playlist_row_reordered_handler( CelluloidPlaylistWidget *widget, gint src, gint dest, gpointer data ) { g_signal_emit_by_name(data, "playlist-reordered", src, dest); } static void celluloid_view_class_init(CelluloidViewClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS(klass); GParamSpec *pspec = NULL; object_class->constructed = constructed; object_class->set_property = set_property; object_class->get_property = get_property; pspec = g_param_spec_int ( "playlist-count", "Playlist count", "The number of items in playlist", 0, G_MAXINT, 0, G_PARAM_READWRITE ); g_object_class_install_property(object_class, PROP_PLAYLIST_COUNT, pspec); pspec = g_param_spec_boolean ( "pause", "Pause", "Whether or not the player is paused", FALSE, G_PARAM_READWRITE ); g_object_class_install_property(object_class, PROP_PAUSE, pspec); pspec = g_param_spec_double ( "volume", "Volume", "The volume the volume button is set to", 0.0, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE ); g_object_class_install_property(object_class, PROP_VOLUME, pspec); pspec = g_param_spec_double ( "duration", "Duration", "The duration the seek bar is using", 0.0, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE ); g_object_class_install_property(object_class, PROP_DURATION, pspec); pspec = g_param_spec_int ( "playlist-pos", "Playlist position", "The position of the current item in playlist", 0, G_MAXINT, 0, G_PARAM_READWRITE ); g_object_class_install_property(object_class, PROP_PLAYLIST_POS, pspec); pspec = g_param_spec_pointer ( "track-list", "Track list", "The list of tracks in the playing file", G_PARAM_READWRITE ); g_object_class_install_property(object_class, PROP_TRACK_LIST, pspec); pspec = g_param_spec_pointer ( "disc-list", "Disc list", "The list of mounted discs", G_PARAM_READWRITE ); g_object_class_install_property(object_class, PROP_DISC_LIST, pspec); pspec = g_param_spec_boolean ( "skip-enabled", "Skip enabled", "Whether or not skip buttons are shown", FALSE, G_PARAM_READWRITE ); g_object_class_install_property(object_class, PROP_SKIP_ENABLED, pspec); pspec = g_param_spec_boolean ( "loop", "Loop", "Whether or not the the loop button is active", FALSE, G_PARAM_READWRITE ); g_object_class_install_property(object_class, PROP_LOOP, pspec); pspec = g_param_spec_boolean ( "border", "Border", "Whether or not the main window should have decorations", FALSE, G_PARAM_READWRITE ); g_object_class_install_property(object_class, PROP_BORDER, pspec); pspec = g_param_spec_boolean ( "fullscreen", "Fullscreen", "Whether or not the player is current in fullscreen mode", FALSE, G_PARAM_READWRITE ); g_object_class_install_property(object_class, PROP_FULLSCREEN, pspec); pspec = g_param_spec_double ( "display-fps", "Display FPS", "The display rate of the monitor the window is on", 0.0, G_MAXDOUBLE, 0.0, G_PARAM_READABLE ); g_object_class_install_property(object_class, PROP_DISPLAY_FPS, pspec); g_signal_new( "video-area-resize", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST|G_SIGNAL_DETAILED, 0, NULL, NULL, g_cclosure_gen_marshal_VOID__INT_INT, G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_INT ); /* Controls-related signals */ g_signal_new( "volume-changed", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__DOUBLE, G_TYPE_NONE, 1, G_TYPE_DOUBLE ); g_signal_new( "ready", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); g_signal_new( "render", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); g_signal_new( "preferences-updated", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); g_signal_new( "audio-track-load", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING ); g_signal_new( "subtitle-track-load", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING ); g_signal_new( "file-open", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_gen_marshal_VOID__POINTER_BOOLEAN, G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_BOOLEAN ); g_signal_new( "playlist-item-activated", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT ); g_signal_new( "playlist-item-inserted", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT ); g_signal_new( "playlist-item-deleted", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT ); g_signal_new( "playlist-reordered", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_gen_marshal_VOID__INT_INT, G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_INT ); } static void celluloid_view_init(CelluloidView *view) { view->playlist_count = 0; view->pause = FALSE; view->volume = 0.0; view->duration = 0.0; view->playlist_pos = 0; view->disc_list = NULL; view->skip_enabled = FALSE; view->loop = FALSE; view->border = FALSE; view->fullscreen = FALSE; view->display_fps = 0; g_signal_connect(view, "realize", G_CALLBACK(realize_handler), NULL); g_signal_connect_after(view, "draw", G_CALLBACK(draw_handler), NULL); } CelluloidView * celluloid_view_new(CelluloidApplication *app, gboolean always_floating) { GObject *obj = g_object_new( celluloid_view_get_type(), "application", app, "always-use-floating-controls", always_floating, NULL ); CelluloidView *view = CELLULOID_VIEW(obj); GtkApplication *gtk_app = GTK_APPLICATION(app); GSettings *settings = g_settings_new(CONFIG_ROOT); if(g_settings_get_boolean(settings, "csd-enable")) { celluloid_main_window_enable_csd(CELLULOID_MAIN_WINDOW(view)); } else { GMenu *full_menu = g_menu_new(); celluloid_menu_build_full(full_menu, NULL, NULL); gtk_application_set_menubar(gtk_app, G_MENU_MODEL(full_menu)); } g_object_unref(settings); return view; } CelluloidMainWindow * celluloid_view_get_main_window(CelluloidView *view) { return CELLULOID_MAIN_WINDOW(view); } void celluloid_view_show_open_dialog(CelluloidView *view, gboolean append) { CelluloidFileChooser *chooser; GPtrArray *args; gboolean *append_buf; chooser = celluloid_file_chooser_new( append? _("Add File to Playlist"): _("Open File"), GTK_WINDOW(view), GTK_FILE_CHOOSER_ACTION_OPEN ); args = g_ptr_array_new(); append_buf = g_malloc(sizeof(gboolean)); *append_buf = append; g_ptr_array_add(args, view); g_ptr_array_add(args, append_buf); g_signal_connect( chooser, "response", G_CALLBACK(open_dialog_response_handler), args ); celluloid_file_chooser_set_default_filters(chooser, TRUE, TRUE, TRUE, TRUE); celluloid_file_chooser_show(chooser); } void celluloid_view_show_open_location_dialog(CelluloidView *view, gboolean append) { GtkWidget *dlg; GPtrArray *args; gboolean *append_buf; dlg = celluloid_open_location_dialog_new ( GTK_WINDOW(view), append? _("Add Location to Playlist"): _("Open Location") ); args = g_ptr_array_sized_new(2); append_buf = g_malloc(sizeof(gboolean)); *append_buf = append; g_ptr_array_add(args, view); g_ptr_array_add(args, append_buf); g_signal_connect ( dlg, "response", G_CALLBACK(open_location_dialog_response_handler), args ); gtk_widget_show_all(dlg); } void celluloid_view_show_open_audio_track_dialog(CelluloidView *view) { CelluloidFileChooser *chooser = celluloid_file_chooser_new ( _("Load Audio Track…"), GTK_WINDOW(view), GTK_FILE_CHOOSER_ACTION_OPEN ); g_signal_connect ( chooser, "response", G_CALLBACK(open_audio_track_dialog_response_handler), view ); celluloid_file_chooser_set_default_filters (chooser, TRUE, FALSE, FALSE, FALSE); celluloid_file_chooser_show(chooser); } void celluloid_view_show_open_subtitle_track_dialog(CelluloidView *view) { CelluloidFileChooser *chooser = celluloid_file_chooser_new ( _("Load Subtitle Track…"), GTK_WINDOW(view), GTK_FILE_CHOOSER_ACTION_OPEN ); g_signal_connect ( chooser, "response", G_CALLBACK(open_subtitle_track_dialog_response_handler), view ); celluloid_file_chooser_set_default_filters (chooser, FALSE, FALSE, FALSE, TRUE); celluloid_file_chooser_show(chooser); } void celluloid_view_show_save_playlist_dialog(CelluloidView *view) { GFile *dest_file; CelluloidFileChooser *file_chooser; GtkFileChooser *gtk_chooser; GError *error; dest_file = NULL; file_chooser = celluloid_file_chooser_new ( _("Save Playlist"), GTK_WINDOW(view), GTK_FILE_CHOOSER_ACTION_SAVE ); gtk_chooser = GTK_FILE_CHOOSER(file_chooser); error = NULL; gtk_file_chooser_set_current_name(gtk_chooser, "playlist.m3u"); if(celluloid_file_chooser_run(file_chooser) == GTK_RESPONSE_ACCEPT) { /* There should be only one file selected. */ dest_file = gtk_file_chooser_get_file(gtk_chooser); } celluloid_file_chooser_destroy(file_chooser); if(dest_file) { save_playlist(view, dest_file, &error); g_object_unref(dest_file); } if(error) { show_message_dialog( CELLULOID_MAIN_WINDOW(view), GTK_MESSAGE_ERROR, _("Error"), NULL, error->message ); g_error_free(error); } } void celluloid_view_show_preferences_dialog(CelluloidView *view) { GtkWidget *dialog = celluloid_preferences_dialog_new(GTK_WINDOW(view)); g_signal_connect_after( dialog, "response", G_CALLBACK(preferences_dialog_response_handler), view ); gtk_widget_show_all(dialog); } void celluloid_view_show_shortcuts_dialog(CelluloidView *view) { GtkWidget *wnd = celluloid_shortcuts_window_new(GTK_WINDOW(view)); gtk_widget_show_all(wnd); } void celluloid_view_show_about_dialog(CelluloidView *view) { const gchar *const authors[] = AUTHORS; gtk_show_about_dialog( GTK_WINDOW(view), "logo-icon-name", ICON_NAME, "version", VERSION, "comments", _("A GTK frontend for MPV"), "website", "https://github.com/celluloid-player/celluloid", "license-type", GTK_LICENSE_GPL_3_0, "copyright", "\u00A9 2014-2019 The Celluloid authors", "authors", authors, "translator-credits", _("translator-credits"), NULL ); } void celluloid_view_show_message_dialog( CelluloidView *view, GtkMessageType type, const gchar *title, const gchar *prefix, const gchar *msg ) { show_message_dialog (CELLULOID_MAIN_WINDOW(view), type, title, prefix, msg); } void celluloid_view_present(CelluloidView *view) { gtk_window_present(GTK_WINDOW(view)); } void celluloid_view_quit(CelluloidView *view) { gtk_window_close(GTK_WINDOW(view)); } void celluloid_view_reset(CelluloidView *view) { celluloid_main_window_reset(CELLULOID_MAIN_WINDOW(view)); } void celluloid_view_queue_render(CelluloidView *view) { CelluloidMainWindow *wnd = CELLULOID_MAIN_WINDOW(view); CelluloidVideoArea *area = celluloid_main_window_get_video_area(wnd); celluloid_video_area_queue_render(area); } void celluloid_view_make_gl_context_current(CelluloidView *view) { CelluloidMainWindow *wnd = CELLULOID_MAIN_WINDOW(view); CelluloidVideoArea *video_area = celluloid_main_window_get_video_area(wnd); GtkGLArea *gl_area = celluloid_video_area_get_gl_area(video_area); gtk_widget_realize(GTK_WIDGET(gl_area)); gtk_gl_area_make_current(gl_area); } void celluloid_view_set_use_opengl_cb(CelluloidView *view, gboolean use_opengl_cb) { CelluloidMainWindow *wnd = CELLULOID_MAIN_WINDOW(view); CelluloidVideoArea *area = celluloid_main_window_get_video_area(wnd); celluloid_video_area_set_use_opengl(area, use_opengl_cb); } gint celluloid_view_get_scale_factor(CelluloidView *view) { GdkWindow *gdk_window = gtk_widget_get_window(GTK_WIDGET(view)); return gdk_window_get_scale_factor(gdk_window); } void celluloid_view_get_video_area_geometry( CelluloidView *view, gint *width, gint *height ) { CelluloidMainWindow *wnd = CELLULOID_MAIN_WINDOW(view); CelluloidVideoArea *area = celluloid_main_window_get_video_area(wnd); GtkAllocation allocation; gtk_widget_get_allocation(GTK_WIDGET(area), &allocation); *width = allocation.width; *height = allocation.height; } void celluloid_view_move( CelluloidView *view, gboolean flip_x, gboolean flip_y, GValue *x, GValue *y ) { GtkWindow *window = GTK_WINDOW(view); GdkWindow *gdk_window = gtk_widget_get_window(GTK_WIDGET(window)); GdkDisplay *display = gdk_display_get_default(); GdkMonitor *monitor = gdk_display_get_monitor_at_window (display, gdk_window); GdkRectangle monitor_geom = {0}; gint64 x_pos = -1; gint64 y_pos = -1; gint window_width = 0; gint window_height = 0; gint space_x = 0; gint space_y = 0; gtk_window_get_size(window, &window_width, &window_height); gdk_monitor_get_geometry(monitor, &monitor_geom); space_x = monitor_geom.width-window_width; space_y = monitor_geom.height-window_height; if(G_VALUE_HOLDS_DOUBLE(x)) { x_pos = (gint64)(g_value_get_double(x)*space_x); } else { x_pos = flip_x?space_x-g_value_get_int64(x):g_value_get_int64(x); } if(G_VALUE_HOLDS_DOUBLE(y)) { y_pos = (gint64)(g_value_get_double(y)*space_y); } else { y_pos = flip_y?space_y-g_value_get_int64(y):g_value_get_int64(y); } gtk_window_move(window, (gint)x_pos, (gint)y_pos); } void celluloid_view_resize_video_area(CelluloidView *view, gint width, gint height) { if(!view->fullscreen) { celluloid_main_window_resize_video_area (CELLULOID_MAIN_WINDOW(view), width, height); } } void celluloid_view_set_fullscreen(CelluloidView *view, gboolean fullscreen) { g_object_set(view, "fullscreen", fullscreen, NULL); celluloid_main_window_set_fullscreen (CELLULOID_MAIN_WINDOW(view), fullscreen); } void celluloid_view_set_time_position(CelluloidView *view, gdouble position) { CelluloidControlBox *control_box; control_box = celluloid_main_window_get_control_box (CELLULOID_MAIN_WINDOW(view)); g_object_set(control_box, "time-position", position, NULL); } void celluloid_view_update_playlist(CelluloidView *view, GPtrArray *playlist) { CelluloidMainWindow *wnd = CELLULOID_MAIN_WINDOW(view); CelluloidPlaylistWidget *wgt = celluloid_main_window_get_playlist(wnd); celluloid_playlist_widget_update_contents(wgt, playlist); } void celluloid_view_set_playlist_pos(CelluloidView *view, gint64 pos) { g_object_set(view, "playlist-pos", pos, NULL); } void celluloid_view_set_playlist_visible(CelluloidView *view, gboolean visible) { celluloid_main_window_set_playlist_visible (CELLULOID_MAIN_WINDOW(view), visible); } gboolean celluloid_view_get_playlist_visible(CelluloidView *view) { return celluloid_main_window_get_playlist_visible (CELLULOID_MAIN_WINDOW(view)); } void celluloid_view_set_controls_visible(CelluloidView *view, gboolean visible) { celluloid_main_window_set_controls_visible (CELLULOID_MAIN_WINDOW(view), visible); } gboolean celluloid_view_get_controls_visible(CelluloidView *view) { return celluloid_main_window_get_controls_visible (CELLULOID_MAIN_WINDOW(view)); } celluloid-0.18/src/celluloid-view.h000066400000000000000000000062371356026115400173150ustar00rootroot00000000000000/* * Copyright (c) 2017-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef VIEW_H #define VIEW_H #include #include "celluloid-application.h" G_BEGIN_DECLS #define CELLULOID_TYPE_VIEW (celluloid_view_get_type()) G_DECLARE_FINAL_TYPE(CelluloidView, celluloid_view, CELLULOID, VIEW, CelluloidMainWindow) CelluloidView * celluloid_view_new(CelluloidApplication *app, gboolean always_floating); CelluloidMainWindow * celluloid_view_get_main_window(CelluloidView *view); void celluloid_view_show_open_dialog(CelluloidView *view, gboolean append); void celluloid_view_show_open_location_dialog(CelluloidView *view, gboolean append); void celluloid_view_show_open_audio_track_dialog(CelluloidView *view); void celluloid_view_show_open_subtitle_track_dialog(CelluloidView *view); void celluloid_view_show_save_playlist_dialog(CelluloidView *view); void celluloid_view_show_preferences_dialog(CelluloidView *view); void celluloid_view_show_shortcuts_dialog(CelluloidView *view); void celluloid_view_show_about_dialog(CelluloidView *view); void celluloid_view_show_message_dialog( CelluloidView *view, GtkMessageType type, const gchar *title, const gchar *prefix, const gchar *msg ); void celluloid_view_present(CelluloidView *view); void celluloid_view_quit(CelluloidView *view); void celluloid_view_reset(CelluloidView *view); void celluloid_view_queue_render(CelluloidView *view); void celluloid_view_make_gl_context_current(CelluloidView *view); void celluloid_view_set_use_opengl_cb(CelluloidView *view, gboolean use_opengl_cb); gint celluloid_view_get_scale_factor(CelluloidView *view); void celluloid_view_get_video_area_geometry( CelluloidView *view, gint *width, gint *height ); void celluloid_view_move( CelluloidView *view, gboolean flip_x, gboolean flip_y, GValue *x, GValue *y ); void celluloid_view_resize_video_area(CelluloidView *view, gint width, gint height); void celluloid_view_set_fullscreen(CelluloidView *view, gboolean fullscreen); void celluloid_view_set_time_position(CelluloidView *view, gdouble position); void celluloid_view_update_playlist(CelluloidView *view, GPtrArray *playlist); void celluloid_view_set_playlist_pos(CelluloidView *view, gint64 pos); void celluloid_view_set_playlist_visible(CelluloidView *view, gboolean visible); gboolean celluloid_view_get_playlist_visible(CelluloidView *view); void celluloid_view_set_controls_visible(CelluloidView *view, gboolean visible); gboolean celluloid_view_get_controls_visible(CelluloidView *view); G_END_DECLS #endif celluloid-0.18/src/generate-authors.py000077500000000000000000000005311356026115400200410ustar00rootroot00000000000000#!/usr/bin/env python3 import sys in_file = sys.argv[1] out_file = sys.argv[2] with open(in_file) as i, open(out_file, 'w') as o: o.write('#pragma once\n\n') o.write('#define AUTHORS {\\\n') for author in i: if not author.startswith('#'): o.write('"{}",\\\n'.format(author.rstrip())) o.write('NULL}\n') celluloid-0.18/src/media-keys/000077500000000000000000000000001356026115400162405ustar00rootroot00000000000000celluloid-0.18/src/media-keys/celluloid-media-keys.c000066400000000000000000000160101356026115400224040ustar00rootroot00000000000000/* * Copyright (c) 2015-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include "celluloid-media-keys.h" #include "celluloid-def.h" #include enum { PROP_0, PROP_CONTROLLER, N_PROPERTIES }; struct _CelluloidMediaKeys { GObject parent; CelluloidController *controller; gulong focus_sig_id; GDBusProxy *proxy; GDBusConnection *session_bus_conn; }; struct _CelluloidMediaKeysClass { GObjectClass parent_class; }; G_DEFINE_TYPE(CelluloidMediaKeys, celluloid_media_keys, G_TYPE_OBJECT) static void constructed(GObject *object); static void dispose(GObject *object); static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ); static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ); static gboolean window_state_handler( GtkWidget *widget, GdkEventWindowState *event, gpointer data ); static void g_signal_handler( GDBusProxy *proxy, gchar *sender_name, gchar *signal_name, GVariant *parameters, gpointer data ); static void proxy_ready_handler( GObject *source_object, GAsyncResult *res, gpointer data ); static void session_ready_handler( GObject *source_object, GAsyncResult *res, gpointer data ); static void constructed(GObject *object) { CelluloidMediaKeys *self = CELLULOID_MEDIA_KEYS(object); CelluloidView *view = celluloid_controller_get_view(self->controller); self->focus_sig_id = g_signal_connect ( celluloid_view_get_main_window(view), "window-state-event", G_CALLBACK(window_state_handler), self ); g_bus_get(G_BUS_TYPE_SESSION, NULL, session_ready_handler, self); } static void dispose(GObject *object) { CelluloidMediaKeys *self = CELLULOID_MEDIA_KEYS(object); CelluloidView *view = celluloid_controller_get_view(self->controller); CelluloidMainWindow *window = celluloid_view_get_main_window(view); if(self->focus_sig_id > 0) { g_signal_handler_disconnect(window, self->focus_sig_id); self->focus_sig_id = 0; } g_clear_object(&self->proxy); g_clear_object(&self->session_bus_conn); G_OBJECT_CLASS(celluloid_media_keys_parent_class)->dispose(object); } static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ) { CelluloidMediaKeys *self = CELLULOID_MEDIA_KEYS(object); switch(property_id) { case PROP_CONTROLLER: self->controller = g_value_get_pointer(value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } G_OBJECT_CLASS(celluloid_media_keys_parent_class)->constructed(object); } static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ) { CelluloidMediaKeys *self = CELLULOID_MEDIA_KEYS(object); switch(property_id) { case PROP_CONTROLLER: g_value_set_pointer(value, self->controller); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static gboolean window_state_handler( GtkWidget *widget, GdkEventWindowState *event, gpointer data ) { CelluloidMediaKeys *self = data; if (event->changed_mask & GDK_WINDOW_STATE_FOCUSED && event->new_window_state & GDK_WINDOW_STATE_FOCUSED && self->proxy != NULL) { g_dbus_proxy_call( self->proxy, "GrabMediaPlayerKeys", g_variant_new("(su)", APP_ID, 0), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, self ); } return FALSE; } static void g_signal_handler( GDBusProxy *proxy, gchar *sender_name, gchar *signal_name, GVariant *parameters, gpointer data ) { CelluloidMediaKeys *self = data; gchar *celluloid_application = NULL; gchar *key = NULL; if(g_strcmp0(signal_name, "MediaPlayerKeyPressed") == 0) { g_variant_get (parameters, "(&s&s)", &celluloid_application, &key); } if(g_strcmp0(celluloid_application, APP_ID) == 0) { const struct { const char *gsd_key; const char *mpv_key; } dict[] = { {"Next", "NEXT"}, {"Previous", "PREV"}, {"Pause", "PAUSE"}, {"Stop", "STOP"}, {"Play", "PLAY"}, {"FastForward","FORWARD"}, {"Rewind", "REWIND"}, {NULL, NULL} }; CelluloidModel *model = celluloid_controller_get_model (self->controller); bool done = false; for(int i = 0; !done && dict[i].gsd_key; i++) { if(g_strcmp0(dict[i].gsd_key, key) == 0) { celluloid_model_key_press(model, dict[i].mpv_key); done = true; } } } } static void proxy_ready_handler( GObject *source_object, GAsyncResult *res, gpointer data ) { CelluloidMediaKeys *self = data; GError *error = NULL; self->proxy = g_dbus_proxy_new_finish(res, &error); if(self->proxy) { g_signal_connect( self->proxy, "g-signal", G_CALLBACK(g_signal_handler), self ); g_dbus_proxy_call( self->proxy, "GrabMediaPlayerKeys", g_variant_new("(su)", APP_ID, 0), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL ); } else { g_error("Failed to create GDBus proxy for media keys"); } if(error) { g_error("%s", error->message); g_error_free(error); } } static void session_ready_handler( GObject *source_object, GAsyncResult *res, gpointer data ) { CelluloidMediaKeys *self = data; self->session_bus_conn = g_bus_get_finish(res, NULL); g_dbus_proxy_new( self->session_bus_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, "org.gnome.SettingsDaemon.MediaKeys", "/org/gnome/SettingsDaemon/MediaKeys", "org.gnome.SettingsDaemon.MediaKeys", NULL, proxy_ready_handler, self ); } static void celluloid_media_keys_init(CelluloidMediaKeys *self) { self->controller = NULL; self->focus_sig_id = 0; self->proxy = NULL; self->session_bus_conn = NULL; } static void celluloid_media_keys_class_init(CelluloidMediaKeysClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS(klass); GParamSpec *pspec = NULL; object_class->constructed = constructed; object_class->set_property = set_property; object_class->get_property = get_property; object_class->dispose = dispose; pspec = g_param_spec_pointer ( "controller", "Controller", "The CelluloidController to use", G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); g_object_class_install_property(object_class, PROP_CONTROLLER, pspec); } CelluloidMediaKeys * celluloid_media_keys_new(CelluloidController *controller) { GType type = celluloid_media_keys_get_type(); return CELLULOID_MEDIA_KEYS(g_object_new( type, "controller", controller, NULL )); } celluloid-0.18/src/media-keys/celluloid-media-keys.h000066400000000000000000000020731356026115400224150ustar00rootroot00000000000000/* * Copyright (c) 2015-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef MEDIA_KEYS_H #define MEDIA_KEYS_H #include "celluloid-controller.h" G_BEGIN_DECLS #define CELLULOID_TYPE_MEDIA_KEYS (celluloid_media_keys_get_type ()) G_DECLARE_FINAL_TYPE(CelluloidMediaKeys, celluloid_media_keys, CELLULOID, MEDIA_KEYS, GObject) CelluloidMediaKeys * celluloid_media_keys_new(CelluloidController *controller); G_END_DECLS #endif celluloid-0.18/src/meson.build000066400000000000000000000074401356026115400163570ustar00rootroot00000000000000gnome = import('gnome') sources = [ 'celluloid-application.c', 'celluloid-common.c', 'celluloid-control-box.c', 'celluloid-controller.c', 'celluloid-controller-actions.c', 'celluloid-controller-input.c', 'celluloid-file-chooser.c', 'celluloid-header-bar.c', 'celluloid-main.c', 'celluloid-main-window.c', 'celluloid-menu.c', 'celluloid-metadata-cache.c', 'celluloid-model.c', 'celluloid-mpv.c', 'celluloid-mpv-wrapper.c', 'celluloid-open-location-dialog.c', 'celluloid-player.c', 'celluloid-player-options.c', 'celluloid-playlist-widget.c', 'celluloid-plugins-manager.c', 'celluloid-plugins-manager-item.c', 'celluloid-preferences-dialog.c', 'celluloid-seek-bar.c', 'celluloid-shortcuts-window.c', 'celluloid-video-area.c', 'celluloid-view.c', 'media-keys/celluloid-media-keys.c', 'mpris/celluloid-mpris.c', 'mpris/celluloid-mpris-module.c', 'mpris/celluloid-mpris-base.c', 'mpris/celluloid-mpris-player.c', 'mpris/celluloid-mpris-track-list.c' ] sources += custom_target('authors', input: '../AUTHORS', output: 'celluloid-authors.h', command: [ find_program('generate-authors.py'), '@INPUT@', '@OUTPUT@' ] ) libgtk = dependency('gtk+-3.0', version: '>= 3.22.23') localedir = join_paths(get_option('prefix'), get_option('localedir')) cflags = [ '-DG_SETTINGS_ENABLE_BACKEND', '-DPACKAGE_LOCALEDIR="@0@"'.format(localedir), '-DVERSION="@0@"'.format(meson.project_version()), '-DGETTEXT_PACKAGE="@0@"'.format(meson.project_name()), '-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_44', '-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_44', '-DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_22', '-DGDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_22' ] if get_option('buildtype') == 'release' cflags += [ '-DG_DISABLE_ASSERT=1', '-DG_DISABLE_CHECKS=1', '-DG_DISABLE_CAST_CHECKS=1' ] endif if target_machine.system() == 'windows' libgio = dependency('gio-2.0', version: '>= 2.44') else libgio = dependency('gio-unix-2.0', version: '>= 2.44') endif generated_gdbus_sources = gnome.gdbus_codegen( 'celluloid-mpris-gdbus', '../data/celluloid-mpris-gdbus.xml', namespace: 'celluloid_mpris' ) generated_marshal_sources = gnome.genmarshal('celluloid-marshal', sources: '../data/celluloid-marshal.lst', prefix: 'g_cclosure_gen_marshal', ) # NOTE: All of these are fixed in GLib 2.54 and Meson 0.42.0 and can be # removed once version requirements are bumped includes = [] extra_libs = [] if libgio.version().version_compare('< 2.52.0') # We want to be warning free on old versions: # https://bugzilla.gnome.org/show_bug.cgi?id=778581 extra_libs += static_library('mpris-gdbus', generated_gdbus_sources, c_args: cflags + ['-Wno-conversion'], dependencies: libgio, include_directories: include_directories('..'), ) # Created includes of `src/...`: # https://bugzilla.gnome.org/show_bug.cgi?id=778801 includes = include_directories('..') elif meson.version().version_compare('== 0.46.0') # https://github.com/mesonbuild/meson/issues/3488 includes = include_directories('..') sources += generated_gdbus_sources else sources += generated_gdbus_sources endif if libgio.version().version_compare('< 2.54.0') # Silence warning about missing prototypes in genmarshal-generated files extra_libs += static_library('marshal', generated_marshal_sources, c_args: cflags + ['-Wno-missing-prototypes'], dependencies: libgio, include_directories: include_directories('..') ) else sources += generated_marshal_sources endif executable('celluloid', sources, dependencies: [ libgtk, libgio, meson.get_compiler('c').find_library('m', required: false), dependency('mpv', version: '>= 1.101'), dependency('epoxy') ], link_with: extra_libs, include_directories: includes, c_args: cflags, install: true ) celluloid-0.18/src/mpris/000077500000000000000000000000001356026115400153425ustar00rootroot00000000000000celluloid-0.18/src/mpris/celluloid-mpris-base.c000066400000000000000000000215151356026115400215260ustar00rootroot00000000000000/* * Copyright (c) 2015-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include #include #include "celluloid-view.h" #include "celluloid-mpris.h" #include "celluloid-mpris-module.h" #include "celluloid-mpris-base.h" #include "celluloid-mpris-gdbus.h" #include "celluloid-def.h" enum { PROP_0, PROP_CONTROLLER, N_PROPERTIES }; struct _CelluloidMprisBase { CelluloidMprisModule parent; CelluloidController *controller; guint reg_id; }; struct _CelluloidMprisBaseClass { CelluloidMprisModuleClass parent_class; }; static void register_interface(CelluloidMprisModule *module); static void unregister_interface(CelluloidMprisModule *module); static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ); static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ); static void method_handler( GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer data ); static GVariant * get_prop_handler( GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error, gpointer data ); static gboolean set_prop_handler( GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error, gpointer data ); static void fullscreen_handler( GObject *object, GParamSpec *pspec, gpointer data ); static void update_fullscreen(CelluloidMprisBase *base); static GVariant * get_supported_uri_schemes(void); static GVariant * get_supported_mime_types(void); static void celluloid_mpris_base_class_init(CelluloidMprisBaseClass *klass); static void celluloid_mpris_base_init(CelluloidMprisBase *base); G_DEFINE_TYPE(CelluloidMprisBase, celluloid_mpris_base, CELLULOID_TYPE_MPRIS_MODULE); static void register_interface(CelluloidMprisModule *module) { CelluloidMprisBase *base; CelluloidView *view; GDBusInterfaceVTable vtable; GDBusInterfaceInfo *iface; GDBusConnection *conn; base = CELLULOID_MPRIS_BASE(module); view = celluloid_controller_get_view(base->controller); g_object_get(module, "conn", &conn, "iface", &iface, NULL); celluloid_mpris_module_connect_signal ( module, view, "notify::fullscreen", G_CALLBACK(fullscreen_handler), module ); celluloid_mpris_module_set_properties ( module, "CanQuit", g_variant_new_boolean(TRUE), "CanSetFullscreen", g_variant_new_boolean(TRUE), "CanRaise", g_variant_new_boolean(TRUE), "Fullscreen", g_variant_new_boolean(FALSE), "HasTrackList", g_variant_new_boolean(TRUE), "Identity", g_variant_new_string(g_get_application_name()), "DesktopEntry", g_variant_new_string(APP_ID), "SupportedUriSchemes", get_supported_uri_schemes(), "SupportedMimeTypes", get_supported_mime_types(), NULL ); vtable.method_call = (GDBusInterfaceMethodCallFunc)method_handler; vtable.get_property = (GDBusInterfaceGetPropertyFunc)get_prop_handler; vtable.set_property = (GDBusInterfaceSetPropertyFunc)set_prop_handler; base->reg_id = g_dbus_connection_register_object ( conn, MPRIS_OBJ_ROOT_PATH, iface, &vtable, module, NULL, NULL ); update_fullscreen(CELLULOID_MPRIS_BASE(module)); } static void unregister_interface(CelluloidMprisModule *module) { CelluloidMprisBase *base = CELLULOID_MPRIS_BASE(module); GDBusConnection *conn = NULL; g_object_get(module, "conn", &conn, NULL); g_dbus_connection_unregister_object(conn, base->reg_id); } static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ) { CelluloidMprisBase *self = CELLULOID_MPRIS_BASE(object); switch(property_id) { case PROP_CONTROLLER: self->controller = g_value_get_pointer(value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ) { CelluloidMprisBase *self = CELLULOID_MPRIS_BASE(object); switch(property_id) { case PROP_CONTROLLER: g_value_set_pointer(value, self->controller); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void method_handler( GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer data ) { CelluloidMprisBase *base = data; if(g_strcmp0(method_name, "Raise") == 0) { celluloid_view_present (celluloid_controller_get_view(base->controller)); } else if(g_strcmp0(method_name, "Quit") == 0) { celluloid_controller_quit(base->controller); } g_dbus_method_invocation_return_value (invocation, g_variant_new("()", NULL)); } static GVariant * get_prop_handler( GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error, gpointer data ) { GVariant *value = NULL; celluloid_mpris_module_get_properties(data, property_name, &value, NULL); return value?g_variant_ref(value):NULL; } static gboolean set_prop_handler( GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error, gpointer data ) { CelluloidMprisBase *base = data; if(g_strcmp0(property_name, "Fullscreen") == 0) { CelluloidView *view = celluloid_controller_get_view(base->controller); celluloid_view_set_fullscreen(view, g_variant_get_boolean(value)); } else { celluloid_mpris_module_set_properties( data, property_name, value, NULL ); } return TRUE; /* This function should always succeed */ } static void fullscreen_handler( GObject *object, GParamSpec *pspec, gpointer data ) { update_fullscreen(data); } static void update_fullscreen(CelluloidMprisBase *base) { CelluloidMprisModule *module = CELLULOID_MPRIS_MODULE(base); CelluloidModel *model = celluloid_controller_get_model(base->controller); GVariant *old_value = NULL; gboolean fullscreen = FALSE; celluloid_mpris_module_get_properties (module, "Fullscreen", &old_value, NULL); g_object_get(G_OBJECT(model), "fullscreen", &fullscreen, NULL); if(g_variant_get_boolean(old_value) != fullscreen) { celluloid_mpris_module_set_properties ( module, "Fullscreen", g_variant_new_boolean(fullscreen), NULL ); } } static GVariant * get_supported_uri_schemes(void) { const gchar *protocols[] = SUPPORTED_PROTOCOLS; return celluloid_mpris_build_g_variant_string_array(protocols); } static GVariant * get_supported_mime_types(void) { const gchar *mime_types[] = SUPPORTED_MIME_TYPES; return celluloid_mpris_build_g_variant_string_array(mime_types); } static void celluloid_mpris_base_class_init(CelluloidMprisBaseClass *klass) { CelluloidMprisModuleClass *module_class = CELLULOID_MPRIS_MODULE_CLASS(klass); GObjectClass *object_class = G_OBJECT_CLASS(klass); GParamSpec *pspec = NULL; module_class->register_interface = register_interface; module_class->unregister_interface = unregister_interface; object_class->set_property = set_property; object_class->get_property = get_property; pspec = g_param_spec_pointer ( "controller", "Controller", "The CelluloidController to use", G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); g_object_class_install_property(object_class, PROP_CONTROLLER, pspec); } static void celluloid_mpris_base_init(CelluloidMprisBase *base) { base->controller = NULL; base->reg_id = 0; } CelluloidMprisModule * celluloid_mpris_base_new(CelluloidController *controller, GDBusConnection *conn) { GType type; GDBusInterfaceInfo *iface; type = celluloid_mpris_base_get_type(); iface = celluloid_mpris_org_mpris_media_player2_interface_info(); return CELLULOID_MPRIS_MODULE(g_object_new( type, "controller", controller, "conn", conn, "iface", iface, NULL )); } celluloid-0.18/src/mpris/celluloid-mpris-base.h000066400000000000000000000022461356026115400215330ustar00rootroot00000000000000/* * Copyright (c) 2015-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef MPRIS_BASE_H #define MPRIS_BASE_H #include "celluloid-mpris.h" #include "celluloid-mpris-module.h" #include "celluloid-controller.h" G_BEGIN_DECLS #define CELLULOID_TYPE_MPRIS_BASE (celluloid_mpris_base_get_type()) G_DECLARE_FINAL_TYPE(CelluloidMprisBase, celluloid_mpris_base, CELLULOID, MPRIS_BASE, CelluloidMprisModule) CelluloidMprisModule * celluloid_mpris_base_new( CelluloidController *controller, GDBusConnection *conn ); G_END_DECLS #endif celluloid-0.18/src/mpris/celluloid-mpris-module.c000066400000000000000000000177201356026115400221040ustar00rootroot00000000000000/* * Copyright (c) 2017-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include "celluloid-mpris-module.h" #include "celluloid-application.h" #include "celluloid-def.h" typedef struct _CelluloidSignalHandlerInfo CelluloidSignalHandlerInfo; typedef struct _CelluloidMprisModulePrivate CelluloidMprisModulePrivate; enum { PROP_0, PROP_CONN, PROP_IFACE, N_PROPERTIES }; struct _CelluloidSignalHandlerInfo { gpointer instance; gulong id; }; struct _CelluloidMprisModulePrivate { GDBusConnection *conn; GDBusInterfaceInfo *iface; GSList *signal_ids; GHashTable *prop_table; }; G_DEFINE_TYPE_WITH_PRIVATE(CelluloidMprisModule, celluloid_mpris_module, G_TYPE_OBJECT) static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ); static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ); static void dispose(GObject *object); static void finalize(GObject *object); static void disconnect_signal(CelluloidSignalHandlerInfo *info, gpointer data); static void celluloid_mpris_module_class_init(CelluloidMprisModuleClass *klass); static void celluloid_mpris_module_init(CelluloidMprisModule *module); static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ) { CelluloidMprisModulePrivate *priv; priv = G_TYPE_INSTANCE_GET_PRIVATE( object, CELLULOID_TYPE_MPRIS_MODULE, CelluloidMprisModulePrivate ); switch(property_id) { case PROP_CONN: priv->conn = g_value_get_pointer(value); break; case PROP_IFACE: priv->iface = g_value_get_pointer(value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ) { CelluloidMprisModulePrivate *priv; priv = G_TYPE_INSTANCE_GET_PRIVATE( object, CELLULOID_TYPE_MPRIS_MODULE, CelluloidMprisModulePrivate ); switch(property_id) { case PROP_CONN: g_value_set_pointer(value, priv->conn); break; case PROP_IFACE: g_value_set_pointer(value, priv->iface); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void dispose(GObject *object) { CelluloidMprisModulePrivate *priv; priv = G_TYPE_INSTANCE_GET_PRIVATE( object, CELLULOID_TYPE_MPRIS_MODULE, CelluloidMprisModulePrivate ); g_hash_table_unref(priv->prop_table); G_OBJECT_CLASS(celluloid_mpris_module_parent_class)->dispose(object); } static void finalize(GObject *object) { CelluloidMprisModulePrivate *priv; priv = G_TYPE_INSTANCE_GET_PRIVATE( object, CELLULOID_TYPE_MPRIS_MODULE, CelluloidMprisModulePrivate ); g_slist_foreach(priv->signal_ids, (GFunc)disconnect_signal, NULL); g_slist_free_full(priv->signal_ids, g_free); G_OBJECT_CLASS(celluloid_mpris_module_parent_class)->finalize(object); } static void disconnect_signal(CelluloidSignalHandlerInfo *info, gpointer data) { g_signal_handler_disconnect(info->instance, info->id); } static void celluloid_mpris_module_class_init(CelluloidMprisModuleClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS(klass); GParamSpec *pspec = NULL; object_class->set_property = set_property; object_class->get_property = get_property; object_class->dispose = dispose; object_class->finalize = finalize; pspec = g_param_spec_pointer ( "conn", "Connection", "Connection to the session bus", G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); g_object_class_install_property(object_class, PROP_CONN, pspec); pspec = g_param_spec_pointer ( "iface", "Interface", "The GDBusInterfaceInfo of the interface", G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); g_object_class_install_property(object_class, PROP_IFACE, pspec); } static void celluloid_mpris_module_init(CelluloidMprisModule *module) { CelluloidMprisModulePrivate *priv; priv = G_TYPE_INSTANCE_GET_PRIVATE( module, CELLULOID_TYPE_MPRIS_MODULE, CelluloidMprisModulePrivate ); priv->conn = NULL; priv->iface = NULL; priv->signal_ids = NULL; priv->prop_table = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_variant_unref ); } void celluloid_mpris_module_connect_signal( CelluloidMprisModule *module, gpointer instance, const gchar *detailed_signal, GCallback handler, gpointer data ) { CelluloidMprisModulePrivate *priv; CelluloidSignalHandlerInfo *info; priv = G_TYPE_INSTANCE_GET_PRIVATE( module, CELLULOID_TYPE_MPRIS_MODULE, CelluloidMprisModulePrivate ); info = g_malloc(sizeof(CelluloidSignalHandlerInfo)); info->instance = instance; info->id = g_signal_connect(instance, detailed_signal, handler, data); priv->signal_ids = g_slist_prepend(priv->signal_ids, info); } void celluloid_mpris_module_get_properties(CelluloidMprisModule *module, ...) { CelluloidMprisModulePrivate *priv; va_list arg; gchar *name; GVariant **value_ptr; priv = G_TYPE_INSTANCE_GET_PRIVATE( module, CELLULOID_TYPE_MPRIS_MODULE, CelluloidMprisModulePrivate ); va_start(arg, module); for( name = va_arg(arg, gchar *), value_ptr = va_arg(arg, GVariant **); name && value_ptr; name = va_arg(arg, gchar *), value_ptr = va_arg(arg, GVariant **) ) { *value_ptr = g_hash_table_lookup(priv->prop_table, name); } } void celluloid_mpris_module_set_properties_full( CelluloidMprisModule *module, gboolean send_new_value, ... ) { CelluloidMprisModulePrivate *priv; GVariantBuilder builder; va_list arg; gchar *name; GVariant *value; const gchar *builder_type_string; const gchar *elem_type_string; GVariant *sig_args; priv = G_TYPE_INSTANCE_GET_PRIVATE( module, CELLULOID_TYPE_MPRIS_MODULE, CelluloidMprisModulePrivate ); builder_type_string = send_new_value?"a{sv}":"as"; elem_type_string = builder_type_string+1; g_debug("Preparing property change event"); g_variant_builder_init(&builder, G_VARIANT_TYPE(builder_type_string)); va_start(arg, send_new_value); for( name = va_arg(arg, gchar *), value = va_arg(arg, GVariant *); name && value; name = va_arg(arg, gchar *), value = va_arg(arg, GVariant *) ) { g_hash_table_replace( priv->prop_table, g_strdup(name), g_variant_ref_sink(value) ); g_debug("Adding property \"%s\"", name); g_variant_builder_add(&builder, elem_type_string, name, value); } sig_args = g_variant_new( "(sa{sv}as)", priv->iface->name, send_new_value?&builder:NULL, send_new_value?NULL:&builder ); g_debug( "Emitting property change event on interface %s", priv->iface->name ); g_dbus_connection_emit_signal ( priv->conn, NULL, MPRIS_OBJ_ROOT_PATH, "org.freedesktop.DBus.Properties", "PropertiesChanged", sig_args, NULL ); } void celluloid_mpris_module_register(CelluloidMprisModule *module) { if(module) { CelluloidMprisModuleClass *klass; g_return_if_fail(CELLULOID_IS_MPRIS_MODULE(module)); klass = CELLULOID_MPRIS_MODULE_GET_CLASS(module); g_return_if_fail(klass->register_interface); klass->register_interface(module); } } void celluloid_mpris_module_unregister(CelluloidMprisModule *module) { if(module) { CelluloidMprisModuleClass *klass; g_return_if_fail(CELLULOID_IS_MPRIS_MODULE(module)); klass = CELLULOID_MPRIS_MODULE_GET_CLASS(module); g_return_if_fail(klass->unregister_interface); klass->unregister_interface(module); } } celluloid-0.18/src/mpris/celluloid-mpris-module.h000066400000000000000000000035231356026115400221050ustar00rootroot00000000000000/* * Copyright (c) 2017-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef MPRIS_MODULE_H #define MPRIS_MODULE_H #include #include G_BEGIN_DECLS #define CELLULOID_TYPE_MPRIS_MODULE celluloid_mpris_module_get_type() G_DECLARE_DERIVABLE_TYPE(CelluloidMprisModule, celluloid_mpris_module, CELLULOID, MPRIS_MODULE, GObject) struct _CelluloidMprisModuleClass { GObjectClass parent_interface; void (*register_interface)(CelluloidMprisModule *module); void (*unregister_interface)(CelluloidMprisModule *module); }; void celluloid_mpris_module_connect_signal( CelluloidMprisModule *module, gpointer instance, const gchar *detailed_signal, GCallback handler, gpointer data ); #define celluloid_mpris_module_set_properties(module, ...)\ celluloid_mpris_module_set_properties_full(module, TRUE, __VA_ARGS__) void celluloid_mpris_module_get_properties(CelluloidMprisModule *module, ...); void celluloid_mpris_module_set_properties_full( CelluloidMprisModule *module, gboolean send_new_value, ... ); void celluloid_mpris_module_register(CelluloidMprisModule *module); void celluloid_mpris_module_unregister(CelluloidMprisModule *module); G_END_DECLS #endif celluloid-0.18/src/mpris/celluloid-mpris-player.c000066400000000000000000000466001356026115400221120ustar00rootroot00000000000000/* * Copyright (c) 2015-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include #include #include "celluloid-mpris-player.h" #include "celluloid-common.h" #include "celluloid-main-window.h" #include "celluloid-mpris.h" #include "celluloid-mpris-player.h" #include "celluloid-mpris-gdbus.h" #include "celluloid-def.h" enum { PROP_0, PROP_CONTROLLER, N_PROPERTIES }; struct _CelluloidMprisPlayer { CelluloidMprisModule parent; CelluloidController *controller; guint reg_id; }; struct _CelluloidMprisPlayerClass { CelluloidMprisModuleClass parent_class; }; static void register_interface(CelluloidMprisModule *module); static void unregister_interface(CelluloidMprisModule *module); static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ); static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ); static void append_metadata_tags(GVariantBuilder *builder, GPtrArray *list); static void method_handler( GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer data ); static GVariant * get_prop_handler( GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error, gpointer data ); static gboolean set_prop_handler( GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error, gpointer data ); static void update_playback_status(CelluloidMprisPlayer *player); static void update_playlist_state(CelluloidMprisPlayer *player); static void update_speed(CelluloidMprisPlayer *player); static void update_loop(CelluloidMprisPlayer *player); static void update_metadata(CelluloidMprisPlayer *player); static void update_volume(CelluloidMprisPlayer *player); static void idle_active_handler( GObject *object, GParamSpec *pspec, gpointer data ); static void core_idle_handler( GObject *object, GParamSpec *pspec, gpointer data ); static void playlist_pos_handler( GObject *object, GParamSpec *pspec, gpointer data ); static void playlist_count_handler( GObject *object, GParamSpec *pspec, gpointer data ); static void speed_handler( GObject *object, GParamSpec *pspec, gpointer data ); static void loop_handler( GObject *object, GParamSpec *pspec, gpointer data ); static void metadata_handler( GObject *object, GParamSpec *pspec, gpointer data ); static void volume_handler( GObject *object, GParamSpec *pspec, gpointer data ); static void playback_restart_handler(CelluloidModel *model, gpointer data); static void celluloid_mpris_player_class_init(CelluloidMprisPlayerClass *klass); static void celluloid_mpris_player_init(CelluloidMprisPlayer *player); G_DEFINE_TYPE(CelluloidMprisPlayer, celluloid_mpris_player, CELLULOID_TYPE_MPRIS_MODULE); static void register_interface(CelluloidMprisModule *module) { CelluloidMprisPlayer *player = CELLULOID_MPRIS_PLAYER(module); CelluloidModel *model = celluloid_controller_get_model (player->controller); GDBusConnection *conn; GDBusInterfaceInfo *iface; GDBusInterfaceVTable vtable; g_object_get(module, "conn", &conn, "iface", &iface, NULL); celluloid_mpris_module_connect_signal ( module, model, "notify::core-idle", G_CALLBACK(core_idle_handler), player ); celluloid_mpris_module_connect_signal ( module, model, "notify::idle-active", G_CALLBACK(idle_active_handler), player ); celluloid_mpris_module_connect_signal ( module, model, "notify::playlist-pos", G_CALLBACK(playlist_pos_handler), player ); celluloid_mpris_module_connect_signal ( module, model, "notify::playlist-count", G_CALLBACK(playlist_count_handler), player ); celluloid_mpris_module_connect_signal ( module, model, "notify::speed", G_CALLBACK(speed_handler), player ); celluloid_mpris_module_connect_signal ( module, model, "notify::loop-file", G_CALLBACK(loop_handler), player ); celluloid_mpris_module_connect_signal ( module, model, "notify::loop-playlist", G_CALLBACK(loop_handler), player ); celluloid_mpris_module_connect_signal ( module, model, "notify::metadata", G_CALLBACK(metadata_handler), player ); celluloid_mpris_module_connect_signal ( module, model, "notify::volume", G_CALLBACK(volume_handler), player ); celluloid_mpris_module_connect_signal ( module, model, "playback-restart", G_CALLBACK(playback_restart_handler), player ); celluloid_mpris_module_set_properties ( module, "PlaybackStatus", g_variant_new_string("Stopped"), "LoopStatus", g_variant_new_string("None"), "Rate", g_variant_new_double(1.0), "Metadata", g_variant_new("a{sv}", NULL), "Volume", g_variant_new_double(1.0), "MinimumRate", g_variant_new_double(0.01), "MaximumRate", g_variant_new_double(100.0), "CanGoNext", g_variant_new_boolean(FALSE), "CanGoPrevious", g_variant_new_boolean(FALSE), "CanPlay", g_variant_new_boolean(TRUE), "CanPause", g_variant_new_boolean(TRUE), "CanSeek", g_variant_new_boolean(FALSE), "CanControl", g_variant_new_boolean(TRUE), NULL ); vtable.method_call = (GDBusInterfaceMethodCallFunc)method_handler; vtable.get_property = (GDBusInterfaceGetPropertyFunc)get_prop_handler; vtable.set_property = (GDBusInterfaceSetPropertyFunc)set_prop_handler; player->reg_id = g_dbus_connection_register_object ( conn, MPRIS_OBJ_ROOT_PATH, iface, &vtable, player, NULL, NULL ); update_playback_status(player); update_playlist_state(player); update_speed(player); update_metadata(player); update_volume(player); } static void unregister_interface(CelluloidMprisModule *module) { CelluloidMprisPlayer *player = CELLULOID_MPRIS_PLAYER(module); GDBusConnection *conn = NULL; g_object_get(module, "conn", &conn, NULL); g_dbus_connection_unregister_object(conn, player->reg_id); } static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ) { CelluloidMprisPlayer *self = CELLULOID_MPRIS_PLAYER(object); switch(property_id) { case PROP_CONTROLLER: self->controller = g_value_get_pointer(value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ) { CelluloidMprisPlayer *self = CELLULOID_MPRIS_PLAYER(object); switch(property_id) { case PROP_CONTROLLER: g_value_set_pointer(value, self->controller); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void append_metadata_tags(GVariantBuilder *builder, GPtrArray *list) { const struct { const gchar *mpv_name; const gchar *tag_name; const gboolean is_array; } tag_map[] = { {"Album", "xesam:album", FALSE}, {"Album_Artist", "xesam:albumArtist", TRUE}, {"Artist", "xesam:artist", TRUE}, {"Comment", "xesam:comment", TRUE}, {"Composer", "xesam:composer", FALSE}, {"Genre", "xesam:genre", TRUE}, {"Title", "xesam:title", FALSE}, {NULL, NULL, FALSE} }; const guint list_len = list?list->len:0; for(guint i = 0; i < list_len; i++) { const gchar *tag_name; GVariant *tag_value; CelluloidMetadataEntry *entry = g_ptr_array_index(list, i); gboolean is_array = TRUE; gint j = -1; /* Translate applicable mpv tag names to MPRIS2-compatible tag * names. */ while( tag_map[++j].mpv_name && g_ascii_strcasecmp(entry->key, tag_map[j].mpv_name) != 0 ); tag_name = tag_map[j].mpv_name?tag_map[j].tag_name:entry->key; is_array = tag_map[j].mpv_name?tag_map[j].is_array:FALSE; if(is_array) { GVariantBuilder tag_builder; GVariant *elem_value; elem_value = g_variant_new_string(entry->value); g_variant_builder_init (&tag_builder, G_VARIANT_TYPE("as")); g_variant_builder_add_value (&tag_builder, elem_value); tag_value = g_variant_new("as", &tag_builder); } else { tag_value = g_variant_new_string(entry->value); } g_debug("Adding metadata tag \"%s\"", tag_name); g_variant_builder_add(builder, "{sv}", tag_name, tag_value); } } static void method_handler( GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer data ) { CelluloidMprisPlayer *player = data; CelluloidModel *model = celluloid_controller_get_model (player->controller); if(g_strcmp0(method_name, "Next") == 0) { celluloid_model_key_press(model, "NEXT"); } else if(g_strcmp0(method_name, "Previous") == 0) { celluloid_model_key_press(model, "PREV"); } else if(g_strcmp0(method_name, "Pause") == 0) { celluloid_model_key_press(model, "PAUSE"); } else if(g_strcmp0(method_name, "PlayPause") == 0) { celluloid_model_key_press(model, "PLAYPAUSE"); } else if(g_strcmp0(method_name, "Stop") == 0) { celluloid_model_key_press(model, "STOP"); } else if(g_strcmp0(method_name, "Play") == 0) { celluloid_model_key_press(model, "PLAY"); } else if(g_strcmp0(method_name, "Seek") == 0) { gint64 offset_us; g_variant_get(parameters, "(x)", &offset_us); celluloid_model_seek_offset(model, (gdouble)offset_us/1.0e6); } else if(g_strcmp0(method_name, "SetPosition") == 0) { const gchar *prefix = MPRIS_TRACK_ID_PREFIX; const gsize prefix_len = strlen(prefix); gint64 time_us = -1; const gchar *track_id = NULL; g_variant_get(parameters, "(&ox)", &track_id, &time_us); if(strncmp(track_id, prefix, prefix_len) == 0) { gint64 index = g_ascii_strtoll (track_id+prefix_len, NULL, 0); celluloid_model_set_playlist_position(model, index); celluloid_model_seek(model, (gdouble)time_us/1.0e6); } } else if(g_strcmp0(method_name, "OpenUri") == 0) { const gchar *uri; g_variant_get(parameters, "(&s)", &uri); celluloid_model_load_file(model, uri, FALSE); } g_dbus_method_invocation_return_value (invocation, g_variant_new("()", NULL)); } static GVariant * get_prop_handler( GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error, gpointer data ) { CelluloidMprisPlayer *player = data; GVariant *value; if(g_strcmp0(property_name, "Position") == 0) { CelluloidModel *model; gdouble position; model = celluloid_controller_get_model(player->controller); position = celluloid_model_get_time_position(model); value = g_variant_new_int64((gint64)(position*1e6)); } else { celluloid_mpris_module_get_properties ( CELLULOID_MPRIS_MODULE(data), property_name, &value, NULL ); } return value?g_variant_ref(value):NULL; } static gboolean set_prop_handler( GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error, gpointer data ) { CelluloidMprisPlayer *player = data; CelluloidModel *model = celluloid_controller_get_model (player->controller); if(g_strcmp0(property_name, "LoopStatus") == 0) { const gchar *loop = g_variant_get_string(value, NULL); const gchar *loop_file = g_strcmp0(loop, "Track") == 0 ? "inf":"no"; const gchar *loop_playlist = g_strcmp0(loop, "Playlist") == 0 ? "inf":"no"; g_object_set( G_OBJECT(model), "loop-file", loop_file, "loop-playlist", loop_playlist, NULL ); } else if(g_strcmp0(property_name, "Rate") == 0) { g_object_set( G_OBJECT(model), "speed", g_variant_get_double(value), NULL ); } else if(g_strcmp0(property_name, "Volume") == 0) { g_object_set( G_OBJECT(model), "volume", 100*g_variant_get_double(value), NULL ); } celluloid_mpris_module_set_properties( CELLULOID_MPRIS_MODULE(data), property_name, value, NULL ); return TRUE; /* This function should always succeed */ } static void update_playback_status(CelluloidMprisPlayer *player) { CelluloidModel *model = celluloid_controller_get_model (player->controller); const gchar *state; gint idle_active; gint core_idle; gboolean can_seek; g_object_get( G_OBJECT(model), "idle-active", &idle_active, "core-idle", &core_idle, NULL ); if(!core_idle && !idle_active) { state = "Playing"; can_seek = TRUE; } else if(core_idle && idle_active) { state = "Stopped"; can_seek = FALSE; } else { state = "Paused"; can_seek = TRUE; } celluloid_mpris_module_set_properties( CELLULOID_MPRIS_MODULE(player), "PlaybackStatus", g_variant_new_string(state), "CanSeek", g_variant_new_boolean(can_seek), NULL ); } static void update_playlist_state(CelluloidMprisPlayer *player) { CelluloidModel *model = celluloid_controller_get_model (player->controller); gboolean can_prev; gboolean can_next; gint64 playlist_count; gint64 playlist_pos; gint rc = 0; g_object_get( G_OBJECT(model), "playlist-count", &playlist_count, "playlist-pos", &playlist_pos, NULL ); can_prev = (rc >= 0 && playlist_pos > 0); can_next = (rc >= 0 && playlist_pos < playlist_count-1); celluloid_mpris_module_set_properties( CELLULOID_MPRIS_MODULE(player), "CanGoPrevious", g_variant_new_boolean(can_prev), "CanGoNext", g_variant_new_boolean(can_next), NULL ); } static void update_speed(CelluloidMprisPlayer *player) { CelluloidModel *model = celluloid_controller_get_model (player->controller); gdouble speed = 1.0; g_object_get(G_OBJECT(model), "speed", &speed, NULL); celluloid_mpris_module_set_properties( CELLULOID_MPRIS_MODULE(player), "Rate", g_variant_new_double(speed), NULL ); } static void update_loop(CelluloidMprisPlayer *player) { CelluloidModel *model = celluloid_controller_get_model (player->controller); gchar *loop_file = NULL; gchar *loop_playlist = NULL; const gchar *loop = NULL; g_object_get( model, "loop-file", &loop_file, "loop-playlist", &loop_playlist, NULL ); loop = g_strcmp0(loop_file, "inf") == 0 ? "Track" : g_strcmp0(loop_playlist, "inf") == 0 ? "Playlist" : "None"; celluloid_mpris_module_set_properties( CELLULOID_MPRIS_MODULE(player), "LoopStatus", g_variant_new_string(loop), NULL ); g_free(loop_file); g_free(loop_playlist); } static void update_metadata(CelluloidMprisPlayer *player) { CelluloidModel *model = celluloid_controller_get_model (player->controller); GPtrArray *metadata = NULL; GVariantBuilder builder; gchar *path; gchar *uri; gchar *playlist_pos_str; gchar *trackid; gdouble duration = 0; gint64 playlist_pos = 0; g_variant_builder_init(&builder, G_VARIANT_TYPE("a{sv}")); path = celluloid_model_get_current_path(model)?:g_strdup(""); uri = g_filename_to_uri(path, NULL, NULL)?:g_strdup(path); if(uri) { g_variant_builder_add( &builder, "{sv}", "xesam:url", g_variant_new_string(uri) ); } g_object_get( model, "duration", &duration, "playlist-pos", &playlist_pos, "metadata", &metadata, NULL ); g_variant_builder_add( &builder, "{sv}", "mpris:length", g_variant_new_int64 ((gint64)(duration*1e6)) ); playlist_pos_str = g_strdup_printf("%" G_GINT64_FORMAT, playlist_pos); trackid = g_strconcat( MPRIS_TRACK_ID_PREFIX, playlist_pos_str, NULL ); g_variant_builder_add( &builder, "{sv}", "mpris:trackid", g_variant_new_object_path(trackid) ); append_metadata_tags(&builder, metadata); celluloid_mpris_module_set_properties( CELLULOID_MPRIS_MODULE(player), "Metadata", g_variant_new("a{sv}", &builder), NULL ); g_free(path); g_free(uri); g_free(playlist_pos_str); g_free(trackid); } static void update_volume(CelluloidMprisPlayer *player) { CelluloidModel *model = celluloid_controller_get_model (player->controller); gdouble volume = 0.0; g_object_get(G_OBJECT(model), "volume", &volume, NULL); celluloid_mpris_module_set_properties ( CELLULOID_MPRIS_MODULE(player), "Volume", g_variant_new_double(volume/100.0), NULL ); } static void idle_active_handler( GObject *object, GParamSpec *pspec, gpointer data ) { update_playback_status(data); } static void core_idle_handler( GObject *object, GParamSpec *pspec, gpointer data ) { update_playback_status(data); } static void playlist_pos_handler( GObject *object, GParamSpec *pspec, gpointer data ) { update_playlist_state(data); } static void playlist_count_handler( GObject *object, GParamSpec *pspec, gpointer data ) { update_playlist_state(data); } static void speed_handler( GObject *object, GParamSpec *pspec, gpointer data ) { update_speed(data); } static void loop_handler( GObject *object, GParamSpec *pspec, gpointer data ) { update_loop(data); } static void metadata_handler( GObject *object, GParamSpec *pspec, gpointer data ) { update_metadata(data); } static void volume_handler( GObject *object, GParamSpec *pspec, gpointer data ) { update_volume(data); } static void playback_restart_handler(CelluloidModel *model, gpointer data) { GDBusConnection *conn; GDBusInterfaceInfo *iface; gdouble position; position = celluloid_model_get_time_position(model); g_object_get( CELLULOID_MPRIS_MODULE(data), "conn", &conn, "iface", &iface, NULL ); g_dbus_connection_emit_signal ( conn, NULL, MPRIS_OBJ_ROOT_PATH, iface->name, "Seeked", g_variant_new("(x)", (gint64)(position*1e6)), NULL ); } static void celluloid_mpris_player_class_init(CelluloidMprisPlayerClass *klass) { CelluloidMprisModuleClass *module_class = CELLULOID_MPRIS_MODULE_CLASS(klass); GObjectClass *object_class = G_OBJECT_CLASS(klass); GParamSpec *pspec = NULL; module_class->register_interface = register_interface; module_class->unregister_interface = unregister_interface; object_class->set_property = set_property; object_class->get_property = get_property; pspec = g_param_spec_pointer ( "controller", "Controller", "The CelluloidApplication to use", G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); g_object_class_install_property(object_class, PROP_CONTROLLER, pspec); } static void celluloid_mpris_player_init(CelluloidMprisPlayer *player) { player->controller = NULL; player->reg_id = 0; } CelluloidMprisModule * celluloid_mpris_player_new( CelluloidController *controller, GDBusConnection *conn ) { GType type; GDBusInterfaceInfo *iface; type = celluloid_mpris_player_get_type(); iface = celluloid_mpris_org_mpris_media_player2_player_interface_info(); return CELLULOID_MPRIS_MODULE(g_object_new( type, "controller", controller, "conn", conn, "iface", iface, NULL )); } celluloid-0.18/src/mpris/celluloid-mpris-player.h000066400000000000000000000022661356026115400221170ustar00rootroot00000000000000/* * Copyright (c) 2015-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef MPRIS_PLAYER_H #define MPRIS_PLAYER_H #include "celluloid-mpris.h" #include "celluloid-mpris-module.h" #include "celluloid-controller.h" G_BEGIN_DECLS #define CELLULOID_TYPE_MPRIS_PLAYER (celluloid_mpris_player_get_type()) G_DECLARE_FINAL_TYPE(CelluloidMprisPlayer, celluloid_mpris_player, CELLULOID, MPRIS_PLAYER, CelluloidMprisModule) CelluloidMprisModule * celluloid_mpris_player_new( CelluloidController *controller, GDBusConnection *conn ); G_END_DECLS #endif celluloid-0.18/src/mpris/celluloid-mpris-track-list.c000066400000000000000000000340421356026115400226700ustar00rootroot00000000000000/* * Copyright (c) 2017-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include "celluloid-mpris-track-list.h" #include "celluloid-mpris-gdbus.h" #include "celluloid-common.h" #include "celluloid-def.h" #include enum { PROP_0, PROP_CONTROLLER, N_PROPERTIES }; struct _CelluloidMprisTrackList { CelluloidMprisModule parent; CelluloidController *controller; guint reg_id; }; struct _CelluloidMprisTrackListClass { CelluloidMprisModuleClass parent_class; }; static void register_interface(CelluloidMprisModule *module); static void unregister_interface(CelluloidMprisModule *module); static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ); static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ); static void method_handler( GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer data ); static GVariant * get_prop_handler( GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error, gpointer data ); static gboolean set_prop_handler( GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error, gpointer data ); static void playlist_handler( GObject *object, GParamSpec *pspec, gpointer data ); static void metadata_update_handler(CelluloidModel *model, gint64 pos, gpointer data); static void update_playlist(CelluloidMprisTrackList *track_list); static gint64 track_id_to_index(const gchar *track_id); static GVariant * playlist_entry_to_variant(CelluloidPlaylistEntry *entry, gint64 index); static GVariant * get_tracks_metadata(GPtrArray *playlist, const gchar **track_ids); static void celluloid_mpris_track_list_class_init(CelluloidMprisTrackListClass *klass); static void celluloid_mpris_track_list_init(CelluloidMprisTrackList *track_list); G_DEFINE_TYPE(CelluloidMprisTrackList, celluloid_mpris_track_list, CELLULOID_TYPE_MPRIS_MODULE); static void register_interface(CelluloidMprisModule *module) { CelluloidMprisTrackList *track_list = CELLULOID_MPRIS_TRACK_LIST(module); CelluloidModel *model = celluloid_controller_get_model (track_list->controller); GDBusConnection *conn; GDBusInterfaceInfo *iface; GDBusInterfaceVTable vtable; g_object_get(module, "conn", &conn, "iface", &iface, NULL); celluloid_mpris_module_connect_signal( module, model, "notify::playlist", G_CALLBACK(playlist_handler), module ); celluloid_mpris_module_connect_signal( module, model, "metadata-update", G_CALLBACK(metadata_update_handler), module ); celluloid_mpris_module_set_properties ( module, "Tracks", g_variant_new("ao", NULL), "CanEditTracks", g_variant_new_boolean(FALSE), NULL ); vtable.method_call = (GDBusInterfaceMethodCallFunc)method_handler; vtable.get_property = (GDBusInterfaceGetPropertyFunc)get_prop_handler; vtable.set_property = (GDBusInterfaceSetPropertyFunc)set_prop_handler; track_list->reg_id = g_dbus_connection_register_object ( conn, MPRIS_OBJ_ROOT_PATH, iface, &vtable, module, NULL, NULL ); update_playlist(CELLULOID_MPRIS_TRACK_LIST(module)); } static void unregister_interface(CelluloidMprisModule *module) { CelluloidMprisTrackList *track_list = CELLULOID_MPRIS_TRACK_LIST(module); GDBusConnection *conn = NULL; g_object_get(module, "conn", &conn, NULL); g_dbus_connection_unregister_object(conn, track_list->reg_id); } static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ) { CelluloidMprisTrackList *self = CELLULOID_MPRIS_TRACK_LIST(object); switch(property_id) { case PROP_CONTROLLER: self->controller = g_value_get_pointer(value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ) { CelluloidMprisTrackList *self = CELLULOID_MPRIS_TRACK_LIST(object); switch(property_id) { case PROP_CONTROLLER: g_value_set_pointer(value, self->controller); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void method_handler( GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer data ) { CelluloidMprisTrackList *track_list = data; CelluloidModel *model = celluloid_controller_get_model (track_list->controller); GVariant *return_value = NULL; if(g_strcmp0(method_name, "GetTracksMetadata") == 0) { GPtrArray *playlist = NULL; const gchar **track_ids = NULL; g_object_get(model, "playlist", &playlist, NULL); g_variant_get(parameters, "(^a&o)", &track_ids); return_value = get_tracks_metadata(playlist, track_ids); g_free(track_ids); } else if(g_strcmp0(method_name, "GoTo") == 0) { const gchar *track_id; g_variant_get(parameters, "(o)", &track_id, NULL); if(g_str_has_prefix(track_id, MPRIS_TRACK_ID_PREFIX)) { const gsize prefix_len = sizeof(MPRIS_TRACK_ID_PREFIX)-1; gint64 playlist_pos = g_ascii_strtoll (track_id+prefix_len, NULL, 10); g_object_set(model, "playlist-pos", playlist_pos, NULL); } else { g_warning( "The GoTo MPRIS method was called with " "invalid track ID: %s", track_id ); } return_value = g_variant_new("()", NULL); } else if(g_strcmp0(method_name, "AddTrack") == 0) { /* Not implemented */ g_warning( "The %s MPRIS method was called even though " "CanEditTracks property is FALSE", method_name ); return_value = g_variant_new("()", NULL); } else if(g_strcmp0(method_name, "RemoveTrack") == 0) { /* Not implemented */ g_warning( "The %s MPRIS method was called even though " "CanEditTracks property is FALSE", method_name ); return_value = g_variant_new("()", NULL); } else { g_critical("Attempted to call unknown method: %s", method_name); return_value = g_variant_new("()", NULL); } g_dbus_method_invocation_return_value(invocation, return_value); } static GVariant * get_prop_handler( GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error, gpointer data ) { GVariant *value = NULL; celluloid_mpris_module_get_properties( CELLULOID_MPRIS_MODULE(data), property_name, &value, NULL ); /* Call g_variant_ref() to prevent the value of the property in the * properties table from being freed. */ return value?g_variant_ref(value):NULL; } static gboolean set_prop_handler( GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GVariant *value, GError **error, gpointer data ) { g_warning( "Attempted to set property %s in " "org.mpris.MediaPlayer2.TrackList, but the interface " "only has read-only properties.", property_name ); /* Always fail since the interface only has read-only properties */ return FALSE; } static void playlist_handler( GObject *object, GParamSpec *pspec, gpointer data ) { update_playlist(data); } static void metadata_update_handler(CelluloidModel *model, gint64 pos, gpointer data) { GDBusConnection *conn = NULL; GDBusInterfaceInfo *iface = NULL; gchar *track_id = NULL; GVariant *signal_params = NULL; GVariant *metadata = NULL; GPtrArray *playlist = NULL; g_object_get( G_OBJECT(data), "conn", &conn, "iface", &iface, NULL ); g_object_get(model, "playlist", &playlist, NULL); track_id = g_strdup_printf( MPRIS_TRACK_ID_PREFIX "%" G_GINT64_FORMAT, pos ); metadata = playlist_entry_to_variant( g_ptr_array_index(playlist, pos), pos ); signal_params = g_variant_new("(o@a{sv})", track_id, metadata); g_dbus_connection_emit_signal ( conn, NULL, MPRIS_OBJ_ROOT_PATH, iface->name, "TrackMetadataChanged", signal_params, NULL ); g_free(track_id); } static void update_playlist(CelluloidMprisTrackList *track_list) { CelluloidModel *model = celluloid_controller_get_model (track_list->controller); gint64 playlist_pos = -1; guint playlist_count = 0; GPtrArray *playlist = NULL; GDBusConnection *conn = NULL; GDBusInterfaceInfo *iface = NULL; gchar *current_track = NULL; GVariant *tracks = NULL; GVariant *signal_params = NULL; GVariantBuilder builder; g_object_get( G_OBJECT(model), "playlist-pos", &playlist_pos, "playlist", &playlist, NULL ); g_object_get( G_OBJECT(track_list), "conn", &conn, "iface", &iface, NULL ); playlist_count = playlist?playlist->len:0; g_variant_builder_init(&builder, G_VARIANT_TYPE("ao")); if(playlist_count <= 0 || playlist_pos < 0 || playlist_pos > playlist_count-1) { current_track = g_strdup(MPRIS_TRACK_ID_NO_TRACK); } for( gint64 i = MAX(0, playlist_pos-MPRIS_TRACK_LIST_BEFORE); i < MIN(playlist_count, playlist_pos+MPRIS_TRACK_LIST_AFTER); i++ ) { gchar *path = g_strdup_printf( MPRIS_TRACK_ID_PREFIX "%" G_GINT64_FORMAT, i ); if(i == playlist_pos) { current_track = g_strdup(path); } g_variant_builder_add_value (&builder, g_variant_new_object_path(path)); g_free(path); } tracks = g_variant_new("ao", (playlist_count > 0)?&builder:NULL); signal_params = g_variant_new("(@aoo)", tracks, current_track); celluloid_mpris_module_set_properties_full ( CELLULOID_MPRIS_MODULE(track_list), FALSE, "Tracks", tracks, NULL ); /* Only emit TrackListReplaced signal. TrackAdded, TrackRemoved, and * TrackMetadataChanged are currently unused. */ g_dbus_connection_emit_signal ( conn, NULL, MPRIS_OBJ_ROOT_PATH, iface->name, "TrackListReplaced", signal_params, NULL ); g_free(current_track); } static gint64 track_id_to_index(const gchar *track_id) { gint64 index = -1; gchar *endptr = NULL; if(g_str_has_prefix(track_id, MPRIS_TRACK_ID_PREFIX)) { const gsize prefix_len = sizeof(MPRIS_TRACK_ID_PREFIX)-1; index = g_ascii_strtoll(track_id+prefix_len, &endptr, 10); } if(endptr && *endptr) { g_warning("Failed to parse track ID: %s", track_id); } return index; } static GVariant * playlist_entry_to_variant(CelluloidPlaylistEntry *entry, gint64 index) { GVariantBuilder builder; gchar *track_id = NULL; gchar *title = NULL; gchar *uri = NULL; GVariant *elem_value = NULL; g_variant_builder_init(&builder, G_VARIANT_TYPE("a{sv}")); track_id = g_strdup_printf( "%s%" G_GINT64_FORMAT, MPRIS_TRACK_ID_PREFIX, index ); elem_value = g_variant_new ( "{sv}", "mpris:trackid", g_variant_new_string(track_id) ); g_variant_builder_add_value(&builder, elem_value); title = entry->title? g_strdup(entry->title): get_name_from_path(entry->filename); elem_value = g_variant_new ( "{sv}", "xesam:title", g_variant_new_string(title) ); g_variant_builder_add_value(&builder, elem_value); uri = g_filename_to_uri(entry->filename, NULL, NULL)?: g_strdup(entry->filename); elem_value = g_variant_new ( "{sv}", "xesam:uri", g_variant_new_string(uri) ); g_variant_builder_add_value(&builder, elem_value); g_free(track_id); g_free(title); g_free(uri); return g_variant_new("a{sv}", &builder); } static GVariant * get_tracks_metadata(GPtrArray *playlist, const gchar **track_ids) { GVariantBuilder builder; g_assert(playlist); g_assert(track_ids); g_variant_builder_init(&builder, G_VARIANT_TYPE("aa{sv}")); for(const gchar **iter = track_ids; *iter; iter++) { gint64 index = track_id_to_index(*iter); if(index >= 0 && index < playlist->len) { CelluloidPlaylistEntry *entry; GVariant *elem; entry = g_ptr_array_index(playlist, index); elem = playlist_entry_to_variant(entry, index); g_variant_builder_add_value(&builder, elem); } else { g_warning( "Attempted to retrieve metadata of " "non-existent track ID: %s", *iter ); } } return g_variant_new("(aa{sv})", &builder); } static void celluloid_mpris_track_list_class_init(CelluloidMprisTrackListClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS(klass); CelluloidMprisModuleClass *module_class = CELLULOID_MPRIS_MODULE_CLASS(klass); GParamSpec *pspec = NULL; object_class->set_property = set_property; object_class->get_property = get_property; module_class->register_interface = register_interface; module_class->unregister_interface = unregister_interface; pspec = g_param_spec_pointer ( "controller", "Controller", "The CelluloidController to use", G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); g_object_class_install_property(object_class, PROP_CONTROLLER, pspec); } static void celluloid_mpris_track_list_init(CelluloidMprisTrackList *track_list) { track_list->controller = NULL; track_list->reg_id = 0; } CelluloidMprisModule * celluloid_mpris_track_list_new( CelluloidController *controller, GDBusConnection *conn ) { GDBusInterfaceInfo *iface; GObject *object; iface = celluloid_mpris_org_mpris_media_player2_track_list_interface_info(); object = g_object_new( celluloid_mpris_track_list_get_type(), "controller", controller, "conn", conn, "iface", iface, NULL ); return CELLULOID_MPRIS_MODULE(object); } celluloid-0.18/src/mpris/celluloid-mpris-track-list.h000066400000000000000000000023231356026115400226720ustar00rootroot00000000000000/* * Copyright (c) 2017-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef MPRIS_TRACK_LIST_H #define MPRIS_TRACK_LIST_H #include "celluloid-mpris-module.h" #include "celluloid-controller.h" #include G_BEGIN_DECLS #define CELLULOID_TYPE_MPRIS_TRACK_LIST (celluloid_mpris_track_list_get_type()) G_DECLARE_FINAL_TYPE(CelluloidMprisTrackList, celluloid_mpris_track_list, CELLULOID, MPRIS_TRACK_LIST, CelluloidMprisModule) CelluloidMprisModule * celluloid_mpris_track_list_new( CelluloidController *controller, GDBusConnection *conn ); G_END_DECLS #endif celluloid-0.18/src/mpris/celluloid-mpris.c000066400000000000000000000143741356026115400206230ustar00rootroot00000000000000/* * Copyright (c) 2015-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #include #include #include #include #include #include #include "celluloid-mpris.h" #include "celluloid-mpris-base.h" #include "celluloid-mpris-player.h" #include "celluloid-mpris-track-list.h" #include "celluloid-def.h" enum { PROP_0, PROP_CONTROLLER, N_PROPERTIES }; struct _CelluloidMpris { GObject parent; CelluloidController *controller; CelluloidMprisModule *base; CelluloidMprisModule *player; CelluloidMprisModule *track_list; guint name_id; GDBusConnection *session_bus_conn; }; struct _CelluloidMprisClass { GObjectClass parent_class; }; G_DEFINE_TYPE(CelluloidMpris, celluloid_mpris, G_TYPE_OBJECT) static void constructed(GObject *object); static void dispose(GObject *object); static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ); static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ); static void name_acquired_handler( GDBusConnection *connection, const gchar *name, gpointer data ); static void name_lost_handler( GDBusConnection *connection, const gchar *name, gpointer data ); static void unregister(CelluloidMpris *mpris); static void constructed(GObject *object) { CelluloidMpris *self = CELLULOID_MPRIS(object); gchar *address = NULL; GDBusConnection *conn = NULL; address = g_dbus_address_get_for_bus_sync (G_BUS_TYPE_SESSION, NULL, NULL); if(address) { const GDBusConnectionFlags flags = G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT| G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION; conn = g_dbus_connection_new_for_address_sync (address, flags, NULL, NULL, NULL); g_free(address); } if(conn) { CelluloidView *view = celluloid_controller_get_view (self->controller); CelluloidMainWindow *window = celluloid_view_get_main_window (view); guint window_id = gtk_application_window_get_id (GTK_APPLICATION_WINDOW(window)); gchar *name = g_strdup_printf (MPRIS_BUS_NAME ".instance-%u", window_id); self->name_id = g_bus_own_name_on_connection ( conn, name, G_BUS_NAME_OWNER_FLAGS_NONE, (GBusNameAcquiredCallback) name_acquired_handler, (GBusNameLostCallback) name_lost_handler, self, NULL ); g_free(name); } else { g_warning( "Failed to create DBus connection; " "MPRIS will be unavailable" ); } G_OBJECT_CLASS(celluloid_mpris_parent_class)->constructed(object); } static void dispose(GObject *object) { CelluloidMpris *self = CELLULOID_MPRIS(object); unregister(self); g_clear_object(&self->base); g_clear_object(&self->player); g_clear_object(&self->track_list); g_bus_unown_name(self->name_id); G_OBJECT_CLASS(celluloid_mpris_parent_class)->dispose(object); } static void set_property( GObject *object, guint property_id, const GValue *value, GParamSpec *pspec ) { CelluloidMpris *self = CELLULOID_MPRIS(object); switch(property_id) { case PROP_CONTROLLER: self->controller = g_value_get_pointer(value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void get_property( GObject *object, guint property_id, GValue *value, GParamSpec *pspec ) { CelluloidMpris *self = CELLULOID_MPRIS(object); switch(property_id) { case PROP_CONTROLLER: g_value_set_pointer(value, self->controller); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } } static void name_acquired_handler( GDBusConnection *connection, const gchar *name, gpointer data ) { CelluloidMpris *self = data; self->session_bus_conn = connection; self->base = celluloid_mpris_base_new (self->controller, connection); self->player = celluloid_mpris_player_new (self->controller, connection); self->track_list = celluloid_mpris_track_list_new (self->controller, connection); celluloid_mpris_module_register(self->base); celluloid_mpris_module_register(self->player); celluloid_mpris_module_register(self->track_list); } static void name_lost_handler( GDBusConnection *connection, const gchar *name, gpointer data ) { unregister(data); } static void unregister(CelluloidMpris *mpris) { celluloid_mpris_module_unregister(mpris->base); celluloid_mpris_module_unregister(mpris->player); celluloid_mpris_module_unregister(mpris->track_list); } static void celluloid_mpris_init(CelluloidMpris *mpris) { mpris->controller = NULL; mpris->base = NULL; mpris->player = NULL; mpris->track_list = NULL; mpris->name_id = 0; mpris->session_bus_conn = NULL; } static void celluloid_mpris_class_init(CelluloidMprisClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS(klass); GParamSpec *pspec = NULL; object_class->constructed = constructed; object_class->set_property = set_property; object_class->get_property = get_property; object_class->dispose = dispose; pspec = g_param_spec_pointer ( "controller", "Controller", "The CelluloidController to use", G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); g_object_class_install_property(object_class, PROP_CONTROLLER, pspec); } GVariant * celluloid_mpris_build_g_variant_string_array(const gchar** list) { GVariantBuilder builder; gint i; g_variant_builder_init(&builder, G_VARIANT_TYPE("as")); for(i = 0; list[i]; i++) { g_variant_builder_add(&builder, "s", list[i]); } return g_variant_new("as", &builder); } CelluloidMpris * celluloid_mpris_new(CelluloidController *controller) { return CELLULOID_MPRIS(g_object_new( celluloid_mpris_get_type(), "controller", controller, NULL )); } celluloid-0.18/src/mpris/celluloid-mpris.h000066400000000000000000000022061356026115400206170ustar00rootroot00000000000000/* * Copyright (c) 2015-2019 gnome-mpv * * This file is part of Celluloid. * * Celluloid 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. * * Celluloid 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 Celluloid. If not, see . */ #ifndef MPRIS_H #define MPRIS_H #include #include #include "celluloid-controller.h" G_BEGIN_DECLS #define CELLULOID_TYPE_MPRIS (celluloid_mpris_get_type ()) G_DECLARE_FINAL_TYPE(CelluloidMpris, celluloid_mpris, CELLULOID, MPRIS, GObject) GVariant * celluloid_mpris_build_g_variant_string_array(const gchar** list); CelluloidMpris * celluloid_mpris_new(CelluloidController *controller); G_END_DECLS #endif celluloid-0.18/zanata.xml000066400000000000000000000005101356026115400154150ustar00rootroot00000000000000 https://translate.zanata.org/ celluloid master gettext po po